From f10bfc1a87bcb2598b65772e7ad3e9d436c92392 Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" Date: Thu, 5 Mar 2026 17:00:51 +0100 Subject: [PATCH 1/6] HDDS-14771. Split server-side load testers from freon --- hadoop-ozone/dist/pom.xml | 5 + .../dist/src/main/license/jar-report.txt | 1 + hadoop-ozone/dist/src/shell/ozone/ozone | 6 + hadoop-ozone/freon/pom.xml | 54 ---- .../freon/AbstractOmBucketReadWriteOps.java | 2 +- .../ozone/freon/BaseFreonGenerator.java | 2 +- .../ozone/freon/DNRPCLoadGenerator.java | 2 +- .../ozone/freon/DatanodeBlockPutter.java | 2 +- .../ozone/freon/DatanodeChunkGenerator.java | 2 +- .../ozone/freon/DatanodeChunkValidator.java | 2 +- .../hadoop/ozone/freon/FollowerReader.java | 2 +- .../ozone/freon/HadoopBaseFreonGenerator.java | 2 +- .../hadoop/ozone/freon/HsyncGenerator.java | 2 +- .../hadoop/ozone/freon/OmBucketGenerator.java | 2 +- .../hadoop/ozone/freon/OmBucketRemover.java | 2 +- .../hadoop/ozone/freon/OmKeyGenerator.java | 2 +- .../ozone/freon/OmMetadataGenerator.java | 2 +- .../ozone/freon/OmRPCLoadGenerator.java | 2 +- .../ozone/freon/OzoneClientCreator.java | 2 +- .../ozone/freon/OzoneClientKeyGenerator.java | 2 +- .../freon/OzoneClientKeyReadWriteListOps.java | 2 +- .../ozone/freon/OzoneClientKeyRemover.java | 2 +- .../ozone/freon/OzoneClientKeyValidator.java | 2 +- .../ozone/freon/RangeKeysGenerator.java | 2 +- .../hadoop/ozone/freon/S3EntityGenerator.java | 2 +- hadoop-ozone/pom.xml | 1 + .../vapor/dev-support/findbugsExcludeFile.xml | 16 ++ hadoop-ozone/vapor/pom.xml | 257 ++++++++++++++++++ .../ozone/freon/BaseAppendLogGenerator.java | 2 +- .../ozone/freon/ChunkManagerDiskWrite.java | 4 +- .../freon/ClosedContainerReplicator.java | 4 +- .../ozone/freon/DatanodeSimulationState.java | 0 .../hadoop/ozone/freon/DatanodeSimulator.java | 6 +- .../FollowerAppendLogEntryGenerator.java | 2 +- .../freon/LeaderAppendLogEntryGenerator.java | 2 +- .../ozone/freon/SCMThroughputBenchmark.java | 4 +- .../ozone/freon/StreamingGenerator.java | 4 +- .../org/apache/hadoop/ozone/freon/Vapor.java | 41 +++ .../hadoop/ozone/freon/VaporSubcommand.java | 23 ++ .../containergenerator/BaseGenerator.java | 3 +- .../containergenerator/GeneratorDatanode.java | 8 +- .../freon/containergenerator/GeneratorOm.java | 4 +- .../containergenerator/GeneratorScm.java | 4 +- .../containergenerator/package-info.java | 0 .../hadoop/ozone/freon/package-info.java | 21 ++ .../TestGeneratorDatanode.java | 0 pom.xml | 5 + 47 files changed, 421 insertions(+), 98 deletions(-) create mode 100644 hadoop-ozone/vapor/dev-support/findbugsExcludeFile.xml create mode 100644 hadoop-ozone/vapor/pom.xml rename hadoop-ozone/{freon => vapor}/src/main/java/org/apache/hadoop/ozone/freon/BaseAppendLogGenerator.java (96%) rename hadoop-ozone/{freon => vapor}/src/main/java/org/apache/hadoop/ozone/freon/ChunkManagerDiskWrite.java (98%) rename hadoop-ozone/{freon => vapor}/src/main/java/org/apache/hadoop/ozone/freon/ClosedContainerReplicator.java (99%) rename hadoop-ozone/{freon => vapor}/src/main/java/org/apache/hadoop/ozone/freon/DatanodeSimulationState.java (100%) rename hadoop-ozone/{freon => vapor}/src/main/java/org/apache/hadoop/ozone/freon/DatanodeSimulator.java (99%) rename hadoop-ozone/{freon => vapor}/src/main/java/org/apache/hadoop/ozone/freon/FollowerAppendLogEntryGenerator.java (99%) rename hadoop-ozone/{freon => vapor}/src/main/java/org/apache/hadoop/ozone/freon/LeaderAppendLogEntryGenerator.java (99%) rename hadoop-ozone/{freon => vapor}/src/main/java/org/apache/hadoop/ozone/freon/SCMThroughputBenchmark.java (99%) rename hadoop-ozone/{freon => vapor}/src/main/java/org/apache/hadoop/ozone/freon/StreamingGenerator.java (98%) create mode 100644 hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/Vapor.java create mode 100644 hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/VaporSubcommand.java rename hadoop-ozone/{freon => vapor}/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/BaseGenerator.java (96%) rename hadoop-ozone/{freon => vapor}/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorDatanode.java (98%) rename hadoop-ozone/{freon => vapor}/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorOm.java (98%) rename hadoop-ozone/{freon => vapor}/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorScm.java (97%) rename hadoop-ozone/{freon => vapor}/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/package-info.java (100%) create mode 100644 hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/package-info.java rename hadoop-ozone/{freon => vapor}/src/test/java/org/apache/hadoop/ozone/freon/containergenerator/TestGeneratorDatanode.java (100%) diff --git a/hadoop-ozone/dist/pom.xml b/hadoop-ozone/dist/pom.xml index c9876ac31469..594a10365bf5 100644 --- a/hadoop-ozone/dist/pom.xml +++ b/hadoop-ozone/dist/pom.xml @@ -143,6 +143,11 @@ ozone-tools runtime + + org.apache.ozone + ozone-vapor + runtime + diff --git a/hadoop-ozone/dist/src/main/license/jar-report.txt b/hadoop-ozone/dist/src/main/license/jar-report.txt index 94827486c8ef..862e779e23c0 100644 --- a/hadoop-ozone/dist/src/main/license/jar-report.txt +++ b/hadoop-ozone/dist/src/main/license/jar-report.txt @@ -233,6 +233,7 @@ share/ozone/lib/ozone-recon.jar share/ozone/lib/ozone-s3-secret-store.jar share/ozone/lib/ozone-s3gateway.jar share/ozone/lib/ozone-tools.jar +share/ozone/lib/ozone-vapor.jar share/ozone/lib/perfmark-api.jar share/ozone/lib/picocli.jar share/ozone/lib/picocli-shell-jline3.jar diff --git a/hadoop-ozone/dist/src/shell/ozone/ozone b/hadoop-ozone/dist/src/shell/ozone/ozone index 4fe37de1d26b..4ff71282496d 100755 --- a/hadoop-ozone/dist/src/shell/ozone/ozone +++ b/hadoop-ozone/dist/src/shell/ozone/ozone @@ -63,6 +63,7 @@ function ozone_usage ozone_add_subcommand "debug" client "Ozone debug tool" ozone_add_subcommand "repair" client "Ozone repair tool" ozone_add_subcommand "ratis" client "Ozone ratis tool" + ozone_add_subcommand "vapor" client "Ozone server simulator" ozone_generate_usage "${OZONE_SHELL_EXECNAME}" false } @@ -235,6 +236,11 @@ function ozonecmd_case OZONE_CLASSNAME=org.apache.hadoop.ozone.shell.OzoneRatis OZONE_RUN_ARTIFACT_NAME="ozone-tools" ;; + vapor) + OZONE_CLASSNAME=org.apache.hadoop.ozone.freon.Vapor + OZONE_FREON_OPTS="${OZONE_FREON_OPTS} ${RATIS_OPTS} ${OZONE_MODULE_ACCESS_ARGS}" + OZONE_RUN_ARTIFACT_NAME="ozone-vapor" + ;; *) OZONE_CLASSNAME="${subcmd}" if ! ozone_validate_classname "${OZONE_CLASSNAME}"; then diff --git a/hadoop-ozone/freon/pom.xml b/hadoop-ozone/freon/pom.xml index 22fa0cfea16f..095ba70e0e46 100644 --- a/hadoop-ozone/freon/pom.xml +++ b/hadoop-ozone/freon/pom.xml @@ -42,10 +42,6 @@ com.fasterxml.jackson.core jackson-annotations - - com.fasterxml.jackson.core - jackson-core - com.fasterxml.jackson.core jackson-databind @@ -54,10 +50,6 @@ com.google.guava guava - - com.google.protobuf - protobuf-java - commons-codec commons-codec @@ -86,18 +78,6 @@ org.apache.hadoop hadoop-common - - org.apache.hadoop - hadoop-hdfs - - - org.apache.httpcomponents - httpclient - - - org.apache.httpcomponents - httpcore - org.apache.ozone hdds-cli-common @@ -114,26 +94,14 @@ org.apache.ozone hdds-config - - org.apache.ozone - hdds-container-service - org.apache.ozone hdds-interface-client - - org.apache.ozone - hdds-interface-server - org.apache.ozone hdds-server-framework - - org.apache.ozone - hdds-server-scm - org.apache.ozone ozone-cli-admin @@ -154,26 +122,10 @@ org.apache.ozone ozone-interface-client - - org.apache.ozone - ozone-interface-storage - - - org.apache.ozone - ozone-manager - - - org.apache.ratis - ratis-client - org.apache.ratis ratis-common - - org.apache.ratis - ratis-proto - org.apache.ratis ratis-thirdparty-misc @@ -201,12 +153,6 @@ test-jar test - - org.apache.ozone - hdds-container-service - test-jar - test - org.apache.ozone hdds-server-framework diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/AbstractOmBucketReadWriteOps.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/AbstractOmBucketReadWriteOps.java index 1e418b14868d..6779de476ba9 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/AbstractOmBucketReadWriteOps.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/AbstractOmBucketReadWriteOps.java @@ -41,7 +41,7 @@ * implementations. */ public abstract class AbstractOmBucketReadWriteOps extends BaseFreonGenerator - implements Callable { + implements Callable, FreonSubcommand { private static final Logger LOG = LoggerFactory.getLogger(AbstractOmBucketReadWriteOps.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/BaseFreonGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/BaseFreonGenerator.java index 9f10ae504b3a..0218cb4dec4b 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/BaseFreonGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/BaseFreonGenerator.java @@ -73,7 +73,7 @@ */ @CommandLine.Command @SuppressWarnings("java:S2245") // no need for secure random -public class BaseFreonGenerator implements FreonSubcommand { +public class BaseFreonGenerator { private static final Logger LOG = LoggerFactory.getLogger(BaseFreonGenerator.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DNRPCLoadGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DNRPCLoadGenerator.java index 2116a903fc3c..62a228e07a57 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DNRPCLoadGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DNRPCLoadGenerator.java @@ -58,7 +58,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class DNRPCLoadGenerator extends BaseFreonGenerator - implements Callable { + implements Callable, FreonSubcommand { private static final Logger LOG = LoggerFactory.getLogger(DNRPCLoadGenerator.class); private static final int RPC_PAYLOAD_MULTIPLICATION_FACTOR = 1024; diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeBlockPutter.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeBlockPutter.java index a5361a46d2c2..cd0527f3cec7 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeBlockPutter.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeBlockPutter.java @@ -58,7 +58,7 @@ @MetaInfServices(FreonSubcommand.class) @SuppressWarnings("java:S2245") // no need for secure random public class DatanodeBlockPutter extends BaseFreonGenerator implements - Callable { + Callable, FreonSubcommand { private static final Logger LOG = LoggerFactory.getLogger(DatanodeBlockPutter.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeChunkGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeChunkGenerator.java index ca9c17519135..795ee336ac50 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeChunkGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeChunkGenerator.java @@ -65,7 +65,7 @@ @MetaInfServices(FreonSubcommand.class) @SuppressWarnings("java:S2245") // no need for secure random public class DatanodeChunkGenerator extends BaseFreonGenerator implements - Callable { + Callable, FreonSubcommand { private static final Logger LOG = LoggerFactory.getLogger(DatanodeChunkGenerator.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeChunkValidator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeChunkValidator.java index b17a6b54fbfd..b6992b62eb55 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeChunkValidator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeChunkValidator.java @@ -51,7 +51,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class DatanodeChunkValidator extends BaseFreonGenerator - implements Callable { + implements Callable, FreonSubcommand { private static final Logger LOG = LoggerFactory.getLogger(DatanodeChunkValidator.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/FollowerReader.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/FollowerReader.java index ee5939e4c5eb..909e56de8506 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/FollowerReader.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/FollowerReader.java @@ -41,7 +41,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class FollowerReader extends BaseFreonGenerator - implements Callable { + implements Callable, FreonSubcommand { private static final Logger LOG = LoggerFactory.getLogger(FollowerReader.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/HadoopBaseFreonGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/HadoopBaseFreonGenerator.java index 8a163a301b1f..cb5883dcbaa1 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/HadoopBaseFreonGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/HadoopBaseFreonGenerator.java @@ -28,7 +28,7 @@ /** * Base class for Freon generator tests that requires {@link FileSystem} instance. */ -public abstract class HadoopBaseFreonGenerator extends BaseFreonGenerator { +public abstract class HadoopBaseFreonGenerator extends BaseFreonGenerator implements FreonSubcommand { @Option(names = {"-r", "--rpath", "--path"}, description = "Hadoop FS file system path. Use full path.", diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/HsyncGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/HsyncGenerator.java index 55bd72617a23..1fb1975a8abd 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/HsyncGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/HsyncGenerator.java @@ -59,7 +59,7 @@ mixinStandardHelpOptions = true, showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) -public class HsyncGenerator extends BaseFreonGenerator implements Callable { +public class HsyncGenerator extends BaseFreonGenerator implements Callable, FreonSubcommand { private static final Logger LOG = LoggerFactory.getLogger(HsyncGenerator.class); @CommandLine.ParentCommand diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketGenerator.java index 7c55483595ef..7a105d1fb76b 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketGenerator.java @@ -40,7 +40,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class OmBucketGenerator extends BaseFreonGenerator - implements Callable { + implements Callable, FreonSubcommand { @Option(names = {"-v", "--volume"}, description = "Name of the volume which contains the test data. Will be" diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketRemover.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketRemover.java index d60e56706914..1d0eb092b154 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketRemover.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketRemover.java @@ -37,7 +37,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class OmBucketRemover extends BaseFreonGenerator - implements Callable { + implements Callable, FreonSubcommand { @Option(names = {"-v", "--volume"}, description = "Name of the volume which contains the test data. Will be" diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmKeyGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmKeyGenerator.java index 8f1e214235ce..61f4e4412dda 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmKeyGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmKeyGenerator.java @@ -48,7 +48,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class OmKeyGenerator extends BaseFreonGenerator - implements Callable { + implements Callable, FreonSubcommand { @Option(names = {"-v", "--volume"}, description = "Name of the volume which contains the test data. Will be" diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmMetadataGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmMetadataGenerator.java index 852ed68930f1..9370faff021b 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmMetadataGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmMetadataGenerator.java @@ -71,7 +71,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class OmMetadataGenerator extends BaseFreonGenerator - implements Callable { + implements Callable, FreonSubcommand { @Option(names = {"-v", "--volume"}, description = "Name of the volume which contains the test data. Will be" diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmRPCLoadGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmRPCLoadGenerator.java index 51aac5a2d2d8..97a6289dcf83 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmRPCLoadGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmRPCLoadGenerator.java @@ -42,7 +42,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class OmRPCLoadGenerator extends BaseFreonGenerator - implements Callable { + implements Callable, FreonSubcommand { private Timer timer; private OzoneManagerProtocolClientSideTranslatorPB[] clients; diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientCreator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientCreator.java index d238f5240e49..a7359a6a12f5 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientCreator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientCreator.java @@ -34,7 +34,7 @@ mixinStandardHelpOptions = true, showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) -public class OzoneClientCreator extends BaseFreonGenerator implements Callable { +public class OzoneClientCreator extends BaseFreonGenerator implements Callable, FreonSubcommand { @CommandLine.Option(names = "--om-service-id", description = "OM Service ID" diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyGenerator.java index 15f7c11a63c6..a9dde54da791 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyGenerator.java @@ -47,7 +47,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class OzoneClientKeyGenerator extends BaseFreonGenerator - implements Callable { + implements Callable, FreonSubcommand { @Option(names = {"-v", "--volume"}, description = "Name of the volume which contains the test data. Will be" diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyReadWriteListOps.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyReadWriteListOps.java index a41252e848a0..63ea10b54aba 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyReadWriteListOps.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyReadWriteListOps.java @@ -51,7 +51,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class OzoneClientKeyReadWriteListOps extends BaseFreonGenerator - implements Callable { + implements Callable, FreonSubcommand { @CommandLine.Option(names = {"-v", "--volume"}, description = "Name of the volume which contains the test data. " + diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyRemover.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyRemover.java index 51274ae1e688..9dff8d52e5bc 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyRemover.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyRemover.java @@ -38,7 +38,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class OzoneClientKeyRemover extends BaseFreonGenerator - implements Callable { + implements Callable, FreonSubcommand { @Option(names = {"-v", "--volume"}, description = "Name of the volume which contains the test data. Will be" diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyValidator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyValidator.java index 8b9887af12d7..16176f659075 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyValidator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyValidator.java @@ -44,7 +44,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class OzoneClientKeyValidator extends BaseFreonGenerator - implements Callable { + implements Callable, FreonSubcommand { private static final Logger LOG = LoggerFactory.getLogger(OzoneClientKeyValidator.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/RangeKeysGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/RangeKeysGenerator.java index a2f91b70467e..48d7914b989c 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/RangeKeysGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/RangeKeysGenerator.java @@ -45,7 +45,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class RangeKeysGenerator extends BaseFreonGenerator - implements Callable { + implements Callable, FreonSubcommand { private static final Logger LOG = LoggerFactory.getLogger(RangeKeysGenerator.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/S3EntityGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/S3EntityGenerator.java index 6e2e728a81e9..58a2a0744bc3 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/S3EntityGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/S3EntityGenerator.java @@ -27,7 +27,7 @@ /** * Initiliazing common aspects of S3BucketGenerator and S3KeyGenerator. */ -public class S3EntityGenerator extends BaseFreonGenerator { +public class S3EntityGenerator extends BaseFreonGenerator implements FreonSubcommand { @CommandLine.Option(names = {"-e", "--endpoint"}, description = "S3 HTTP endpoint", defaultValue = "http://localhost:9878") diff --git a/hadoop-ozone/pom.xml b/hadoop-ozone/pom.xml index 417f05064efd..e0ab05564416 100644 --- a/hadoop-ozone/pom.xml +++ b/hadoop-ozone/pom.xml @@ -53,6 +53,7 @@ s3-secret-store s3gateway tools + vapor diff --git a/hadoop-ozone/vapor/dev-support/findbugsExcludeFile.xml b/hadoop-ozone/vapor/dev-support/findbugsExcludeFile.xml new file mode 100644 index 000000000000..ee5ed59808bf --- /dev/null +++ b/hadoop-ozone/vapor/dev-support/findbugsExcludeFile.xml @@ -0,0 +1,16 @@ + + + + diff --git a/hadoop-ozone/vapor/pom.xml b/hadoop-ozone/vapor/pom.xml new file mode 100644 index 000000000000..e566bbcc3111 --- /dev/null +++ b/hadoop-ozone/vapor/pom.xml @@ -0,0 +1,257 @@ + + + + 4.0.0 + + org.apache.ozone + ozone + 2.2.0-SNAPSHOT + + ozone-vapor + 2.2.0-SNAPSHOT + jar + Apache Ozone Vapor + Apache Ozone server-side load testing tools + + + false + + + + + com.fasterxml.jackson.core + jackson-core + + + com.fasterxml.jackson.core + jackson-databind + + + com.google.guava + guava + + + com.google.protobuf + protobuf-java + + + commons-io + commons-io + + + info.picocli + picocli + + + io.dropwizard.metrics + metrics-core + + + org.apache.commons + commons-lang3 + + + org.apache.hadoop + hadoop-common + + + org.apache.hadoop + hadoop-hdfs + + + org.apache.httpcomponents + httpclient + + + org.apache.httpcomponents + httpcore + + + org.apache.ozone + hdds-cli-common + + + org.apache.ozone + hdds-client + + + org.apache.ozone + hdds-common + + + org.apache.ozone + hdds-config + + + org.apache.ozone + hdds-container-service + + + org.apache.ozone + hdds-interface-client + + + org.apache.ozone + hdds-interface-server + + + org.apache.ozone + hdds-server-framework + + + org.apache.ozone + hdds-server-scm + + + org.apache.ozone + ozone-cli-admin + + + org.apache.ozone + ozone-common + + + org.apache.ozone + ozone-freon + + + org.apache.ozone + ozone-interface-storage + + + org.apache.ozone + ozone-manager + + + org.apache.ratis + ratis-client + + + org.apache.ratis + ratis-common + + + org.apache.ratis + ratis-proto + + + org.apache.ratis + ratis-thirdparty-misc + + + org.slf4j + slf4j-api + + + + org.kohsuke.metainf-services + metainf-services + provided + + + org.slf4j + slf4j-reload4j + runtime + + + + + org.apache.ozone + hdds-common + test-jar + test + + + org.apache.ozone + hdds-container-service + test-jar + test + + + org.apache.ozone + hdds-server-framework + test-jar + test + + + org.apache.ozone + hdds-test-utils + test + + + + + + com.github.spotbugs + spotbugs-maven-plugin + + ${basedir}/dev-support/findbugsExcludeFile.xml + true + 2048 + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + org.kohsuke.metainf-services + metainf-services + ${metainf-services.version} + + + info.picocli + picocli-codegen + ${picocli.version} + + + + org.kohsuke.metainf_services.AnnotationProcessorImpl + picocli.codegen.aot.graalvm.processor.NativeImageConfigGeneratorProcessor + + + -Aproject=${project.groupId}/${project.artifactId} + + + + + org.apache.maven.plugins + maven-enforcer-plugin + + + ban-annotations + + + + + Only selected annotation processors are enabled, see configuration of maven-compiler-plugin. + + org.apache.hadoop.hdds.conf.Config + org.apache.hadoop.hdds.conf.ConfigGroup + org.apache.hadoop.hdds.scm.metadata.Replicate + org.apache.hadoop.ozone.om.request.validation.OMClientVersionValidator + org.apache.hadoop.ozone.om.request.validation.OMLayoutVersionValidator + org.apache.hadoop.ozone.om.request.validation.RequestFeatureValidator + + + + + + + + + + diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/BaseAppendLogGenerator.java b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/BaseAppendLogGenerator.java similarity index 96% rename from hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/BaseAppendLogGenerator.java rename to hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/BaseAppendLogGenerator.java index d68a079de437..6fe07ad70714 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/BaseAppendLogGenerator.java +++ b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/BaseAppendLogGenerator.java @@ -30,7 +30,7 @@ /** * Generic utility for leader/follower specific isolated tests. */ -public class BaseAppendLogGenerator extends BaseFreonGenerator { +public class BaseAppendLogGenerator extends BaseFreonGenerator implements VaporSubcommand { @SuppressWarnings("checkstyle:VisibilityModifier") @Option(names = {"-r", "--raft-peer"}, diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/ChunkManagerDiskWrite.java b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/ChunkManagerDiskWrite.java similarity index 98% rename from hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/ChunkManagerDiskWrite.java rename to hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/ChunkManagerDiskWrite.java index a240698c3eef..b7ca060419da 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/ChunkManagerDiskWrite.java +++ b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/ChunkManagerDiskWrite.java @@ -60,10 +60,10 @@ versionProvider = HddsVersionProvider.class, mixinStandardHelpOptions = true, showDefaultValues = true) -@MetaInfServices(FreonSubcommand.class) +@MetaInfServices(VaporSubcommand.class) @SuppressWarnings("java:S2245") // no need for secure random public class ChunkManagerDiskWrite extends BaseFreonGenerator implements - Callable { + Callable, VaporSubcommand { private static final Logger LOG = LoggerFactory.getLogger(ChunkManagerDiskWrite.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/ClosedContainerReplicator.java b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/ClosedContainerReplicator.java similarity index 99% rename from hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/ClosedContainerReplicator.java rename to hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/ClosedContainerReplicator.java index 3ad35ecc5a2b..6e1be57d4201 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/ClosedContainerReplicator.java +++ b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/ClosedContainerReplicator.java @@ -80,9 +80,9 @@ versionProvider = HddsVersionProvider.class, mixinStandardHelpOptions = true, showDefaultValues = true) -@MetaInfServices(FreonSubcommand.class) +@MetaInfServices(VaporSubcommand.class) public class ClosedContainerReplicator extends BaseFreonGenerator implements - Callable { + Callable, VaporSubcommand { @Option(names = {"--datanode"}, description = "Replicate only containers on this specific datanode.", diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeSimulationState.java b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/DatanodeSimulationState.java similarity index 100% rename from hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeSimulationState.java rename to hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/DatanodeSimulationState.java diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeSimulator.java b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/DatanodeSimulator.java similarity index 99% rename from hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeSimulator.java rename to hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/DatanodeSimulator.java index cb3769e7fd2d..c4e3d9a5c7dc 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeSimulator.java +++ b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/DatanodeSimulator.java @@ -100,7 +100,7 @@ * datanodes and exabytes of container data. *

* Usage: - * ozone freon simulate-datanode -t 20 -n 5000 -c 40000 + * ozone vapor simulate-datanode -t 20 -n 5000 -c 40000 * -t: number of threads to run datanodes heartbeat. * -n: number of data node to simulate. * -c: number containers to simulate per datanode. @@ -119,8 +119,8 @@ versionProvider = HddsVersionProvider.class, mixinStandardHelpOptions = true, showDefaultValues = true) -@MetaInfServices(FreonSubcommand.class) -public class DatanodeSimulator implements Callable, FreonSubcommand { +@MetaInfServices(VaporSubcommand.class) +public class DatanodeSimulator implements Callable, VaporSubcommand { private static final Logger LOGGER = LoggerFactory.getLogger( DatanodeSimulator.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/FollowerAppendLogEntryGenerator.java b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/FollowerAppendLogEntryGenerator.java similarity index 99% rename from hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/FollowerAppendLogEntryGenerator.java rename to hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/FollowerAppendLogEntryGenerator.java index 33b088d65199..00489af7b1bc 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/FollowerAppendLogEntryGenerator.java +++ b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/FollowerAppendLogEntryGenerator.java @@ -88,7 +88,7 @@ versionProvider = HddsVersionProvider.class, mixinStandardHelpOptions = true, showDefaultValues = true) -@MetaInfServices(FreonSubcommand.class) +@MetaInfServices(VaporSubcommand.class) @SuppressWarnings("java:S2245") // no need for secure random public class FollowerAppendLogEntryGenerator extends BaseAppendLogGenerator implements Callable, StreamObserver { diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/LeaderAppendLogEntryGenerator.java b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/LeaderAppendLogEntryGenerator.java similarity index 99% rename from hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/LeaderAppendLogEntryGenerator.java rename to hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/LeaderAppendLogEntryGenerator.java index 37b6af06bf71..60b4b84a118e 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/LeaderAppendLogEntryGenerator.java +++ b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/LeaderAppendLogEntryGenerator.java @@ -82,7 +82,7 @@ versionProvider = HddsVersionProvider.class, mixinStandardHelpOptions = true, showDefaultValues = true) -@MetaInfServices(FreonSubcommand.class) +@MetaInfServices(VaporSubcommand.class) @SuppressWarnings("java:S2245") // no need for secure random public class LeaderAppendLogEntryGenerator extends BaseAppendLogGenerator implements diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/SCMThroughputBenchmark.java b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/SCMThroughputBenchmark.java similarity index 99% rename from hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/SCMThroughputBenchmark.java rename to hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/SCMThroughputBenchmark.java index 41744ffd7ea3..e575576428b3 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/SCMThroughputBenchmark.java +++ b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/SCMThroughputBenchmark.java @@ -109,9 +109,9 @@ versionProvider = HddsVersionProvider.class, mixinStandardHelpOptions = true, showDefaultValues = true) -@MetaInfServices(FreonSubcommand.class) +@MetaInfServices(VaporSubcommand.class) @SuppressWarnings("java:S2245") // no need for secure random -public final class SCMThroughputBenchmark implements Callable, FreonSubcommand { +public final class SCMThroughputBenchmark implements Callable, VaporSubcommand { private static final Logger LOG = LoggerFactory.getLogger(SCMThroughputBenchmark.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/StreamingGenerator.java b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/StreamingGenerator.java similarity index 98% rename from hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/StreamingGenerator.java rename to hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/StreamingGenerator.java index 52456bf6c2d7..0ba76afd1a69 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/StreamingGenerator.java +++ b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/StreamingGenerator.java @@ -45,9 +45,9 @@ versionProvider = HddsVersionProvider.class, mixinStandardHelpOptions = true, showDefaultValues = true) -@MetaInfServices(FreonSubcommand.class) +@MetaInfServices(VaporSubcommand.class) public class StreamingGenerator extends BaseFreonGenerator - implements Callable { + implements Callable, VaporSubcommand { private static final Logger LOG = LoggerFactory.getLogger(StreamingGenerator.class); diff --git a/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/Vapor.java b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/Vapor.java new file mode 100644 index 000000000000..09bb8ca5b0ae --- /dev/null +++ b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/Vapor.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.ozone.freon; + +import org.apache.hadoop.hdds.cli.HddsVersionProvider; +import picocli.CommandLine.Command; + +/** + * Ozone data generator and performance test tool. + */ +@Command( + name = "ozone vapor", + description = "Load generator using Ozone server components", + versionProvider = HddsVersionProvider.class, + mixinStandardHelpOptions = true) +public class Vapor extends Freon { + + @Override + public Class subcommandType() { + return VaporSubcommand.class; + } + + public static void main(String[] args) { + new Vapor().run(args); + } +} diff --git a/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/VaporSubcommand.java b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/VaporSubcommand.java new file mode 100644 index 000000000000..7aebd5b30fcd --- /dev/null +++ b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/VaporSubcommand.java @@ -0,0 +1,23 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.ozone.freon; + +/** Marker interface for subcommands to be registered for {@code ozone vapor}. */ +public interface VaporSubcommand { + // marker +} diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/BaseGenerator.java b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/BaseGenerator.java similarity index 96% rename from hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/BaseGenerator.java rename to hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/BaseGenerator.java index 731276b548ac..21cb0f854523 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/BaseGenerator.java +++ b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/BaseGenerator.java @@ -22,13 +22,14 @@ import org.apache.hadoop.hdds.conf.StorageUnit; import org.apache.hadoop.hdds.scm.ScmConfigKeys; import org.apache.hadoop.ozone.freon.BaseFreonGenerator; +import org.apache.hadoop.ozone.freon.VaporSubcommand; import picocli.CommandLine.Option; /** * Common options of data generators for fast scale test. */ public abstract class BaseGenerator extends BaseFreonGenerator implements - Callable { + Callable, VaporSubcommand { @Option(names = {"-u", "--user"}, description = "Owner of the files", diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorDatanode.java b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorDatanode.java similarity index 98% rename from hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorDatanode.java rename to hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorDatanode.java index ef5d289b2205..86e19ddddc79 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorDatanode.java +++ b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorDatanode.java @@ -61,7 +61,7 @@ import org.apache.hadoop.ozone.container.keyvalue.impl.BlockManagerImpl; import org.apache.hadoop.ozone.container.keyvalue.impl.ChunkManagerFactory; import org.apache.hadoop.ozone.container.keyvalue.interfaces.ChunkManager; -import org.apache.hadoop.ozone.freon.FreonSubcommand; +import org.apache.hadoop.ozone.freon.VaporSubcommand; import org.kohsuke.MetaInfServices; import picocli.CommandLine.Command; import picocli.CommandLine.Option; @@ -74,13 +74,13 @@ optionListHeading = "\nExecute this command with different parameters for each datanodes. " + "For example if you have 10 datanodes, use " - + "'ozone freon cgdn --index=1 --datanodes=10', 'ozone freon" - + " cgdn --index=2 --datanodes=10', 'ozone freon cgdn " + + "'ozone vapor cgdn --index=1 --datanodes=10', 'ozone vapor" + + " cgdn --index=2 --datanodes=10', 'ozone vapor cgdn " + "--index=3 --datanodes=10', ...\n\n", versionProvider = HddsVersionProvider.class, mixinStandardHelpOptions = true, showDefaultValues = true) -@MetaInfServices(FreonSubcommand.class) +@MetaInfServices(VaporSubcommand.class) @SuppressWarnings("java:S2245") // no need for secure random public class GeneratorDatanode extends BaseGenerator { diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorOm.java b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorOm.java similarity index 98% rename from hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorOm.java rename to hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorOm.java index 05b498abb2fe..fb6012364755 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorOm.java +++ b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorOm.java @@ -37,7 +37,7 @@ import org.apache.hadoop.hdds.utils.db.DBStoreBuilder; import org.apache.hadoop.hdds.utils.db.Table; import org.apache.hadoop.ozone.OzoneAcl; -import org.apache.hadoop.ozone.freon.FreonSubcommand; +import org.apache.hadoop.ozone.freon.VaporSubcommand; import org.apache.hadoop.ozone.om.OMStorage; import org.apache.hadoop.ozone.om.codec.OMDBDefinition; import org.apache.hadoop.ozone.om.helpers.OmBucketInfo; @@ -61,7 +61,7 @@ versionProvider = HddsVersionProvider.class, mixinStandardHelpOptions = true, showDefaultValues = true) -@MetaInfServices(FreonSubcommand.class) +@MetaInfServices(VaporSubcommand.class) public class GeneratorOm extends BaseGenerator implements Callable { diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorScm.java b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorScm.java similarity index 97% rename from hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorScm.java rename to hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorScm.java index 9de7a6e21dda..0d9fba041fe4 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorScm.java +++ b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorScm.java @@ -32,7 +32,7 @@ import org.apache.hadoop.hdds.utils.db.DBStore; import org.apache.hadoop.hdds.utils.db.DBStoreBuilder; import org.apache.hadoop.hdds.utils.db.Table; -import org.apache.hadoop.ozone.freon.FreonSubcommand; +import org.apache.hadoop.ozone.freon.VaporSubcommand; import org.kohsuke.MetaInfServices; import picocli.CommandLine.Command; @@ -45,7 +45,7 @@ versionProvider = HddsVersionProvider.class, mixinStandardHelpOptions = true, showDefaultValues = true) -@MetaInfServices(FreonSubcommand.class) +@MetaInfServices(VaporSubcommand.class) public class GeneratorScm extends BaseGenerator { private Table containerStore; diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/package-info.java b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/package-info.java similarity index 100% rename from hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/package-info.java rename to hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/package-info.java diff --git a/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/package-info.java b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/package-info.java new file mode 100644 index 000000000000..82f7a208a4f4 --- /dev/null +++ b/hadoop-ozone/vapor/src/main/java/org/apache/hadoop/ozone/freon/package-info.java @@ -0,0 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This package contains class used for testing and benchmarking ozone cluster. + */ +package org.apache.hadoop.ozone.freon; diff --git a/hadoop-ozone/freon/src/test/java/org/apache/hadoop/ozone/freon/containergenerator/TestGeneratorDatanode.java b/hadoop-ozone/vapor/src/test/java/org/apache/hadoop/ozone/freon/containergenerator/TestGeneratorDatanode.java similarity index 100% rename from hadoop-ozone/freon/src/test/java/org/apache/hadoop/ozone/freon/containergenerator/TestGeneratorDatanode.java rename to hadoop-ozone/vapor/src/test/java/org/apache/hadoop/ozone/freon/containergenerator/TestGeneratorDatanode.java diff --git a/pom.xml b/pom.xml index 02afd292ecee..7dfe565833bc 100644 --- a/pom.xml +++ b/pom.xml @@ -1306,6 +1306,11 @@ ozone-tools ${ozone.version} + + org.apache.ozone + ozone-vapor + ${ozone.version} + org.apache.ozone rocksdb-checkpoint-differ From d811c4f9901b88a5be3916dcaa99eaa57340af45 Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" Date: Fri, 6 Mar 2026 09:33:10 +0100 Subject: [PATCH 2/6] remove unused test dependencies --- hadoop-ozone/freon/pom.xml | 19 ------------------- hadoop-ozone/vapor/pom.xml | 25 ------------------------- 2 files changed, 44 deletions(-) diff --git a/hadoop-ozone/freon/pom.xml b/hadoop-ozone/freon/pom.xml index 095ba70e0e46..a4dca0ab8d66 100644 --- a/hadoop-ozone/freon/pom.xml +++ b/hadoop-ozone/freon/pom.xml @@ -145,25 +145,6 @@ slf4j-reload4j runtime - - - - org.apache.ozone - hdds-common - test-jar - test - - - org.apache.ozone - hdds-server-framework - test-jar - test - - - org.apache.ozone - hdds-test-utils - test - diff --git a/hadoop-ozone/vapor/pom.xml b/hadoop-ozone/vapor/pom.xml index e566bbcc3111..422333a1ba75 100644 --- a/hadoop-ozone/vapor/pom.xml +++ b/hadoop-ozone/vapor/pom.xml @@ -165,31 +165,6 @@ slf4j-reload4j runtime - - - - org.apache.ozone - hdds-common - test-jar - test - - - org.apache.ozone - hdds-container-service - test-jar - test - - - org.apache.ozone - hdds-server-framework - test-jar - test - - - org.apache.ozone - hdds-test-utils - test - From 58198d8d0a213195490087765f9753dd579d7e91 Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" Date: Fri, 6 Mar 2026 10:04:44 +0100 Subject: [PATCH 3/6] keep BaseFreonGenerator implements FreonSubcommand --- .../apache/hadoop/ozone/freon/AbstractOmBucketReadWriteOps.java | 2 +- .../java/org/apache/hadoop/ozone/freon/BaseFreonGenerator.java | 2 +- .../java/org/apache/hadoop/ozone/freon/DNRPCLoadGenerator.java | 2 +- .../java/org/apache/hadoop/ozone/freon/DatanodeBlockPutter.java | 2 +- .../org/apache/hadoop/ozone/freon/DatanodeChunkGenerator.java | 2 +- .../org/apache/hadoop/ozone/freon/DatanodeChunkValidator.java | 2 +- .../main/java/org/apache/hadoop/ozone/freon/FollowerReader.java | 2 +- .../org/apache/hadoop/ozone/freon/HadoopBaseFreonGenerator.java | 2 +- .../main/java/org/apache/hadoop/ozone/freon/HsyncGenerator.java | 2 +- .../java/org/apache/hadoop/ozone/freon/OmBucketGenerator.java | 2 +- .../java/org/apache/hadoop/ozone/freon/OmBucketRemover.java | 2 +- .../main/java/org/apache/hadoop/ozone/freon/OmKeyGenerator.java | 2 +- .../java/org/apache/hadoop/ozone/freon/OmMetadataGenerator.java | 2 +- .../java/org/apache/hadoop/ozone/freon/OmRPCLoadGenerator.java | 2 +- .../java/org/apache/hadoop/ozone/freon/OzoneClientCreator.java | 2 +- .../org/apache/hadoop/ozone/freon/OzoneClientKeyGenerator.java | 2 +- .../hadoop/ozone/freon/OzoneClientKeyReadWriteListOps.java | 2 +- .../org/apache/hadoop/ozone/freon/OzoneClientKeyRemover.java | 2 +- .../org/apache/hadoop/ozone/freon/OzoneClientKeyValidator.java | 2 +- .../java/org/apache/hadoop/ozone/freon/RangeKeysGenerator.java | 2 +- .../java/org/apache/hadoop/ozone/freon/S3EntityGenerator.java | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/AbstractOmBucketReadWriteOps.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/AbstractOmBucketReadWriteOps.java index 6779de476ba9..1e418b14868d 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/AbstractOmBucketReadWriteOps.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/AbstractOmBucketReadWriteOps.java @@ -41,7 +41,7 @@ * implementations. */ public abstract class AbstractOmBucketReadWriteOps extends BaseFreonGenerator - implements Callable, FreonSubcommand { + implements Callable { private static final Logger LOG = LoggerFactory.getLogger(AbstractOmBucketReadWriteOps.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/BaseFreonGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/BaseFreonGenerator.java index 0218cb4dec4b..9f10ae504b3a 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/BaseFreonGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/BaseFreonGenerator.java @@ -73,7 +73,7 @@ */ @CommandLine.Command @SuppressWarnings("java:S2245") // no need for secure random -public class BaseFreonGenerator { +public class BaseFreonGenerator implements FreonSubcommand { private static final Logger LOG = LoggerFactory.getLogger(BaseFreonGenerator.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DNRPCLoadGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DNRPCLoadGenerator.java index 62a228e07a57..2116a903fc3c 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DNRPCLoadGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DNRPCLoadGenerator.java @@ -58,7 +58,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class DNRPCLoadGenerator extends BaseFreonGenerator - implements Callable, FreonSubcommand { + implements Callable { private static final Logger LOG = LoggerFactory.getLogger(DNRPCLoadGenerator.class); private static final int RPC_PAYLOAD_MULTIPLICATION_FACTOR = 1024; diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeBlockPutter.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeBlockPutter.java index cd0527f3cec7..a5361a46d2c2 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeBlockPutter.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeBlockPutter.java @@ -58,7 +58,7 @@ @MetaInfServices(FreonSubcommand.class) @SuppressWarnings("java:S2245") // no need for secure random public class DatanodeBlockPutter extends BaseFreonGenerator implements - Callable, FreonSubcommand { + Callable { private static final Logger LOG = LoggerFactory.getLogger(DatanodeBlockPutter.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeChunkGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeChunkGenerator.java index 795ee336ac50..ca9c17519135 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeChunkGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeChunkGenerator.java @@ -65,7 +65,7 @@ @MetaInfServices(FreonSubcommand.class) @SuppressWarnings("java:S2245") // no need for secure random public class DatanodeChunkGenerator extends BaseFreonGenerator implements - Callable, FreonSubcommand { + Callable { private static final Logger LOG = LoggerFactory.getLogger(DatanodeChunkGenerator.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeChunkValidator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeChunkValidator.java index b6992b62eb55..b17a6b54fbfd 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeChunkValidator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeChunkValidator.java @@ -51,7 +51,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class DatanodeChunkValidator extends BaseFreonGenerator - implements Callable, FreonSubcommand { + implements Callable { private static final Logger LOG = LoggerFactory.getLogger(DatanodeChunkValidator.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/FollowerReader.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/FollowerReader.java index 909e56de8506..ee5939e4c5eb 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/FollowerReader.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/FollowerReader.java @@ -41,7 +41,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class FollowerReader extends BaseFreonGenerator - implements Callable, FreonSubcommand { + implements Callable { private static final Logger LOG = LoggerFactory.getLogger(FollowerReader.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/HadoopBaseFreonGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/HadoopBaseFreonGenerator.java index cb5883dcbaa1..8a163a301b1f 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/HadoopBaseFreonGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/HadoopBaseFreonGenerator.java @@ -28,7 +28,7 @@ /** * Base class for Freon generator tests that requires {@link FileSystem} instance. */ -public abstract class HadoopBaseFreonGenerator extends BaseFreonGenerator implements FreonSubcommand { +public abstract class HadoopBaseFreonGenerator extends BaseFreonGenerator { @Option(names = {"-r", "--rpath", "--path"}, description = "Hadoop FS file system path. Use full path.", diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/HsyncGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/HsyncGenerator.java index 1fb1975a8abd..55bd72617a23 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/HsyncGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/HsyncGenerator.java @@ -59,7 +59,7 @@ mixinStandardHelpOptions = true, showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) -public class HsyncGenerator extends BaseFreonGenerator implements Callable, FreonSubcommand { +public class HsyncGenerator extends BaseFreonGenerator implements Callable { private static final Logger LOG = LoggerFactory.getLogger(HsyncGenerator.class); @CommandLine.ParentCommand diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketGenerator.java index 7a105d1fb76b..7c55483595ef 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketGenerator.java @@ -40,7 +40,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class OmBucketGenerator extends BaseFreonGenerator - implements Callable, FreonSubcommand { + implements Callable { @Option(names = {"-v", "--volume"}, description = "Name of the volume which contains the test data. Will be" diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketRemover.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketRemover.java index 1d0eb092b154..d60e56706914 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketRemover.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketRemover.java @@ -37,7 +37,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class OmBucketRemover extends BaseFreonGenerator - implements Callable, FreonSubcommand { + implements Callable { @Option(names = {"-v", "--volume"}, description = "Name of the volume which contains the test data. Will be" diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmKeyGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmKeyGenerator.java index 61f4e4412dda..8f1e214235ce 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmKeyGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmKeyGenerator.java @@ -48,7 +48,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class OmKeyGenerator extends BaseFreonGenerator - implements Callable, FreonSubcommand { + implements Callable { @Option(names = {"-v", "--volume"}, description = "Name of the volume which contains the test data. Will be" diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmMetadataGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmMetadataGenerator.java index 9370faff021b..852ed68930f1 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmMetadataGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmMetadataGenerator.java @@ -71,7 +71,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class OmMetadataGenerator extends BaseFreonGenerator - implements Callable, FreonSubcommand { + implements Callable { @Option(names = {"-v", "--volume"}, description = "Name of the volume which contains the test data. Will be" diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmRPCLoadGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmRPCLoadGenerator.java index 97a6289dcf83..51aac5a2d2d8 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmRPCLoadGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmRPCLoadGenerator.java @@ -42,7 +42,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class OmRPCLoadGenerator extends BaseFreonGenerator - implements Callable, FreonSubcommand { + implements Callable { private Timer timer; private OzoneManagerProtocolClientSideTranslatorPB[] clients; diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientCreator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientCreator.java index a7359a6a12f5..d238f5240e49 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientCreator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientCreator.java @@ -34,7 +34,7 @@ mixinStandardHelpOptions = true, showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) -public class OzoneClientCreator extends BaseFreonGenerator implements Callable, FreonSubcommand { +public class OzoneClientCreator extends BaseFreonGenerator implements Callable { @CommandLine.Option(names = "--om-service-id", description = "OM Service ID" diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyGenerator.java index a9dde54da791..15f7c11a63c6 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyGenerator.java @@ -47,7 +47,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class OzoneClientKeyGenerator extends BaseFreonGenerator - implements Callable, FreonSubcommand { + implements Callable { @Option(names = {"-v", "--volume"}, description = "Name of the volume which contains the test data. Will be" diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyReadWriteListOps.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyReadWriteListOps.java index 63ea10b54aba..a41252e848a0 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyReadWriteListOps.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyReadWriteListOps.java @@ -51,7 +51,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class OzoneClientKeyReadWriteListOps extends BaseFreonGenerator - implements Callable, FreonSubcommand { + implements Callable { @CommandLine.Option(names = {"-v", "--volume"}, description = "Name of the volume which contains the test data. " + diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyRemover.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyRemover.java index 9dff8d52e5bc..51274ae1e688 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyRemover.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyRemover.java @@ -38,7 +38,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class OzoneClientKeyRemover extends BaseFreonGenerator - implements Callable, FreonSubcommand { + implements Callable { @Option(names = {"-v", "--volume"}, description = "Name of the volume which contains the test data. Will be" diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyValidator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyValidator.java index 16176f659075..8b9887af12d7 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyValidator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OzoneClientKeyValidator.java @@ -44,7 +44,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class OzoneClientKeyValidator extends BaseFreonGenerator - implements Callable, FreonSubcommand { + implements Callable { private static final Logger LOG = LoggerFactory.getLogger(OzoneClientKeyValidator.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/RangeKeysGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/RangeKeysGenerator.java index 48d7914b989c..a2f91b70467e 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/RangeKeysGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/RangeKeysGenerator.java @@ -45,7 +45,7 @@ showDefaultValues = true) @MetaInfServices(FreonSubcommand.class) public class RangeKeysGenerator extends BaseFreonGenerator - implements Callable, FreonSubcommand { + implements Callable { private static final Logger LOG = LoggerFactory.getLogger(RangeKeysGenerator.class); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/S3EntityGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/S3EntityGenerator.java index 58a2a0744bc3..6e2e728a81e9 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/S3EntityGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/S3EntityGenerator.java @@ -27,7 +27,7 @@ /** * Initiliazing common aspects of S3BucketGenerator and S3KeyGenerator. */ -public class S3EntityGenerator extends BaseFreonGenerator implements FreonSubcommand { +public class S3EntityGenerator extends BaseFreonGenerator { @CommandLine.Option(names = {"-e", "--endpoint"}, description = "S3 HTTP endpoint", defaultValue = "http://localhost:9878") From fce94c3c5ab2921c5bdb863cc7c2300d3bc0896d Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" Date: Sun, 8 Mar 2026 09:24:20 +0100 Subject: [PATCH 4/6] command backwards compatibility --- hadoop-ozone/dist/src/shell/ozone/ozone | 5 ++++ .../dist/src/shell/ozone/ozone-functions.sh | 26 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/hadoop-ozone/dist/src/shell/ozone/ozone b/hadoop-ozone/dist/src/shell/ozone/ozone index 4ff71282496d..e2eb3ea8140d 100755 --- a/hadoop-ozone/dist/src/shell/ozone/ozone +++ b/hadoop-ozone/dist/src/shell/ozone/ozone @@ -130,6 +130,11 @@ function ozonecmd_case OZONE_CLASSNAME=org.apache.hadoop.ozone.freon.Freon OZONE_FREON_OPTS="${OZONE_FREON_OPTS} ${RATIS_OPTS} ${OZONE_MODULE_ACCESS_ARGS}" OZONE_RUN_ARTIFACT_NAME="ozone-freon" + if ozone_is_freon_command_moved_to_vapor; then + # backward compatibility + OZONE_CLASSNAME=org.apache.hadoop.ozone.freon.Vapor + OZONE_RUN_ARTIFACT_NAME="ozone-vapor" + fi ;; getconf) OZONE_CLASSNAME=org.apache.hadoop.ozone.conf.OzoneGetConf; diff --git a/hadoop-ozone/dist/src/shell/ozone/ozone-functions.sh b/hadoop-ozone/dist/src/shell/ozone/ozone-functions.sh index bee4225070cc..b92ef0fd5ae3 100755 --- a/hadoop-ozone/dist/src/shell/ozone/ozone-functions.sh +++ b/hadoop-ozone/dist/src/shell/ozone/ozone-functions.sh @@ -2940,3 +2940,29 @@ function ozone_set_deprecated_hadoop_vars ozone_set_deprecated_var "HADOOP_${suffix}" "OZONE_${suffix}" done } + +## @description Check if command is one that was moved from freon to vapor +function ozone_is_freon_command_moved_to_vapor +{ + local opt subcommand + + for opt in "${OZONE_SUBCMD_ARGS[@]}"; do + for subcommand in \ + cgdn \ + cgom \ + cgscm \ + cmdw chunk-manager-disk-write \ + cr container-replicator \ + falg follower-append-log-generator \ + lalg leader-append-log-generator \ + simulate-datanode \ + stb scm-throughput-benchmark \ + strmg streaming-generator + do + if [[ "$opt" == "$subcommand" ]]; then + return 0 + fi + done + done + return 1 +} From 7be35c2964f6e729ca97956b8cb9fc2c1184717a Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" Date: Sun, 8 Mar 2026 17:10:52 +0100 Subject: [PATCH 5/6] add warning --- hadoop-ozone/dist/src/shell/ozone/ozone-functions.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hadoop-ozone/dist/src/shell/ozone/ozone-functions.sh b/hadoop-ozone/dist/src/shell/ozone/ozone-functions.sh index b92ef0fd5ae3..d9800cd3b4ff 100755 --- a/hadoop-ozone/dist/src/shell/ozone/ozone-functions.sh +++ b/hadoop-ozone/dist/src/shell/ozone/ozone-functions.sh @@ -2960,6 +2960,9 @@ function ozone_is_freon_command_moved_to_vapor strmg streaming-generator do if [[ "$opt" == "$subcommand" ]]; then + echo "WARN: 'ozone freon $subcommand' is changed to 'ozone vapor $subcommand'." >&2 + echo " Please update your scripts since 'ozone freon $subcommand' may no longer" >&2 + echo " work in future releases." >&2 return 0 fi done From cbda6f44a6b04e29b364195854dafbb1d3b64519 Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" Date: Mon, 9 Mar 2026 07:21:35 +0100 Subject: [PATCH 6/6] fix OPTS --- hadoop-ozone/dist/src/shell/ozone/ozone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hadoop-ozone/dist/src/shell/ozone/ozone b/hadoop-ozone/dist/src/shell/ozone/ozone index e2eb3ea8140d..2e29126762c2 100755 --- a/hadoop-ozone/dist/src/shell/ozone/ozone +++ b/hadoop-ozone/dist/src/shell/ozone/ozone @@ -243,7 +243,7 @@ function ozonecmd_case ;; vapor) OZONE_CLASSNAME=org.apache.hadoop.ozone.freon.Vapor - OZONE_FREON_OPTS="${OZONE_FREON_OPTS} ${RATIS_OPTS} ${OZONE_MODULE_ACCESS_ARGS}" + OZONE_VAPOR_OPTS="${OZONE_VAPOR_OPTS} ${RATIS_OPTS} ${OZONE_MODULE_ACCESS_ARGS}" OZONE_RUN_ARTIFACT_NAME="ozone-vapor" ;; *)