From cd7a90d69c24872d449f3bd5e0d908fd21778122 Mon Sep 17 00:00:00 2001 From: Ethan Rose Date: Tue, 24 Feb 2026 15:39:20 -0500 Subject: [PATCH 1/8] Rename DatanodeVersion to HDDSVersion All serialization and functionality remains identical --- .../hdds/scm/storage/BlockOutputStream.java | 2 +- .../client/io/BlockInputStreamFactoryImpl.java | 2 +- .../{DatanodeVersion.java => HDDSVersion.java} | 16 ++++++++-------- .../hadoop/hdds/protocol/DatanodeDetails.java | 6 +++--- .../hdds/TestComponentVersionInvariants.java | 6 +++--- .../hdds/protocol/TestDatanodeDetails.java | 6 +++--- .../apache/hadoop/ozone/HddsDatanodeService.java | 6 +++--- .../server/ratis/XceiverServerRatis.java | 6 +++--- .../apache/hadoop/ozone/debug/VersionDebug.java | 4 ++-- .../hadoop/ozone/freon/DatanodeSimulator.java | 8 ++++---- .../client/rpc/TestBlockDataStreamOutput.java | 4 ++-- .../hadoop/ozone/UniformDatanodesFactory.java | 14 +++++++------- 12 files changed, 40 insertions(+), 40 deletions(-) rename hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/{DatanodeVersion.java => HDDSVersion.java} (80%) diff --git a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/BlockOutputStream.java b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/BlockOutputStream.java index d7076df3ba01..e6b76b777429 100644 --- a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/BlockOutputStream.java +++ b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/BlockOutputStream.java @@ -17,7 +17,7 @@ package org.apache.hadoop.hdds.scm.storage; -import static org.apache.hadoop.hdds.DatanodeVersion.COMBINED_PUTBLOCK_WRITECHUNK_RPC; +import static org.apache.hadoop.hdds.HDDSVersion.COMBINED_PUTBLOCK_WRITECHUNK_RPC; import static org.apache.hadoop.hdds.scm.storage.ContainerProtocolCalls.putBlockAsync; import static org.apache.hadoop.hdds.scm.storage.ContainerProtocolCalls.writeChunkAsync; import static org.apache.hadoop.ozone.OzoneConsts.INCREMENTAL_CHUNK_LIST; diff --git a/hadoop-hdds/client/src/main/java/org/apache/hadoop/ozone/client/io/BlockInputStreamFactoryImpl.java b/hadoop-hdds/client/src/main/java/org/apache/hadoop/ozone/client/io/BlockInputStreamFactoryImpl.java index 02527129d5a4..e6122541ef24 100644 --- a/hadoop-hdds/client/src/main/java/org/apache/hadoop/ozone/client/io/BlockInputStreamFactoryImpl.java +++ b/hadoop-hdds/client/src/main/java/org/apache/hadoop/ozone/client/io/BlockInputStreamFactoryImpl.java @@ -17,7 +17,7 @@ package org.apache.hadoop.ozone.client.io; -import static org.apache.hadoop.hdds.DatanodeVersion.STREAM_BLOCK_SUPPORT; +import static org.apache.hadoop.hdds.HDDSVersion.STREAM_BLOCK_SUPPORT; import java.io.IOException; import java.util.concurrent.ExecutorService; diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/DatanodeVersion.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HDDSVersion.java similarity index 80% rename from hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/DatanodeVersion.java rename to hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HDDSVersion.java index 2717e8eb3d9d..c6cf9af4069c 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/DatanodeVersion.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HDDSVersion.java @@ -26,7 +26,7 @@ /** * Versioning for datanode. */ -public enum DatanodeVersion implements ComponentVersion { +public enum HDDSVersion implements ComponentVersion { DEFAULT_VERSION(0, "Initial version"), @@ -39,17 +39,17 @@ public enum DatanodeVersion implements ComponentVersion { FUTURE_VERSION(-1, "Used internally in the client when the server side is " + " newer and an unknown server version has arrived to the client."); - public static final DatanodeVersion CURRENT = latest(); + public static final HDDSVersion CURRENT = latest(); public static final int CURRENT_VERSION = CURRENT.version; - private static final Map BY_PROTO_VALUE = + private static final Map BY_PROTO_VALUE = Arrays.stream(values()) - .collect(toMap(DatanodeVersion::toProtoValue, identity())); + .collect(toMap(HDDSVersion::toProtoValue, identity())); private final int version; private final String description; - DatanodeVersion(int version, String description) { + HDDSVersion(int version, String description) { this.version = version; this.description = description; } @@ -64,12 +64,12 @@ public int toProtoValue() { return version; } - public static DatanodeVersion fromProtoValue(int value) { + public static HDDSVersion fromProtoValue(int value) { return BY_PROTO_VALUE.getOrDefault(value, FUTURE_VERSION); } - private static DatanodeVersion latest() { - DatanodeVersion[] versions = DatanodeVersion.values(); + private static HDDSVersion latest() { + HDDSVersion[] versions = HDDSVersion.values(); return versions[versions.length - 2]; } } diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/protocol/DatanodeDetails.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/protocol/DatanodeDetails.java index 2585f593611d..6a11dc1b74ec 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/protocol/DatanodeDetails.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/protocol/DatanodeDetails.java @@ -36,7 +36,7 @@ import java.util.Set; import java.util.UUID; import org.apache.commons.lang3.StringUtils; -import org.apache.hadoop.hdds.DatanodeVersion; +import org.apache.hadoop.hdds.HDDSVersion; import org.apache.hadoop.hdds.HddsUtils; import org.apache.hadoop.hdds.annotation.InterfaceAudience; import org.apache.hadoop.hdds.annotation.InterfaceStability; @@ -469,7 +469,7 @@ public static DatanodeDetails.Builder newBuilder( builder.setCurrentVersion(datanodeDetailsProto.getCurrentVersion()); } else { // fallback to version 1 if not present - builder.setCurrentVersion(DatanodeVersion.SEPARATE_RATIS_PORTS_AVAILABLE.toProtoValue()); + builder.setCurrentVersion(HDDSVersion.SEPARATE_RATIS_PORTS_AVAILABLE.toProtoValue()); } return builder; } @@ -727,7 +727,7 @@ public static final class Builder { private HddsProtos.NodeOperationalState persistedOpState; private long persistedOpStateExpiryEpochSec = 0; private int initialVersion; - private int currentVersion = DatanodeVersion.CURRENT_VERSION; + private int currentVersion = HDDSVersion.CURRENT_VERSION; /** * Default private constructor. To create Builder instance use diff --git a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/TestComponentVersionInvariants.java b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/TestComponentVersionInvariants.java index e05c01a68a26..10129a781e8d 100644 --- a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/TestComponentVersionInvariants.java +++ b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/TestComponentVersionInvariants.java @@ -36,9 +36,9 @@ public class TestComponentVersionInvariants { public static Stream values() { return Stream.of( arguments( - DatanodeVersion.values(), - DatanodeVersion.DEFAULT_VERSION, - DatanodeVersion.FUTURE_VERSION), + HDDSVersion.values(), + HDDSVersion.DEFAULT_VERSION, + HDDSVersion.FUTURE_VERSION), arguments( ClientVersion.values(), ClientVersion.DEFAULT_VERSION, diff --git a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/protocol/TestDatanodeDetails.java b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/protocol/TestDatanodeDetails.java index dcbf9553dd03..86ed63c7f1d9 100644 --- a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/protocol/TestDatanodeDetails.java +++ b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/protocol/TestDatanodeDetails.java @@ -28,7 +28,7 @@ import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.apache.hadoop.hdds.DatanodeVersion; +import org.apache.hadoop.hdds.HDDSVersion; import org.apache.hadoop.hdds.protocol.DatanodeDetails.Port; import org.apache.hadoop.hdds.protocol.DatanodeDetails.Port.Name; import org.apache.hadoop.hdds.protocol.proto.HddsProtos; @@ -77,13 +77,13 @@ public void testNewBuilderCurrentVersion() { dn.toProtoBuilder(DEFAULT_VERSION.toProtoValue(), requiredPorts); protoBuilder.clearCurrentVersion(); DatanodeDetails dn2 = DatanodeDetails.newBuilder(protoBuilder.build()).build(); - assertEquals(DatanodeVersion.SEPARATE_RATIS_PORTS_AVAILABLE.toProtoValue(), dn2.getCurrentVersion()); + assertEquals(HDDSVersion.SEPARATE_RATIS_PORTS_AVAILABLE.toProtoValue(), dn2.getCurrentVersion()); // test that if the current version is set, it is used protoBuilder = dn.toProtoBuilder(DEFAULT_VERSION.toProtoValue(), requiredPorts); DatanodeDetails dn3 = DatanodeDetails.newBuilder(protoBuilder.build()).build(); - assertEquals(DatanodeVersion.CURRENT.toProtoValue(), dn3.getCurrentVersion()); + assertEquals(HDDSVersion.CURRENT.toProtoValue(), dn3.getCurrentVersion()); } public static void assertPorts(HddsProtos.DatanodeDetailsProto dn, diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/HddsDatanodeService.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/HddsDatanodeService.java index b0fbfe30b93f..aca713d11043 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/HddsDatanodeService.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/HddsDatanodeService.java @@ -56,7 +56,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; import org.apache.hadoop.conf.Configurable; -import org.apache.hadoop.hdds.DatanodeVersion; +import org.apache.hadoop.hdds.HDDSVersion; import org.apache.hadoop.hdds.HddsConfigKeys; import org.apache.hadoop.hdds.HddsUtils; import org.apache.hadoop.hdds.cli.GenericCli; @@ -816,13 +816,13 @@ private String reconfigScmNodes(String value) { * Returns the initial version of the datanode. */ private int getInitialVersion() { - return conf.getInt(TESTING_DATANODE_VERSION_INITIAL, DatanodeVersion.CURRENT_VERSION); + return conf.getInt(TESTING_DATANODE_VERSION_INITIAL, HDDSVersion.CURRENT_VERSION); } /** * Returns the current version of the datanode. */ private int getCurrentVersion() { - return conf.getInt(TESTING_DATANODE_VERSION_CURRENT, DatanodeVersion.CURRENT_VERSION); + return conf.getInt(TESTING_DATANODE_VERSION_CURRENT, HDDSVersion.CURRENT_VERSION); } } diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/XceiverServerRatis.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/XceiverServerRatis.java index 6eadec2d6d36..b41d086f742f 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/XceiverServerRatis.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/XceiverServerRatis.java @@ -17,7 +17,7 @@ package org.apache.hadoop.ozone.container.common.transport.server.ratis; -import static org.apache.hadoop.hdds.DatanodeVersion.SEPARATE_RATIS_PORTS_AVAILABLE; +import static org.apache.hadoop.hdds.HDDSVersion.SEPARATE_RATIS_PORTS_AVAILABLE; import static org.apache.hadoop.ozone.OzoneConfigKeys.HDDS_CONTAINER_RATIS_LOG_APPENDER_QUEUE_BYTE_LIMIT; import static org.apache.hadoop.ozone.OzoneConfigKeys.HDDS_CONTAINER_RATIS_LOG_APPENDER_QUEUE_BYTE_LIMIT_DEFAULT; import static org.apache.hadoop.ozone.OzoneConfigKeys.HDDS_CONTAINER_RATIS_LOG_APPENDER_QUEUE_NUM_ELEMENTS; @@ -52,7 +52,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicLong; -import org.apache.hadoop.hdds.DatanodeVersion; +import org.apache.hadoop.hdds.HDDSVersion; import org.apache.hadoop.hdds.HddsConfigKeys; import org.apache.hadoop.hdds.HddsUtils; import org.apache.hadoop.hdds.conf.ConfigurationSource; @@ -216,7 +216,7 @@ private void assignPorts() { OzoneConfigKeys.HDDS_CONTAINER_RATIS_IPC_PORT, OzoneConfigKeys.HDDS_CONTAINER_RATIS_IPC_PORT_DEFAULT); - if (DatanodeVersion.fromProtoValue(datanodeDetails.getInitialVersion()) + if (HDDSVersion.fromProtoValue(datanodeDetails.getInitialVersion()) .compareTo(SEPARATE_RATIS_PORTS_AVAILABLE) >= 0) { adminPort = determinePort( OzoneConfigKeys.HDDS_CONTAINER_RATIS_ADMIN_PORT, diff --git a/hadoop-ozone/cli-debug/src/main/java/org/apache/hadoop/ozone/debug/VersionDebug.java b/hadoop-ozone/cli-debug/src/main/java/org/apache/hadoop/ozone/debug/VersionDebug.java index 2112a7fac063..79a7e5c7bf0a 100644 --- a/hadoop-ozone/cli-debug/src/main/java/org/apache/hadoop/ozone/debug/VersionDebug.java +++ b/hadoop-ozone/cli-debug/src/main/java/org/apache/hadoop/ozone/debug/VersionDebug.java @@ -22,7 +22,7 @@ import java.util.Map; import java.util.concurrent.Callable; import org.apache.hadoop.hdds.ComponentVersion; -import org.apache.hadoop.hdds.DatanodeVersion; +import org.apache.hadoop.hdds.HDDSVersion; import org.apache.hadoop.hdds.cli.DebugSubcommand; import org.apache.hadoop.hdds.server.JsonUtils; import org.apache.hadoop.ozone.ClientVersion; @@ -52,7 +52,7 @@ public Void call() throws IOException { ), "components", ImmutableSortedMap.of( "client", asMap(ClientVersion.CURRENT), - "datanode", asMap(DatanodeVersion.CURRENT), + "datanode", asMap(HDDSVersion.CURRENT), "om", asMap(OzoneManagerVersion.CURRENT) ) ))); diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeSimulator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeSimulator.java index cb3769e7fd2d..fb4023932eea 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeSimulator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/DatanodeSimulator.java @@ -49,7 +49,7 @@ import java.util.concurrent.atomic.AtomicReference; import org.apache.commons.lang3.RandomUtils; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.hdds.DatanodeVersion; +import org.apache.hadoop.hdds.HDDSVersion; import org.apache.hadoop.hdds.HddsUtils; import org.apache.hadoop.hdds.cli.HddsVersionProvider; import org.apache.hadoop.hdds.conf.ConfigurationSource; @@ -460,8 +460,8 @@ private DatanodeDetails randomDatanodeDetails(ConfigurationSource config) DatanodeDetails details = DatanodeDetails.newBuilder() .setUuid(UUID.randomUUID()) .build(); - details.setInitialVersion(DatanodeVersion.CURRENT_VERSION); - details.setCurrentVersion(DatanodeVersion.CURRENT_VERSION); + details.setInitialVersion(HDDSVersion.CURRENT_VERSION); + details.setCurrentVersion(HDDSVersion.CURRENT_VERSION); details.setHostName(HddsUtils.getHostName(config)); details.setIpAddress(randomIp()); details.setStandalonePort(0); @@ -470,7 +470,7 @@ private DatanodeDetails randomDatanodeDetails(ConfigurationSource config) details.setVersion(HDDS_VERSION_INFO.getVersion()); details.setSetupTime(Time.now()); details.setRevision(HDDS_VERSION_INFO.getRevision()); - details.setCurrentVersion(DatanodeVersion.CURRENT_VERSION); + details.setCurrentVersion(HDDSVersion.CURRENT_VERSION); return details; } diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockDataStreamOutput.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockDataStreamOutput.java index 3cea0590d85e..ab71288a8dc7 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockDataStreamOutput.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockDataStreamOutput.java @@ -34,7 +34,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.stream.Stream; -import org.apache.hadoop.hdds.DatanodeVersion; +import org.apache.hadoop.hdds.HDDSVersion; import org.apache.hadoop.hdds.client.ReplicationType; import org.apache.hadoop.hdds.conf.ConfigurationSource; import org.apache.hadoop.hdds.conf.DatanodeRatisServerConfig; @@ -83,7 +83,7 @@ public class TestBlockDataStreamOutput { private static final String VOLUME_NAME = "testblockoutputstream"; private static final String BUCKET_NAME = VOLUME_NAME; private static String keyString = UUID.randomUUID().toString(); - private static final DatanodeVersion DN_OLD_VERSION = DatanodeVersion.SEPARATE_RATIS_PORTS_AVAILABLE; + private static final HDDSVersion DN_OLD_VERSION = HDDSVersion.SEPARATE_RATIS_PORTS_AVAILABLE; static MiniOzoneCluster createCluster() throws IOException, InterruptedException, TimeoutException { diff --git a/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/UniformDatanodesFactory.java b/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/UniformDatanodesFactory.java index 7e0a10031158..34fa80bc4464 100644 --- a/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/UniformDatanodesFactory.java +++ b/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/UniformDatanodesFactory.java @@ -45,7 +45,7 @@ import java.util.Objects; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; -import org.apache.hadoop.hdds.DatanodeVersion; +import org.apache.hadoop.hdds.HDDSVersion; import org.apache.hadoop.hdds.conf.ConfigurationTarget; import org.apache.hadoop.hdds.conf.OzoneConfiguration; import org.apache.hadoop.ozone.container.common.DatanodeLayoutStorage; @@ -61,8 +61,8 @@ public class UniformDatanodesFactory implements MiniOzoneCluster.DatanodeFactory private final int numDataVolumes; private final String reservedSpace; private final Integer layoutVersion; - private final DatanodeVersion initialVersion; - private final DatanodeVersion currentVersion; + private final HDDSVersion initialVersion; + private final HDDSVersion currentVersion; protected UniformDatanodesFactory(Builder builder) { numDataVolumes = builder.numDataVolumes; @@ -145,8 +145,8 @@ public static class Builder { private int numDataVolumes = 1; private String reservedSpace; private Integer layoutVersion; - private DatanodeVersion initialVersion; - private DatanodeVersion currentVersion; + private HDDSVersion initialVersion; + private HDDSVersion currentVersion; /** * Sets the number of data volumes per datanode. @@ -174,12 +174,12 @@ public Builder setLayoutVersion(int layoutVersion) { return this; } - public Builder setInitialVersion(DatanodeVersion version) { + public Builder setInitialVersion(HDDSVersion version) { this.initialVersion = version; return this; } - public Builder setCurrentVersion(DatanodeVersion version) { + public Builder setCurrentVersion(HDDSVersion version) { this.currentVersion = version; return this; } From 9e4a19859ed9541912f6e58439066fdcca3877f8 Mon Sep 17 00:00:00 2001 From: Ethan Rose Date: Tue, 24 Feb 2026 16:56:47 -0500 Subject: [PATCH 2/8] Move upgrade action to its own class --- .../hdds/upgrade/HDDSUpgradeAction.java | 2 +- .../hadoop/ozone/upgrade/LayoutFeature.java | 14 -------- .../hadoop/ozone/upgrade/UpgradeAction.java | 32 +++++++++++++++++++ .../ozone/upgrade/BasicUpgradeFinalizer.java | 1 - .../ozone/upgrade/UpgradeFinalizer.java | 4 +-- .../ozone/om/upgrade/OmUpgradeAction.java | 2 +- 6 files changed, 36 insertions(+), 19 deletions(-) create mode 100644 hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/UpgradeAction.java diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSUpgradeAction.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSUpgradeAction.java index d3bdfac81c33..81e1ade37003 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSUpgradeAction.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSUpgradeAction.java @@ -17,7 +17,7 @@ package org.apache.hadoop.hdds.upgrade; -import org.apache.hadoop.ozone.upgrade.LayoutFeature.UpgradeAction; +import org.apache.hadoop.ozone.upgrade.UpgradeAction; /** * Upgrade Action for SCM and DataNodes. diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java index 07bf2cb6dcbd..918a39d22d42 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java @@ -34,20 +34,6 @@ default Optional action() { return Optional.empty(); } - /** - * Generic UpgradeAction interface. An upgrade action is an operation that - * is run at least once as a pre-requisite to finalizing a layout feature. - * @param - */ - interface UpgradeAction { - - default String name() { - return getClass().getSimpleName(); - } - - void execute(T arg) throws Exception; - } - @Override default int version() { return this.layoutVersion(); diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/UpgradeAction.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/UpgradeAction.java new file mode 100644 index 000000000000..44765802e2cb --- /dev/null +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/UpgradeAction.java @@ -0,0 +1,32 @@ +/* + * 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.upgrade; + +/** + * Generic UpgradeAction interface. An upgrade action is an operation that + * is run at least once as a pre-requisite to finalizing a layout feature. + * @param action argument type + */ +public interface UpgradeAction { + + default String name() { + return getClass().getSimpleName(); + } + + void execute(T arg) throws Exception; +} diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/BasicUpgradeFinalizer.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/BasicUpgradeFinalizer.java index 2c5be227f856..bde03c59ad81 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/BasicUpgradeFinalizer.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/BasicUpgradeFinalizer.java @@ -40,7 +40,6 @@ import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import org.apache.hadoop.ozone.common.Storage; -import org.apache.hadoop.ozone.upgrade.LayoutFeature.UpgradeAction; import org.apache.hadoop.ozone.upgrade.UpgradeException.ResultCodes; import org.apache.hadoop.ozone.upgrade.UpgradeFinalization.Status; import org.apache.hadoop.ozone.upgrade.UpgradeFinalization.StatusAndMessages; diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/UpgradeFinalizer.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/UpgradeFinalizer.java index cdebb0183f2d..3109e787c6a5 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/UpgradeFinalizer.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/UpgradeFinalizer.java @@ -34,7 +34,7 @@ * in tandem with the corresponding version manager, and Storage. * @param The service type which the implementation is bound to, this * defines the type that is provided to {@link LayoutFeature}'s - * {@link org.apache.hadoop.ozone.upgrade.LayoutFeature.UpgradeAction} + * {@link org.apache.hadoop.ozone.upgrade.UpgradeAction} */ @InterfaceAudience.Private @InterfaceStability.Evolving @@ -46,7 +46,7 @@ public interface UpgradeFinalizer { * Finalize the metadata upgrade. * The provided client ID will be eligible to get the status messages, * the service provided will be provided to the - * {@link org.apache.hadoop.ozone.upgrade.LayoutFeature.UpgradeAction}s of + * {@link org.apache.hadoop.ozone.upgrade.UpgradeAction}s of * the {@link LayoutFeature}s being finalized. * @param upgradeClientID the initiating client's identifier. * @param service the service on which we run finalization. diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OmUpgradeAction.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OmUpgradeAction.java index 2c3f5f154c88..1d90eac15b46 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OmUpgradeAction.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OmUpgradeAction.java @@ -18,7 +18,7 @@ package org.apache.hadoop.ozone.om.upgrade; import org.apache.hadoop.ozone.om.OzoneManager; -import org.apache.hadoop.ozone.upgrade.LayoutFeature.UpgradeAction; +import org.apache.hadoop.ozone.upgrade.UpgradeAction; /** * Upgrade Action for OzoneManager which takes in an 'OM' instance. From a51c83827b00fccedb1192b5903fb6d517721153 Mon Sep 17 00:00:00 2001 From: Ethan Rose Date: Tue, 24 Feb 2026 17:03:22 -0500 Subject: [PATCH 3/8] Pull description and action into common interface --- .../org/apache/hadoop/hdds/ComponentVersion.java | 7 ------- .../main/java/org/apache/hadoop/ozone/Versioned.java | 12 ++++++++++++ .../apache/hadoop/ozone/upgrade/LayoutFeature.java | 7 ------- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ComponentVersion.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ComponentVersion.java index f486d5096bc4..d5917f1dfc95 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ComponentVersion.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ComponentVersion.java @@ -23,13 +23,6 @@ * Base type for component version enums. */ public interface ComponentVersion extends Versioned { - - /** - * Returns the description of the version enum value. - * @return the description of the version enum value. - */ - String description(); - /** * Returns the value that represents the enum in a protocol message * transferred over the wire. diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/Versioned.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/Versioned.java index 136edeaf2a0a..edf7c902abf4 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/Versioned.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/Versioned.java @@ -17,9 +17,21 @@ package org.apache.hadoop.ozone; +import org.apache.hadoop.ozone.upgrade.UpgradeAction; +import java.util.Optional; + /** * Base class defining the version in the entire system. */ public interface Versioned { int version(); + + /** + * @return the description of the version enum value. + */ + String description(); + + default Optional action() { + return Optional.empty(); + } } diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java index 918a39d22d42..eaa4dd44538e 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java @@ -17,7 +17,6 @@ package org.apache.hadoop.ozone.upgrade; -import java.util.Optional; import org.apache.hadoop.ozone.Versioned; /** @@ -28,12 +27,6 @@ public interface LayoutFeature extends Versioned { int layoutVersion(); - String description(); - - default Optional action() { - return Optional.empty(); - } - @Override default int version() { return this.layoutVersion(); From f9216bd8311e9c56d045714a220139aece3dabe6 Mon Sep 17 00:00:00 2001 From: Ethan Rose Date: Wed, 25 Feb 2026 12:42:21 -0500 Subject: [PATCH 4/8] Remove support for indexing layout features by name --- .../hadoop/ozone/upgrade/LayoutFeature.java | 2 -- .../upgrade/AbstractLayoutVersionManager.java | 17 ----------------- .../ozone/upgrade/BasicUpgradeFinalizer.java | 4 ++-- .../ozone/upgrade/LayoutVersionManager.java | 14 -------------- .../TestAbstractLayoutVersionManager.java | 14 -------------- .../schemaupgrade/UpgradeContainerSchema.java | 4 ++-- .../ozone/om/upgrade/OMLayoutFeatureAspect.java | 15 +++++++-------- .../file/TestOMDirectoryCreateRequest.java | 3 ++- .../TestOMDirectoryCreateRequestWithFSO.java | 3 ++- .../ozone/om/request/key/TestOMKeyRequest.java | 3 ++- .../s3/tenant/TestOMTenantCreateRequest.java | 3 ++- .../s3/tenant/TestOMTenantDeleteRequest.java | 3 ++- .../TestSnapshotRequestAndResponse.java | 3 ++- .../ozone/om/upgrade/OMLayoutFeatureUtil.java | 8 +++++--- .../om/upgrade/TestOMLayoutFeatureAspect.java | 7 +++---- .../om/upgrade/TestOMUpgradeFinalizer.java | 4 ++-- 16 files changed, 33 insertions(+), 74 deletions(-) diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java index eaa4dd44538e..eaf22b0083ac 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java @@ -23,8 +23,6 @@ * Generic Layout feature interface for Ozone. */ public interface LayoutFeature extends Versioned { - String name(); - int layoutVersion(); @Override diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/AbstractLayoutVersionManager.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/AbstractLayoutVersionManager.java index 5aa553b30d5f..73aa6c077236 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/AbstractLayoutVersionManager.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/AbstractLayoutVersionManager.java @@ -25,8 +25,6 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; import java.util.TreeMap; import java.util.concurrent.locks.ReentrantReadWriteLock; import javax.management.ObjectName; @@ -49,8 +47,6 @@ public abstract class AbstractLayoutVersionManager private volatile int softwareLayoutVersion; // SLV. @VisibleForTesting protected final TreeMap features = new TreeMap<>(); - @VisibleForTesting - protected final Map featureMap = new HashMap<>(); private volatile Status currentUpgradeState; // Allows querying upgrade state while an upgrade is in progress. // Note that MLV may have been incremented during the upgrade @@ -109,10 +105,8 @@ public void setUpgradeState(Status status) { private void initializeFeatures(T[] lfs) { Arrays.stream(lfs).forEach(f -> { - Preconditions.checkArgument(!featureMap.containsKey(f.name())); Preconditions.checkArgument(!features.containsKey(f.layoutVersion())); features.put(f.layoutVersion(), f); - featureMap.put(f.name(), f); }); } @@ -190,17 +184,6 @@ public boolean isAllowed(LayoutFeature layoutFeature) { } } - @Override - public boolean isAllowed(String featureName) { - return featureMap.containsKey(featureName) && - isAllowed(featureMap.get(featureName)); - } - - @Override - public LayoutFeature getFeature(String name) { - return featureMap.get(name); - } - @Override public LayoutFeature getFeature(int layoutVersion) { return features.get(layoutVersion); diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/BasicUpgradeFinalizer.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/BasicUpgradeFinalizer.java index bde03c59ad81..4d75e88cdf81 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/BasicUpgradeFinalizer.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/BasicUpgradeFinalizer.java @@ -258,13 +258,13 @@ protected void runFinalizationAction(LayoutFeature feature, Optional action) throws UpgradeException { if (!action.isPresent()) { - emitNOOPMsg(feature.name()); + emitNOOPMsg(feature.toString()); } else { LOG.info("Running finalization actions for layout feature: {}", feature); try { action.get().execute(component); } catch (Exception e) { - logFinalizationFailureAndThrow(e, feature.name()); + logFinalizationFailureAndThrow(e, feature.toString()); } } } diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutVersionManager.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutVersionManager.java index e4ba6d7823ae..ee2d145071c5 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutVersionManager.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutVersionManager.java @@ -47,20 +47,6 @@ public interface LayoutVersionManager { */ boolean isAllowed(LayoutFeature layoutFeature); - /** - * Is allowed feature? - * @param featureName feature name - * @return true/false. - */ - boolean isAllowed(String featureName); - - /** - * Get Feature given feature name. - * @param name Feature name. - * @return LayoutFeature instance. - */ - LayoutFeature getFeature(String name); - /** * Get Feature given its layout version. * @param layoutVersion Version number of the feature. diff --git a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/ozone/upgrade/TestAbstractLayoutVersionManager.java b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/ozone/upgrade/TestAbstractLayoutVersionManager.java index 9b0c9578f63d..f006698518a8 100644 --- a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/ozone/upgrade/TestAbstractLayoutVersionManager.java +++ b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/ozone/upgrade/TestAbstractLayoutVersionManager.java @@ -58,7 +58,6 @@ public void testInitializationWithFeaturesToBeFinalized() throws Exception { versionManager.init(1, getTestLayoutFeatures(3)); assertEquals(3, versionManager.features.size()); - assertEquals(3, versionManager.featureMap.size()); assertEquals(1, versionManager.getMetadataLayoutVersion()); assertEquals(3, versionManager.getSoftwareLayoutVersion()); @@ -76,7 +75,6 @@ public void testInitializationWithUpToDateMetadataVersion() throws Exception { versionManager.init(2, getTestLayoutFeatures(2)); assertEquals(2, versionManager.features.size()); - assertEquals(2, versionManager.featureMap.size()); assertEquals(2, versionManager.getMetadataLayoutVersion()); assertEquals(2, versionManager.getSoftwareLayoutVersion()); @@ -101,7 +99,6 @@ public void testFeatureFinalization() throws Exception { versionManager.finalized(lfs[1]); assertEquals(3, versionManager.features.size()); - assertEquals(3, versionManager.featureMap.size()); assertEquals(2, versionManager.getMetadataLayoutVersion()); assertEquals(3, versionManager.getSoftwareLayoutVersion()); @@ -145,22 +142,16 @@ public void testUnfinalizedFeaturesAreNotAllowed() throws Exception { LayoutFeature[] lfs = getTestLayoutFeatures(3); versionManager.init(1, lfs); - assertTrue(versionManager.isAllowed(lfs[0].name())); assertTrue(versionManager.isAllowed(lfs[0])); - assertFalse(versionManager.isAllowed(lfs[1].name())); assertFalse(versionManager.isAllowed(lfs[1])); - assertFalse(versionManager.isAllowed(lfs[2].name())); assertFalse(versionManager.isAllowed(lfs[2])); versionManager.finalized(lfs[1]); - assertTrue(versionManager.isAllowed(lfs[0].name())); assertTrue(versionManager.isAllowed(lfs[0])); - assertTrue(versionManager.isAllowed(lfs[1].name())); assertTrue(versionManager.isAllowed(lfs[1])); - assertFalse(versionManager.isAllowed(lfs[2].name())); assertFalse(versionManager.isAllowed(lfs[2])); } @@ -188,11 +179,6 @@ private LayoutFeature[] getTestLayoutFeatures(int num) { for (int i = 1; i <= num; i++) { int finalI = i; lfs[k++] = new LayoutFeature() { - @Override - public String name() { - return "LF-" + finalI; - } - @Override public int layoutVersion() { return finalI; diff --git a/hadoop-ozone/cli-repair/src/main/java/org/apache/hadoop/ozone/repair/datanode/schemaupgrade/UpgradeContainerSchema.java b/hadoop-ozone/cli-repair/src/main/java/org/apache/hadoop/ozone/repair/datanode/schemaupgrade/UpgradeContainerSchema.java index 97f2e215ebf8..7add67421fae 100644 --- a/hadoop-ozone/cli-repair/src/main/java/org/apache/hadoop/ozone/repair/datanode/schemaupgrade/UpgradeContainerSchema.java +++ b/hadoop-ozone/cli-repair/src/main/java/org/apache/hadoop/ozone/repair/datanode/schemaupgrade/UpgradeContainerSchema.java @@ -144,8 +144,8 @@ public void execute() throws Exception { "Please upgrade your software version, no less than %s," + " current metadata layout version is %s," + " software layout version is %s", - HDDSLayoutFeature.DATANODE_SCHEMA_V3.name(), - metadataLayoutFeature.name(), softwareLayoutFeature.name()); + HDDSLayoutFeature.DATANODE_SCHEMA_V3.toString(), + metadataLayoutFeature.toString(), softwareLayoutFeature.toString()); return; } diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeatureAspect.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeatureAspect.java index 70cfa1791fda..20edda53823f 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeatureAspect.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeatureAspect.java @@ -50,9 +50,9 @@ public class OMLayoutFeatureAspect { @Before("@annotation(DisallowedUntilLayoutVersion) && execution(* *(..))") public void checkLayoutFeature(JoinPoint joinPoint) throws IOException { - String featureName = ((MethodSignature) joinPoint.getSignature()) + LayoutFeature layoutFeature = ((MethodSignature) joinPoint.getSignature()) .getMethod().getAnnotation(DisallowedUntilLayoutVersion.class) - .value().name(); + .value(); LayoutVersionManager lvm; final Object[] args = joinPoint.getArgs(); if (joinPoint.getTarget() instanceof OzoneManagerRequestHandler) { @@ -73,19 +73,18 @@ public void checkLayoutFeature(JoinPoint joinPoint) throws IOException { lvm = new OMLayoutVersionManager(); } } - checkIsAllowed(joinPoint.getSignature().toShortString(), lvm, featureName); + checkIsAllowed(joinPoint.getSignature().toShortString(), lvm, layoutFeature); } private void checkIsAllowed(String operationName, LayoutVersionManager lvm, - String featureName) throws OMException { - if (!lvm.isAllowed(featureName)) { - LayoutFeature layoutFeature = lvm.getFeature(featureName); + LayoutFeature layoutFeature) throws OMException { + if (!lvm.isAllowed(layoutFeature)) { throw new OMException(String.format("Operation %s cannot be invoked " + "before finalization. It belongs to the layout feature %s, " + "whose layout version is %d. Current Layout version is %d", operationName, - layoutFeature.name(), + layoutFeature.toString(), layoutFeature.layoutVersion(), lvm.getMetadataLayoutVersion()), NOT_SUPPORTED_OPERATION_PRIOR_FINALIZATION); @@ -113,7 +112,7 @@ public void beforeRequestApplyTxn(final JoinPoint joinPoint) LayoutFeature lf = annotation.value(); checkIsAllowed(joinPoint.getTarget().getClass().getSimpleName(), - om.getVersionManager(), lf.name()); + om.getVersionManager(), lf); } /** diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/file/TestOMDirectoryCreateRequest.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/file/TestOMDirectoryCreateRequest.java index 1b096070ea3f..8d3c02c40472 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/file/TestOMDirectoryCreateRequest.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/file/TestOMDirectoryCreateRequest.java @@ -69,6 +69,7 @@ import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.CreateDirectoryRequest; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest; +import org.apache.hadoop.ozone.upgrade.LayoutFeature; import org.apache.hadoop.security.UserGroupInformation; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -112,7 +113,7 @@ public void setup() throws Exception { BucketLayout.DEFAULT)); OMLayoutVersionManager lvm = mock(OMLayoutVersionManager.class); when(lvm.getMetadataLayoutVersion()).thenReturn(0); - when(lvm.isAllowed(anyString())).thenReturn(true); + when(lvm.isAllowed(any(LayoutFeature.class))).thenReturn(true); when(ozoneManager.getVersionManager()).thenReturn(lvm); } diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/file/TestOMDirectoryCreateRequestWithFSO.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/file/TestOMDirectoryCreateRequestWithFSO.java index 4abeaf25d0c8..658120e25e7a 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/file/TestOMDirectoryCreateRequestWithFSO.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/file/TestOMDirectoryCreateRequestWithFSO.java @@ -69,6 +69,7 @@ import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.CreateDirectoryRequest; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest; +import org.apache.hadoop.ozone.upgrade.LayoutFeature; import org.apache.hadoop.security.UserGroupInformation; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -113,7 +114,7 @@ public void setup() throws Exception { BucketLayout.DEFAULT)); OMLayoutVersionManager lvm = mock(OMLayoutVersionManager.class); when(lvm.getMetadataLayoutVersion()).thenReturn(0); - when(lvm.isAllowed(anyString())).thenReturn(true); + when(lvm.isAllowed(any(LayoutFeature.class))).thenReturn(true); when(ozoneManager.getVersionManager()).thenReturn(lvm); } diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java index b84294370c58..3ce8db695eb4 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java @@ -84,6 +84,7 @@ import org.apache.hadoop.ozone.om.request.snapshot.TestOMSnapshotCreateRequest; import org.apache.hadoop.ozone.om.response.snapshot.OMSnapshotCreateResponse; import org.apache.hadoop.ozone.om.upgrade.OMLayoutVersionManager; +import org.apache.hadoop.ozone.upgrade.LayoutFeature; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs; import org.apache.hadoop.ozone.security.acl.OzoneNativeAuthorizer; @@ -155,7 +156,7 @@ public void setup() throws Exception { when(ozoneManager.getConfiguration()).thenReturn(ozoneConfiguration); when(ozoneManager.getConfig()).thenReturn(ozoneConfiguration.getObject(OmConfig.class)); OMLayoutVersionManager lvm = mock(OMLayoutVersionManager.class); - when(lvm.isAllowed(anyString())).thenReturn(true); + when(lvm.isAllowed(any(LayoutFeature.class))).thenReturn(true); when(ozoneManager.getVersionManager()).thenReturn(lvm); when(ozoneManager.isFilesystemSnapshotEnabled()).thenReturn(true); auditLogger = mock(AuditLogger.class); diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/tenant/TestOMTenantCreateRequest.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/tenant/TestOMTenantCreateRequest.java index 36529d01064c..ee4b516c7931 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/tenant/TestOMTenantCreateRequest.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/tenant/TestOMTenantCreateRequest.java @@ -54,6 +54,7 @@ import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status; import org.apache.hadoop.ozone.security.acl.IAccessAuthorizer; import org.apache.hadoop.ozone.security.acl.OzoneObj; +import org.apache.hadoop.ozone.upgrade.LayoutFeature; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -83,7 +84,7 @@ public void setup() throws Exception { when(ozoneManager.getMaxUserVolumeCount()).thenReturn(10L); OMLayoutVersionManager lvm = mock(OMLayoutVersionManager.class); when(lvm.getMetadataLayoutVersion()).thenReturn(0); - when(lvm.isAllowed(anyString())).thenReturn(true); + when(lvm.isAllowed(any(LayoutFeature.class))).thenReturn(true); when(ozoneManager.getVersionManager()).thenReturn(lvm); AuditLogger auditLogger = mock(AuditLogger.class); when(ozoneManager.getAuditLogger()).thenReturn(auditLogger); diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/tenant/TestOMTenantDeleteRequest.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/tenant/TestOMTenantDeleteRequest.java index 6de4f1d8446d..15a0660a6863 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/tenant/TestOMTenantDeleteRequest.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/tenant/TestOMTenantDeleteRequest.java @@ -49,6 +49,7 @@ import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest; import org.apache.hadoop.ozone.security.acl.IAccessAuthorizer; import org.apache.hadoop.ozone.security.acl.OzoneObj; +import org.apache.hadoop.ozone.upgrade.LayoutFeature; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -80,7 +81,7 @@ public void setup() throws Exception { OMLayoutVersionManager lvm = mock(OMLayoutVersionManager.class); when(lvm.getMetadataLayoutVersion()).thenReturn(0); - when(lvm.isAllowed(anyString())).thenReturn(true); + when(lvm.isAllowed(any(LayoutFeature.class))).thenReturn(true); when(ozoneManager.getVersionManager()).thenReturn(lvm); AuditLogger auditLogger = mock(AuditLogger.class); diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestSnapshotRequestAndResponse.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestSnapshotRequestAndResponse.java index 9c6f033b907b..883ae397802c 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestSnapshotRequestAndResponse.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestSnapshotRequestAndResponse.java @@ -69,6 +69,7 @@ import org.apache.hadoop.ozone.om.upgrade.OMLayoutVersionManager; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos; import org.apache.hadoop.ozone.security.acl.IAccessAuthorizer; +import org.apache.hadoop.ozone.upgrade.LayoutFeature; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.io.TempDir; @@ -167,7 +168,7 @@ public void baseSetup() throws Exception { when(ozoneManager.getAccessAuthorizer()).thenReturn(accessAuthorizer); when(accessAuthorizer.isNative()).thenReturn(false); OMLayoutVersionManager lvm = mock(OMLayoutVersionManager.class); - when(lvm.isAllowed(anyString())).thenReturn(true); + when(lvm.isAllowed(any(LayoutFeature.class))).thenReturn(true); when(ozoneManager.getVersionManager()).thenReturn(lvm); AuditLogger auditLogger = mock(AuditLogger.class); when(ozoneManager.getAuditLogger()).thenReturn(auditLogger); diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeatureUtil.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeatureUtil.java index f6e0938ec27d..f9e7f364c0ae 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeatureUtil.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeatureUtil.java @@ -18,11 +18,12 @@ package org.apache.hadoop.ozone.om.upgrade; import static org.apache.hadoop.ozone.om.upgrade.OMLayoutFeature.INITIAL_VERSION; -import static org.mockito.Mockito.anyString; +import static org.mockito.Mockito.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.io.IOException; +import org.apache.hadoop.ozone.upgrade.LayoutFeature; import org.apache.hadoop.ozone.upgrade.LayoutVersionManager; /** @@ -55,8 +56,9 @@ public String basicMethod() { // instance of the layout version manager. public LayoutVersionManager getOmVersionManager() throws IOException { LayoutVersionManager mockLvm = mock(LayoutVersionManager.class); - when(mockLvm.isAllowed(anyString())).thenReturn(false).thenReturn(true); - when(mockLvm.getFeature(anyString())).thenReturn(INITIAL_VERSION); + when(mockLvm.isAllowed(any(LayoutFeature.class))) + .thenReturn(false) + .thenReturn(true); return mockLvm; } diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMLayoutFeatureAspect.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMLayoutFeatureAspect.java index 457a978440f8..a49df70bb0ad 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMLayoutFeatureAspect.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMLayoutFeatureAspect.java @@ -17,10 +17,9 @@ package org.apache.hadoop.ozone.om.upgrade; -import static org.apache.hadoop.ozone.om.upgrade.OMLayoutFeature.INITIAL_VERSION; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.Mockito.anyString; +import static org.mockito.Mockito.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -29,6 +28,7 @@ import org.apache.hadoop.hdds.conf.OzoneConfiguration; import org.apache.hadoop.ozone.om.OzoneManager; import org.apache.hadoop.ozone.om.exceptions.OMException; +import org.apache.hadoop.ozone.upgrade.LayoutFeature; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.reflect.MethodSignature; import org.junit.jupiter.api.BeforeEach; @@ -82,8 +82,7 @@ public void testPreExecuteLayoutCheck() { OzoneManager om = mock(OzoneManager.class); OMLayoutVersionManager lvm = mock(OMLayoutVersionManager.class); - when(lvm.isAllowed(anyString())).thenReturn(false); - when(lvm.getFeature(anyString())).thenReturn(INITIAL_VERSION); + when(lvm.isAllowed(any(LayoutFeature.class))).thenReturn(false); when(om.getVersionManager()).thenReturn(lvm); MockOmRequest mockOmRequest = new MockOmRequest(); diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMUpgradeFinalizer.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMUpgradeFinalizer.java index 6346f5c51ee0..27d6c8f3a7a5 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMUpgradeFinalizer.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMUpgradeFinalizer.java @@ -194,7 +194,7 @@ public void testFinalizationWithFailingUpgradeAction() throws Exception { OMUpgradeFinalizer finalizer = new OMUpgradeFinalizer(versionManager); UpgradeException e = assertThrows(UpgradeException.class, () -> finalizer.finalize(CLIENT_ID, om)); - assertThat(e.getMessage()).contains(lfs.iterator().next().name()); + assertThat(e.getMessage()).contains(lfs.iterator().next().toString()); assertEquals(e.getResult(), LAYOUT_FEATURE_FINALIZATION_FAILED); if (finalizer.isFinalizationDone()) { when(versionManager.getUpgradeState()).thenReturn(FINALIZATION_DONE); @@ -232,7 +232,7 @@ private void setupVersionManagerMockToFinalize( private OMLayoutFeature mockFeature(String name, int version) { OMLayoutFeature f = mock(OMLayoutFeature.class); - lenient().when(f.name()).thenReturn(name); + lenient().when(f.toString()).thenReturn(name); when(f.layoutVersion()).thenReturn(version); return f; } From 051a1c8e5233caa58ad3c8c4a2b51111117f0675 Mon Sep 17 00:00:00 2001 From: Ethan Rose Date: Wed, 25 Feb 2026 15:53:35 -0500 Subject: [PATCH 5/8] Add version number in toString --- .../main/java/org/apache/hadoop/hdds/HDDSVersion.java | 5 +++++ .../apache/hadoop/hdds/upgrade/HDDSLayoutFeature.java | 9 +++++++-- .../main/java/org/apache/hadoop/ozone/ClientVersion.java | 5 +++++ .../org/apache/hadoop/ozone/OzoneManagerVersion.java | 5 +++++ .../ozone/upgrade/TestUpgradeFinalizerActions.java | 5 +++++ .../apache/hadoop/ozone/om/upgrade/OMLayoutFeature.java | 9 +++++++-- 6 files changed, 34 insertions(+), 4 deletions(-) diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HDDSVersion.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HDDSVersion.java index c6cf9af4069c..d59b2e201ce3 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HDDSVersion.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HDDSVersion.java @@ -64,6 +64,11 @@ public int toProtoValue() { return version; } + @Override + public String toString() { + return name() + " (" + version() + ")"; + } + public static HDDSVersion fromProtoValue(int value) { return BY_PROTO_VALUE.getOrDefault(value, FUTURE_VERSION); } diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeature.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeature.java index 0d45298da8be..3e892776d8d8 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeature.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeature.java @@ -46,8 +46,8 @@ public enum HDDSLayoutFeature implements LayoutFeature { ////////////////////////////// ////////////////////////////// - private int layoutVersion; - private String description; + private final int layoutVersion; + private final String description; private HDDSUpgradeAction scmAction; private HDDSUpgradeAction datanodeAction; @@ -90,6 +90,11 @@ public String description() { return description; } + @Override + public String toString() { + return name() + " (" + version() + ")"; + } + public Optional scmAction() { return Optional.ofNullable(scmAction); } diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/ClientVersion.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/ClientVersion.java index b84513531631..c30636a3d269 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/ClientVersion.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/ClientVersion.java @@ -70,6 +70,11 @@ public int toProtoValue() { return version; } + @Override + public String toString() { + return name() + " (" + version() + ")"; + } + public static ClientVersion fromProtoValue(int value) { return BY_PROTO_VALUE.getOrDefault(value, FUTURE_VERSION); } diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneManagerVersion.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneManagerVersion.java index 41cf8ab28560..ab7a3beba6f0 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneManagerVersion.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneManagerVersion.java @@ -82,6 +82,11 @@ public int toProtoValue() { return version; } + @Override + public String toString() { + return name() + " (" + version() + ")"; + } + public static OzoneManagerVersion fromProtoValue(int value) { return BY_PROTO_VALUE.getOrDefault(value, FUTURE_VERSION); } diff --git a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/ozone/upgrade/TestUpgradeFinalizerActions.java b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/ozone/upgrade/TestUpgradeFinalizerActions.java index 02589de7d71f..1b8e0a6211d2 100644 --- a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/ozone/upgrade/TestUpgradeFinalizerActions.java +++ b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/ozone/upgrade/TestUpgradeFinalizerActions.java @@ -86,6 +86,11 @@ public String description() { return null; } + @Override + public String toString() { + return name() + " (" + version() + ")"; + } + public void addAction(UpgradeAction upgradeAction) { this.action = upgradeAction; } diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeature.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeature.java index ef99b453b7f0..dc2360568f61 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeature.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeature.java @@ -48,8 +48,8 @@ public enum OMLayoutFeature implements LayoutFeature { /////////////////////////////// ///////////////////////////// - private int layoutVersion; - private String description; + private final int layoutVersion; + private final String description; private OmUpgradeAction action; OMLayoutFeature(final int layoutVersion, String description) { @@ -67,6 +67,11 @@ public String description() { return description; } + @Override + public String toString() { + return name() + " (" + version() + ")"; + } + /** * Associates a given upgrade action with this feature. Only the first upgrade action registered will be used. * From a9f1eaabd0163a43e67eb7fa003d61053e94c6a3 Mon Sep 17 00:00:00 2001 From: Ethan Rose Date: Wed, 25 Feb 2026 15:58:39 -0500 Subject: [PATCH 6/8] Rename version -> serialize --- .../main/java/org/apache/hadoop/hdds/ComponentVersion.java | 2 +- .../src/main/java/org/apache/hadoop/hdds/HDDSVersion.java | 2 +- .../org/apache/hadoop/hdds/upgrade/HDDSLayoutFeature.java | 2 +- .../src/main/java/org/apache/hadoop/ozone/ClientVersion.java | 2 +- .../java/org/apache/hadoop/ozone/OzoneManagerVersion.java | 2 +- .../src/main/java/org/apache/hadoop/ozone/Versioned.java | 4 ++-- .../java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java | 2 +- .../hadoop/ozone/upgrade/TestUpgradeFinalizerActions.java | 2 +- .../org/apache/hadoop/ozone/om/upgrade/OMLayoutFeature.java | 2 +- .../ozone/om/request/validation/TestVersionExtractor.java | 4 ++-- 10 files changed, 12 insertions(+), 12 deletions(-) diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ComponentVersion.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ComponentVersion.java index d5917f1dfc95..aa189e69be11 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ComponentVersion.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ComponentVersion.java @@ -31,7 +31,7 @@ public interface ComponentVersion extends Versioned { int toProtoValue(); @Override - default int version() { + default int serialize() { return toProtoValue(); } } diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HDDSVersion.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HDDSVersion.java index d59b2e201ce3..307aaeb12328 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HDDSVersion.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HDDSVersion.java @@ -66,7 +66,7 @@ public int toProtoValue() { @Override public String toString() { - return name() + " (" + version() + ")"; + return name() + " (" + serialize() + ")"; } public static HDDSVersion fromProtoValue(int value) { diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeature.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeature.java index 3e892776d8d8..e78e1dcbffe9 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeature.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeature.java @@ -92,7 +92,7 @@ public String description() { @Override public String toString() { - return name() + " (" + version() + ")"; + return name() + " (" + serialize() + ")"; } public Optional scmAction() { diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/ClientVersion.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/ClientVersion.java index c30636a3d269..c185e8bbf16d 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/ClientVersion.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/ClientVersion.java @@ -72,7 +72,7 @@ public int toProtoValue() { @Override public String toString() { - return name() + " (" + version() + ")"; + return name() + " (" + serialize() + ")"; } public static ClientVersion fromProtoValue(int value) { diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneManagerVersion.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneManagerVersion.java index ab7a3beba6f0..fc524cbbec9f 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneManagerVersion.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneManagerVersion.java @@ -84,7 +84,7 @@ public int toProtoValue() { @Override public String toString() { - return name() + " (" + version() + ")"; + return name() + " (" + serialize() + ")"; } public static OzoneManagerVersion fromProtoValue(int value) { diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/Versioned.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/Versioned.java index edf7c902abf4..fc00d038c81b 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/Versioned.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/Versioned.java @@ -17,14 +17,14 @@ package org.apache.hadoop.ozone; -import org.apache.hadoop.ozone.upgrade.UpgradeAction; import java.util.Optional; +import org.apache.hadoop.ozone.upgrade.UpgradeAction; /** * Base class defining the version in the entire system. */ public interface Versioned { - int version(); + int serialize(); /** * @return the description of the version enum value. diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java index eaf22b0083ac..8f49563677ae 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java @@ -26,7 +26,7 @@ public interface LayoutFeature extends Versioned { int layoutVersion(); @Override - default int version() { + default int serialize() { return this.layoutVersion(); } } diff --git a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/ozone/upgrade/TestUpgradeFinalizerActions.java b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/ozone/upgrade/TestUpgradeFinalizerActions.java index 1b8e0a6211d2..ade86b488b9b 100644 --- a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/ozone/upgrade/TestUpgradeFinalizerActions.java +++ b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/ozone/upgrade/TestUpgradeFinalizerActions.java @@ -88,7 +88,7 @@ public String description() { @Override public String toString() { - return name() + " (" + version() + ")"; + return name() + " (" + serialize() + ")"; } public void addAction(UpgradeAction upgradeAction) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeature.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeature.java index dc2360568f61..c19b720682d4 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeature.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeature.java @@ -69,7 +69,7 @@ public String description() { @Override public String toString() { - return name() + " (" + version() + ")"; + return name() + " (" + serialize() + ")"; } /** diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/validation/TestVersionExtractor.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/validation/TestVersionExtractor.java index 80133cf5de84..73732ea5f23d 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/validation/TestVersionExtractor.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/validation/TestVersionExtractor.java @@ -42,7 +42,7 @@ class TestVersionExtractor { @EnumSource(OMLayoutFeature.class) void testLayoutVersionExtractor(OMLayoutFeature layoutVersionValue) throws OMException { ValidationContext context = mock(ValidationContext.class); - LayoutVersionManager layoutVersionManager = new OMLayoutVersionManager(layoutVersionValue.version()); + LayoutVersionManager layoutVersionManager = new OMLayoutVersionManager(layoutVersionValue.serialize()); when(context.versionManager()).thenReturn(layoutVersionManager); Versioned version = VersionExtractor.LAYOUT_VERSION_EXTRACTOR.extractVersion(null, context); assertEquals(layoutVersionValue, version); @@ -52,7 +52,7 @@ void testLayoutVersionExtractor(OMLayoutFeature layoutVersionValue) throws OMExc @EnumSource(ClientVersion.class) void testClientVersionExtractor(ClientVersion expectedClientVersion) { OMRequest request = mock(OMRequest.class); - when(request.getVersion()).thenReturn(expectedClientVersion.version()); + when(request.getVersion()).thenReturn(expectedClientVersion.serialize()); Versioned version = VersionExtractor.CLIENT_VERSION_EXTRACTOR.extractVersion(request, null); assertEquals(expectedClientVersion, version); } From 79ea6c65aa2024110981839466bdb3213134df43 Mon Sep 17 00:00:00 2001 From: Ethan Rose Date: Wed, 25 Feb 2026 18:02:44 -0500 Subject: [PATCH 7/8] Combine Versioned and ComponentVersion interfaces Use one method called serialize to get the int version. --- .../RegisterValidatorProcessor.java | 2 +- .../hadoop/hdds/scm/XceiverClientGrpc.java | 6 +-- .../hdds/scm/storage/BlockOutputStream.java | 2 +- .../io/BlockInputStreamFactoryImpl.java | 2 +- .../TestBlockOutputStreamCorrectness.java | 2 +- .../apache/hadoop/hdds/ComponentVersion.java | 18 +++---- .../org/apache/hadoop/hdds/HDDSVersion.java | 4 +- .../hadoop/hdds/protocol/DatanodeDetails.java | 2 +- .../ratis/ContainerCommandRequestMessage.java | 2 +- .../apache/hadoop/ozone/ClientVersion.java | 6 +-- .../hadoop/ozone/OzoneManagerVersion.java | 4 +- .../org/apache/hadoop/ozone/Versioned.java | 37 ------------- .../hadoop/ozone/upgrade/LayoutFeature.java | 4 +- .../hdds/TestComponentVersionInvariants.java | 8 +-- .../hdds/protocol/TestDatanodeDetails.java | 12 ++--- .../TestContainerCommandRequestMessage.java | 4 +- .../hdds/scm/pipeline/TestPipeline.java | 4 +- .../ozone/container/ContainerTestHelper.java | 2 +- .../impl/TestKeyValueStreamDataChannel.java | 2 +- ...ocationProtocolServerSideTranslatorPB.java | 2 +- .../hadoop/ozone/debug/VersionDebug.java | 2 +- .../hadoop/ozone/om/helpers/ServiceInfo.java | 2 +- .../request/validation/RegisterValidator.java | 4 +- .../request/validation/package-info.java | 2 +- .../client/rpc/TestBlockDataStreamOutput.java | 4 +- .../om/TestBucketLayoutWithOlderClient.java | 2 +- .../hadoop/ozone/UniformDatanodesFactory.java | 4 +- .../validation/OMClientVersionValidator.java | 2 +- .../validation/OMLayoutVersionValidator.java | 2 +- .../request/validation/VersionExtractor.java | 8 +-- .../validation/TestOMValidatorProcessor.java | 52 +++++++++---------- .../validation/TestVersionExtractor.java | 11 ++-- 32 files changed, 93 insertions(+), 127 deletions(-) delete mode 100644 hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/Versioned.java diff --git a/hadoop-hdds/annotations/src/main/java/org/apache/ozone/annotations/RegisterValidatorProcessor.java b/hadoop-hdds/annotations/src/main/java/org/apache/ozone/annotations/RegisterValidatorProcessor.java index c5639e11e540..6b26043efb26 100644 --- a/hadoop-hdds/annotations/src/main/java/org/apache/ozone/annotations/RegisterValidatorProcessor.java +++ b/hadoop-hdds/annotations/src/main/java/org/apache/ozone/annotations/RegisterValidatorProcessor.java @@ -54,7 +54,7 @@ public class RegisterValidatorProcessor extends AbstractProcessor { public static final String ANNOTATION_SIMPLE_NAME = "RegisterValidator"; - public static final String VERSION_CLASS_NAME = "org.apache.hadoop.ozone.Version"; + public static final String VERSION_CLASS_NAME = "org.apache.hadoop.hdds.ComponentVersion"; public static final String REQUEST_PROCESSING_PHASE_CLASS_NAME = "org.apache.hadoop.ozone.om.request.validation" + ".RequestProcessingPhase"; public static final String APPLY_BEFORE_METHOD_NAME = "applyBefore"; diff --git a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientGrpc.java b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientGrpc.java index 6cd258c5ba33..8a14fdb9b877 100644 --- a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientGrpc.java +++ b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientGrpc.java @@ -288,7 +288,7 @@ public ContainerCommandResponseProto sendCommand( futureHashMap = new HashMap<>(); if (!request.hasVersion()) { ContainerCommandRequestProto.Builder builder = ContainerCommandRequestProto.newBuilder(request); - builder.setVersion(ClientVersion.CURRENT.toProtoValue()); + builder.setVersion(ClientVersion.CURRENT.serialize()); request = builder.build(); } for (DatanodeDetails dn : datanodeList) { @@ -380,7 +380,7 @@ private XceiverClientReply sendCommandWithTraceIDAndRetry( ContainerCommandRequestProto.newBuilder(request) .setTraceID(TracingUtil.exportCurrentSpan()); if (!request.hasVersion()) { - builder.setVersion(ClientVersion.CURRENT.toProtoValue()); + builder.setVersion(ClientVersion.CURRENT.serialize()); } return sendCommandWithRetry(builder.build(), validators); }); @@ -611,7 +611,7 @@ public XceiverClientReply sendCommandAsync( ContainerCommandRequestProto.newBuilder(request) .setTraceID(TracingUtil.exportCurrentSpan()); if (!request.hasVersion()) { - builder.setVersion(ClientVersion.CURRENT.toProtoValue()); + builder.setVersion(ClientVersion.CURRENT.serialize()); } XceiverClientReply asyncReply = sendCommandAsync(builder.build(), pipeline.getFirstNode()); diff --git a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/BlockOutputStream.java b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/BlockOutputStream.java index e6b76b777429..31d6d794d072 100644 --- a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/BlockOutputStream.java +++ b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/storage/BlockOutputStream.java @@ -286,7 +286,7 @@ private boolean allDataNodesSupportPiggybacking() { for (DatanodeDetails dn : pipeline.getNodes()) { LOG.debug("dn = {}, version = {}", dn, dn.getCurrentVersion()); if (dn.getCurrentVersion() < - COMBINED_PUTBLOCK_WRITECHUNK_RPC.toProtoValue()) { + COMBINED_PUTBLOCK_WRITECHUNK_RPC.serialize()) { return false; } } diff --git a/hadoop-hdds/client/src/main/java/org/apache/hadoop/ozone/client/io/BlockInputStreamFactoryImpl.java b/hadoop-hdds/client/src/main/java/org/apache/hadoop/ozone/client/io/BlockInputStreamFactoryImpl.java index e6122541ef24..99fb8b898061 100644 --- a/hadoop-hdds/client/src/main/java/org/apache/hadoop/ozone/client/io/BlockInputStreamFactoryImpl.java +++ b/hadoop-hdds/client/src/main/java/org/apache/hadoop/ozone/client/io/BlockInputStreamFactoryImpl.java @@ -103,7 +103,7 @@ private boolean allDataNodesSupportStreamBlock(Pipeline pipeline) { // return true only if all DataNodes in the pipeline are on a version // that supports for reading a block by streaming chunks.. for (DatanodeDetails dn : pipeline.getNodes()) { - if (dn.getCurrentVersion() < STREAM_BLOCK_SUPPORT.toProtoValue()) { + if (dn.getCurrentVersion() < STREAM_BLOCK_SUPPORT.serialize()) { return false; } } diff --git a/hadoop-hdds/client/src/test/java/org/apache/hadoop/hdds/scm/storage/TestBlockOutputStreamCorrectness.java b/hadoop-hdds/client/src/test/java/org/apache/hadoop/hdds/scm/storage/TestBlockOutputStreamCorrectness.java index 440b5b3d4d52..1c38be0d9963 100644 --- a/hadoop-hdds/client/src/test/java/org/apache/hadoop/hdds/scm/storage/TestBlockOutputStreamCorrectness.java +++ b/hadoop-hdds/client/src/test/java/org/apache/hadoop/hdds/scm/storage/TestBlockOutputStreamCorrectness.java @@ -231,7 +231,7 @@ public XceiverClientReply sendCommandAsync(ContainerCommandRequestProto request) if (!request.hasVersion()) { request = ContainerCommandRequestProto.newBuilder(request) - .setVersion(ClientVersion.CURRENT.toProtoValue()).build(); + .setVersion(ClientVersion.CURRENT.serialize()).build(); } final ContainerCommandResponseProto.Builder builder = ContainerCommandResponseProto.newBuilder() diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ComponentVersion.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ComponentVersion.java index aa189e69be11..b3e8c77572b5 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ComponentVersion.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ComponentVersion.java @@ -17,21 +17,21 @@ package org.apache.hadoop.hdds; -import org.apache.hadoop.ozone.Versioned; +import java.util.Optional; +import org.apache.hadoop.ozone.upgrade.UpgradeAction; /** * Base type for component version enums. */ -public interface ComponentVersion extends Versioned { +public interface ComponentVersion { + int serialize(); + /** - * Returns the value that represents the enum in a protocol message - * transferred over the wire. - * @return the version associated with the enum value. + * @return the description of the version enum value. */ - int toProtoValue(); + String description(); - @Override - default int serialize() { - return toProtoValue(); + default Optional action() { + return Optional.empty(); } } diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HDDSVersion.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HDDSVersion.java index 307aaeb12328..655083a41d91 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HDDSVersion.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HDDSVersion.java @@ -44,7 +44,7 @@ public enum HDDSVersion implements ComponentVersion { private static final Map BY_PROTO_VALUE = Arrays.stream(values()) - .collect(toMap(HDDSVersion::toProtoValue, identity())); + .collect(toMap(HDDSVersion::serialize, identity())); private final int version; private final String description; @@ -60,7 +60,7 @@ public String description() { } @Override - public int toProtoValue() { + public int serialize() { return version; } diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/protocol/DatanodeDetails.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/protocol/DatanodeDetails.java index 6a11dc1b74ec..d1ebc1305054 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/protocol/DatanodeDetails.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/protocol/DatanodeDetails.java @@ -469,7 +469,7 @@ public static DatanodeDetails.Builder newBuilder( builder.setCurrentVersion(datanodeDetailsProto.getCurrentVersion()); } else { // fallback to version 1 if not present - builder.setCurrentVersion(HDDSVersion.SEPARATE_RATIS_PORTS_AVAILABLE.toProtoValue()); + builder.setCurrentVersion(HDDSVersion.SEPARATE_RATIS_PORTS_AVAILABLE.serialize()); } return builder; } diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ratis/ContainerCommandRequestMessage.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ratis/ContainerCommandRequestMessage.java index ea9877255c21..c09001e580a1 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ratis/ContainerCommandRequestMessage.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ratis/ContainerCommandRequestMessage.java @@ -49,7 +49,7 @@ public static ContainerCommandRequestMessage toMessage( b.setTraceID(traceId); } if (!request.hasVersion()) { - b.setVersion(ClientVersion.CURRENT.toProtoValue()); + b.setVersion(ClientVersion.CURRENT.serialize()); } ByteString data = ByteString.EMPTY; diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/ClientVersion.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/ClientVersion.java index c185e8bbf16d..8c4c1a2e10d6 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/ClientVersion.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/ClientVersion.java @@ -50,7 +50,7 @@ public enum ClientVersion implements ComponentVersion { private static final Map BY_PROTO_VALUE = Arrays.stream(values()) - .collect(toMap(ClientVersion::toProtoValue, identity())); + .collect(toMap(ClientVersion::serialize, identity())); private final int version; private final String description; @@ -66,7 +66,7 @@ public String description() { } @Override - public int toProtoValue() { + public int serialize() { return version; } @@ -81,7 +81,7 @@ public static ClientVersion fromProtoValue(int value) { private static ClientVersion latest() { return Arrays.stream(ClientVersion.values()) - .max(Comparator.comparingInt(ComponentVersion::toProtoValue)).orElse(null); + .max(Comparator.comparingInt(ComponentVersion::serialize)).orElse(null); } } diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneManagerVersion.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneManagerVersion.java index fc524cbbec9f..e2946ce8e19e 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneManagerVersion.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneManagerVersion.java @@ -62,7 +62,7 @@ public enum OzoneManagerVersion implements ComponentVersion { private static final Map BY_PROTO_VALUE = Arrays.stream(values()) - .collect(toMap(OzoneManagerVersion::toProtoValue, identity())); + .collect(toMap(OzoneManagerVersion::serialize, identity())); private final int version; private final String description; @@ -78,7 +78,7 @@ public String description() { } @Override - public int toProtoValue() { + public int serialize() { return version; } diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/Versioned.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/Versioned.java deleted file mode 100644 index fc00d038c81b..000000000000 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/Versioned.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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; - -import java.util.Optional; -import org.apache.hadoop.ozone.upgrade.UpgradeAction; - -/** - * Base class defining the version in the entire system. - */ -public interface Versioned { - int serialize(); - - /** - * @return the description of the version enum value. - */ - String description(); - - default Optional action() { - return Optional.empty(); - } -} diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java index 8f49563677ae..7f7374c8137a 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java @@ -17,12 +17,12 @@ package org.apache.hadoop.ozone.upgrade; -import org.apache.hadoop.ozone.Versioned; +import org.apache.hadoop.hdds.ComponentVersion; /** * Generic Layout feature interface for Ozone. */ -public interface LayoutFeature extends Versioned { +public interface LayoutFeature extends ComponentVersion { int layoutVersion(); @Override diff --git a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/TestComponentVersionInvariants.java b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/TestComponentVersionInvariants.java index 10129a781e8d..f0b1df91940f 100644 --- a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/TestComponentVersionInvariants.java +++ b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/TestComponentVersionInvariants.java @@ -66,7 +66,7 @@ public void testFutureVersionHasTheHighestOrdinal( public void testFuturVersionHasMinusOneAsProtoRepresentation( ComponentVersion[] values, ComponentVersion defaultValue, ComponentVersion futureValue) { - assertEquals(-1, futureValue.toProtoValue()); + assertEquals(-1, futureValue.serialize()); } @@ -76,7 +76,7 @@ public void testFuturVersionHasMinusOneAsProtoRepresentation( public void testDefaultVersionHasZeroAsProtoRepresentation( ComponentVersion[] values, ComponentVersion defaultValue, ComponentVersion futureValue) { - assertEquals(0, defaultValue.toProtoValue()); + assertEquals(0, defaultValue.serialize()); } // versions are increasing monotonically by one @@ -85,10 +85,10 @@ public void testDefaultVersionHasZeroAsProtoRepresentation( public void testAssignedProtoRepresentations( ComponentVersion[] values, ComponentVersion defaultValue, ComponentVersion futureValue) { - int startValue = defaultValue.toProtoValue(); + int startValue = defaultValue.serialize(); // we skip the future version at the last position for (int i = 0; i < values.length - 1; i++) { - assertEquals(values[i].toProtoValue(), startValue++); + assertEquals(values[i].serialize(), startValue++); } assertEquals(values.length, ++startValue); } diff --git a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/protocol/TestDatanodeDetails.java b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/protocol/TestDatanodeDetails.java index 86ed63c7f1d9..f3a091c46d6f 100644 --- a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/protocol/TestDatanodeDetails.java +++ b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/protocol/TestDatanodeDetails.java @@ -44,11 +44,11 @@ void protoIncludesNewPortsOnlyForV1() { DatanodeDetails subject = MockDatanodeDetails.randomDatanodeDetails(); HddsProtos.DatanodeDetailsProto proto = - subject.toProto(DEFAULT_VERSION.toProtoValue()); + subject.toProto(DEFAULT_VERSION.serialize()); assertPorts(proto, V0_PORTS); HddsProtos.DatanodeDetailsProto protoV1 = - subject.toProto(VERSION_HANDLES_UNKNOWN_DN_PORTS.toProtoValue()); + subject.toProto(VERSION_HANDLES_UNKNOWN_DN_PORTS.serialize()); assertPorts(protoV1, ALL_PORTS); } @@ -74,16 +74,16 @@ public void testNewBuilderCurrentVersion() { Set requiredPorts = Stream.of(Port.Name.STANDALONE, Port.Name.RATIS) .collect(Collectors.toSet()); HddsProtos.DatanodeDetailsProto.Builder protoBuilder = - dn.toProtoBuilder(DEFAULT_VERSION.toProtoValue(), requiredPorts); + dn.toProtoBuilder(DEFAULT_VERSION.serialize(), requiredPorts); protoBuilder.clearCurrentVersion(); DatanodeDetails dn2 = DatanodeDetails.newBuilder(protoBuilder.build()).build(); - assertEquals(HDDSVersion.SEPARATE_RATIS_PORTS_AVAILABLE.toProtoValue(), dn2.getCurrentVersion()); + assertEquals(HDDSVersion.SEPARATE_RATIS_PORTS_AVAILABLE.serialize(), dn2.getCurrentVersion()); // test that if the current version is set, it is used protoBuilder = - dn.toProtoBuilder(DEFAULT_VERSION.toProtoValue(), requiredPorts); + dn.toProtoBuilder(DEFAULT_VERSION.serialize(), requiredPorts); DatanodeDetails dn3 = DatanodeDetails.newBuilder(protoBuilder.build()).build(); - assertEquals(HDDSVersion.CURRENT.toProtoValue(), dn3.getCurrentVersion()); + assertEquals(HDDSVersion.CURRENT.serialize(), dn3.getCurrentVersion()); } public static void assertPorts(HddsProtos.DatanodeDetailsProto dn, diff --git a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/ratis/TestContainerCommandRequestMessage.java b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/ratis/TestContainerCommandRequestMessage.java index 5c5b62e6d72c..76e0e995ab2c 100644 --- a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/ratis/TestContainerCommandRequestMessage.java +++ b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/ratis/TestContainerCommandRequestMessage.java @@ -90,7 +90,7 @@ static ContainerCommandRequestProto newPutSmallFile( .setContainerID(blockID.getContainerID()) .setDatanodeUuid(UUID.randomUUID().toString()) .setPutSmallFile(putSmallFileRequest) - .setVersion(ClientVersion.CURRENT.toProtoValue()) + .setVersion(ClientVersion.CURRENT.serialize()) .build(); } @@ -113,7 +113,7 @@ static ContainerCommandRequestProto newWriteChunk( .setContainerID(blockID.getContainerID()) .setDatanodeUuid(UUID.randomUUID().toString()) .setWriteChunk(writeChunkRequest) - .setVersion(ClientVersion.CURRENT.toProtoValue()) + .setVersion(ClientVersion.CURRENT.serialize()) .build(); } diff --git a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestPipeline.java b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestPipeline.java index c6ab6678e8b6..c9318a9ef580 100644 --- a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestPipeline.java +++ b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestPipeline.java @@ -47,13 +47,13 @@ public void protoIncludesNewPortsOnlyForV1() throws IOException { Pipeline subject = MockPipeline.createPipeline(3); HddsProtos.Pipeline proto = - subject.getProtobufMessage(DEFAULT_VERSION.toProtoValue()); + subject.getProtobufMessage(DEFAULT_VERSION.serialize()); for (HddsProtos.DatanodeDetailsProto dn : proto.getMembersList()) { assertPorts(dn, V0_PORTS); } HddsProtos.Pipeline protoV1 = subject.getProtobufMessage( - VERSION_HANDLES_UNKNOWN_DN_PORTS.toProtoValue()); + VERSION_HANDLES_UNKNOWN_DN_PORTS.serialize()); for (HddsProtos.DatanodeDetailsProto dn : protoV1.getMembersList()) { assertPorts(dn, ALL_PORTS); } diff --git a/hadoop-hdds/common/src/test/java/org/apache/hadoop/ozone/container/ContainerTestHelper.java b/hadoop-hdds/common/src/test/java/org/apache/hadoop/ozone/container/ContainerTestHelper.java index 47a3b6a50427..46548cf2bafb 100644 --- a/hadoop-hdds/common/src/test/java/org/apache/hadoop/ozone/container/ContainerTestHelper.java +++ b/hadoop-hdds/common/src/test/java/org/apache/hadoop/ozone/container/ContainerTestHelper.java @@ -621,7 +621,7 @@ public static ContainerCommandRequestProto getDummyCommandRequestProto( ClientVersion clientVersion, ContainerProtos.Type cmdType, int replicaIndex) { final Builder builder = ContainerCommandRequestProto.newBuilder() - .setVersion(clientVersion.toProtoValue()) + .setVersion(clientVersion.serialize()) .setCmdType(cmdType) .setContainerID(DUMMY_CONTAINER_ID) .setDatanodeUuid(DATANODE_UUID); diff --git a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/impl/TestKeyValueStreamDataChannel.java b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/impl/TestKeyValueStreamDataChannel.java index 3c2992f36f4b..226ff39f9973 100644 --- a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/impl/TestKeyValueStreamDataChannel.java +++ b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/impl/TestKeyValueStreamDataChannel.java @@ -87,7 +87,7 @@ public class TestKeyValueStreamDataChannel { .setContainerID(222).setLocalID(333).build()).build())) .setDatanodeUuid("datanodeId") .setContainerID(111L) - .setVersion(ClientVersion.CURRENT.toProtoValue()) + .setVersion(ClientVersion.CURRENT.serialize()) .build(); static final int PUT_BLOCK_PROTO_SIZE = PUT_BLOCK_PROTO.toByteString().size(); diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java index 62f06079bf0b..acb7dc7d2528 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java @@ -221,7 +221,7 @@ public ScmContainerLocationResponse submitRequest(RpcController controller, // annotated interceptors. boolean checkResponseForECRepConfig = false; if (request.getVersion() < - ClientVersion.ERASURE_CODING_SUPPORT.toProtoValue()) { + ClientVersion.ERASURE_CODING_SUPPORT.serialize()) { if (request.getCmdType() == GetContainer || request.getCmdType() == ListContainer || request.getCmdType() == GetContainerWithPipeline diff --git a/hadoop-ozone/cli-debug/src/main/java/org/apache/hadoop/ozone/debug/VersionDebug.java b/hadoop-ozone/cli-debug/src/main/java/org/apache/hadoop/ozone/debug/VersionDebug.java index 79a7e5c7bf0a..20cf91d08720 100644 --- a/hadoop-ozone/cli-debug/src/main/java/org/apache/hadoop/ozone/debug/VersionDebug.java +++ b/hadoop-ozone/cli-debug/src/main/java/org/apache/hadoop/ozone/debug/VersionDebug.java @@ -63,7 +63,7 @@ private static & ComponentVersion> Map asMap( return ImmutableSortedMap.of( "componentVersion", ImmutableSortedMap.of( "name", version.name(), - "protoValue", version.toProtoValue() + "protoValue", version.serialize() ) ); } diff --git a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/ServiceInfo.java b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/ServiceInfo.java index a94e0025401b..f5d8f24e3fdb 100644 --- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/ServiceInfo.java +++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/ServiceInfo.java @@ -190,7 +190,7 @@ public OzoneManagerProtocolProtos.ServiceInfo getProtobuf() { .setHostname(hostname) .addAllServicePorts(servicePorts); if (omVersion != null) { - builder.setOMVersion(omVersion.toProtoValue()); + builder.setOMVersion(omVersion.serialize()); } if (nodeType == NodeType.OM && omRoleInfo != null) { builder.setOmRole(omRoleInfo); diff --git a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/request/validation/RegisterValidator.java b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/request/validation/RegisterValidator.java index 396bffe4438d..16384dbe1259 100644 --- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/request/validation/RegisterValidator.java +++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/request/validation/RegisterValidator.java @@ -21,12 +21,12 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import org.apache.hadoop.ozone.Versioned; +import org.apache.hadoop.hdds.ComponentVersion; /** * Annotations to register a validator. {@code org.apache.ozone.annotations.RegisterValidatorProcessor} * enforces other annotation to have the following methods: - * applyBefore : Returns an enum which implement {@link Versioned} + * applyBefore : Returns an enum which implement {@link ComponentVersion} * requestType: Returns an Enum value. * processingPhase: Returns {@link RequestProcessingPhase} */ diff --git a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/request/validation/package-info.java b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/request/validation/package-info.java index 4365baa77e9c..abad2f820799 100644 --- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/request/validation/package-info.java +++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/request/validation/package-info.java @@ -23,7 +23,7 @@ * code for any server. * {@link org.apache.hadoop.ozone.request.validation.RegisterValidator} * is used to register any validator which has the following methods: - * - applyBefore : Returns an enum which implement {@link org.apache.hadoop.ozone.Versioned} + * - applyBefore : Returns an enum which implement {@link org.apache.hadoop.hdds.ComponentVersion} * - requestType: Returns an Enum value. * - processingPhase: Returns {@link org.apache.hadoop.ozone.request.validation.RequestProcessingPhase} * diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockDataStreamOutput.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockDataStreamOutput.java index ab71288a8dc7..d90bf3ea8031 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockDataStreamOutput.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockDataStreamOutput.java @@ -341,7 +341,7 @@ public void testDatanodeVersion(boolean flushDelay) throws Exception { List dns = cluster.getHddsDatanodes(); for (HddsDatanodeService dn : dns) { DatanodeDetails details = dn.getDatanodeDetails(); - assertEquals(DN_OLD_VERSION.toProtoValue(), details.getCurrentVersion()); + assertEquals(DN_OLD_VERSION.serialize(), details.getCurrentVersion()); } String keyName = getKeyName(); @@ -352,7 +352,7 @@ public void testDatanodeVersion(boolean flushDelay) throws Exception { // Now check 3 DNs in a random pipeline returns the correct DN versions List streamDnDetails = stream.getPipeline().getNodes(); for (DatanodeDetails details : streamDnDetails) { - assertEquals(DN_OLD_VERSION.toProtoValue(), details.getCurrentVersion()); + assertEquals(DN_OLD_VERSION.serialize(), details.getCurrentVersion()); } } } diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestBucketLayoutWithOlderClient.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestBucketLayoutWithOlderClient.java index 08961fc47739..2275664de40f 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestBucketLayoutWithOlderClient.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestBucketLayoutWithOlderClient.java @@ -79,7 +79,7 @@ public void testCreateBucketWithOlderClient() throws Exception { OzoneManagerProtocolProtos.OMRequest .newBuilder() .setCmdType(OzoneManagerProtocolProtos.Type.CreateBucket) - .setVersion(ClientVersion.DEFAULT_VERSION.toProtoValue()) + .setVersion(ClientVersion.DEFAULT_VERSION.serialize()) .setClientId(UUID.randomUUID().toString()) .setCreateBucketRequest( OzoneManagerProtocolProtos.CreateBucketRequest.newBuilder() diff --git a/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/UniformDatanodesFactory.java b/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/UniformDatanodesFactory.java index 34fa80bc4464..22d7dc617bbc 100644 --- a/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/UniformDatanodesFactory.java +++ b/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/UniformDatanodesFactory.java @@ -111,10 +111,10 @@ public OzoneConfiguration apply(OzoneConfiguration conf) throws IOException { } if (initialVersion != null) { - dnConf.setInt(TESTING_DATANODE_VERSION_INITIAL, initialVersion.toProtoValue()); + dnConf.setInt(TESTING_DATANODE_VERSION_INITIAL, initialVersion.serialize()); } if (currentVersion != null) { - dnConf.setInt(TESTING_DATANODE_VERSION_CURRENT, currentVersion.toProtoValue()); + dnConf.setInt(TESTING_DATANODE_VERSION_CURRENT, currentVersion.serialize()); } dnConf.set(HDDS_RATIS_LEADER_FIRST_ELECTION_MINIMUM_TIMEOUT_DURATION_KEY, "1s"); dnConf.set(HDDS_INITIAL_HEARTBEAT_INTERVAL, "500ms"); diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/OMClientVersionValidator.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/OMClientVersionValidator.java index 015b67b47ddc..e7f62a721238 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/OMClientVersionValidator.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/OMClientVersionValidator.java @@ -35,7 +35,7 @@ * * The conditions describe the specific use case in which the validator should be * applied to the request. - * See {@link VersionExtractor} for getting all the supported different {@link org.apache.hadoop.ozone.Versioned} + * See {@link VersionExtractor} for getting all the supported different {@link org.apache.hadoop.hdds.ComponentVersion} * component's actual version. * The validator method will be applied to the specified request type(s). * To help keep these methods simple and straightforward, use one method for multiple requests only If diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/OMLayoutVersionValidator.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/OMLayoutVersionValidator.java index 8dc624fe10b2..5e516dfabe54 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/OMLayoutVersionValidator.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/OMLayoutVersionValidator.java @@ -35,7 +35,7 @@ * * The conditions describe the specific use case in which the validator should be * applied to the request. - * See {@link VersionExtractor} for getting all the supported different {@link org.apache.hadoop.ozone.Versioned} + * See {@link VersionExtractor} for getting all the supported different {@link org.apache.hadoop.hdds.ComponentVersion} * component's actual version. * The validator method will be applied to the specified request type(s). * To help keep these methods simple and straightforward use inheritance and annotate diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/VersionExtractor.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/VersionExtractor.java index cf04ceaecd00..f7b90bd060d0 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/VersionExtractor.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/validation/VersionExtractor.java @@ -18,8 +18,8 @@ package org.apache.hadoop.ozone.om.request.validation; import java.lang.annotation.Annotation; +import org.apache.hadoop.hdds.ComponentVersion; import org.apache.hadoop.ozone.ClientVersion; -import org.apache.hadoop.ozone.Versioned; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest; import org.apache.hadoop.ozone.upgrade.LayoutVersionManager; @@ -32,7 +32,7 @@ public enum VersionExtractor { */ LAYOUT_VERSION_EXTRACTOR { @Override - public Versioned extractVersion(OMRequest req, ValidationContext ctx) { + public ComponentVersion extractVersion(OMRequest req, ValidationContext ctx) { LayoutVersionManager layoutVersionManager = ctx.versionManager(); return ctx.versionManager().getFeature(layoutVersionManager.getMetadataLayoutVersion()); } @@ -48,7 +48,7 @@ public Class getValidatorClass() { */ CLIENT_VERSION_EXTRACTOR { @Override - public Versioned extractVersion(OMRequest req, ValidationContext ctx) { + public ComponentVersion extractVersion(OMRequest req, ValidationContext ctx) { return req.getVersion() > ClientVersion.CURRENT_VERSION ? ClientVersion.FUTURE_VERSION : ClientVersion.fromProtoValue(req.getVersion()); } @@ -59,7 +59,7 @@ public Class getValidatorClass() { } }; - public abstract Versioned extractVersion(OMRequest req, ValidationContext ctx); + public abstract ComponentVersion extractVersion(OMRequest req, ValidationContext ctx); public abstract Class getValidatorClass(); } diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/validation/TestOMValidatorProcessor.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/validation/TestOMValidatorProcessor.java index 677a722bfe17..affc405afc61 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/validation/TestOMValidatorProcessor.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/validation/TestOMValidatorProcessor.java @@ -41,7 +41,7 @@ import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.apache.hadoop.ozone.Versioned; +import org.apache.hadoop.hdds.ComponentVersion; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Type; import org.apache.hadoop.ozone.request.validation.RegisterValidator; import org.apache.hadoop.ozone.request.validation.RequestProcessingPhase; @@ -89,7 +89,7 @@ private static Stream annotatedClasses() { @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testAnnotationCanOnlyBeAppliedOnMethods(Class annotationClass, + public & ComponentVersion> void testAnnotationCanOnlyBeAppliedOnMethods(Class annotationClass, V version) { for (Annotation a : annotationClass.getAnnotations()) { if (a instanceof Target) { @@ -101,7 +101,7 @@ public & Versioned> void testAnnotationCanOnlyBeAppliedOnMeth @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testACorrectAnnotationSetupForPreProcessCompiles(Class annotationClass, + public & ComponentVersion> void testACorrectAnnotationSetupForPreProcessCompiles(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(preProcess(), aReqType(), annotationClass, version), @@ -115,7 +115,7 @@ public & Versioned> void testACorrectAnnotationSetupForPrePro @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testACorrectAnnotationSetupForPostProcessCompiles( + public & ComponentVersion> void testACorrectAnnotationSetupForPostProcessCompiles( Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(postProcess(), aReqType(), annotationClass, version), @@ -129,7 +129,7 @@ public & Versioned> void testACorrectAnnotationSetupForPostPr @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testValidatorDoesNotNecessarilyThrowsExceptions(Class annotationClass, + public & ComponentVersion> void testValidatorDoesNotNecessarilyThrowsExceptions(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(preProcess(), aReqType(), annotationClass, version), @@ -143,7 +143,7 @@ public & Versioned> void testValidatorDoesNotNecessarilyThrow @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testNonStaticValidatorDoesNotCompile(Class annotationClass, + public & ComponentVersion> void testNonStaticValidatorDoesNotCompile(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(preProcess(), aReqType(), annotationClass, version), @@ -158,7 +158,7 @@ public & Versioned> void testNonStaticValidatorDoesNotCompile @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testValidatorMethodCanBeFinal(Class annotationClass, + public & ComponentVersion> void testValidatorMethodCanBeFinal(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(preProcess(), aReqType(), annotationClass, version), @@ -172,7 +172,7 @@ public & Versioned> void testValidatorMethodCanBeFinal(Class< @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testValidatorMethodCanBePrivate(Class annotationClass, + public & ComponentVersion> void testValidatorMethodCanBePrivate(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(preProcess(), aReqType(), annotationClass, version), @@ -186,7 +186,7 @@ public & Versioned> void testValidatorMethodCanBePrivate(Clas @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testValidatorMethodCanBeDefaultVisible(Class annotationClass, + public & ComponentVersion> void testValidatorMethodCanBeDefaultVisible(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(preProcess(), aReqType(), annotationClass, version), @@ -200,7 +200,7 @@ public & Versioned> void testValidatorMethodCanBeDefaultVisib @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testValidatorMethodCanBeProtected(Class annotationClass, + public & ComponentVersion> void testValidatorMethodCanBeProtected(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(preProcess(), aReqType(), annotationClass, version), @@ -214,7 +214,7 @@ public & Versioned> void testValidatorMethodCanBeProtected(Cl @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testNotEnoughParametersForPreProcess(Class annotationClass, + public & ComponentVersion> void testNotEnoughParametersForPreProcess(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(preProcess(), aReqType(), annotationClass, version), @@ -230,7 +230,7 @@ public & Versioned> void testNotEnoughParametersForPreProcess @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testTooManyParametersForPreProcess(Class annotationClass, + public & ComponentVersion> void testTooManyParametersForPreProcess(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(preProcess(), aReqType(), annotationClass, version), @@ -246,7 +246,7 @@ public & Versioned> void testTooManyParametersForPreProcess(C @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testNotEnoughParametersForPostProcess(Class annotationClass, + public & ComponentVersion> void testNotEnoughParametersForPostProcess(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(postProcess(), aReqType(), annotationClass, version), @@ -262,7 +262,7 @@ public & Versioned> void testNotEnoughParametersForPostProces @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testTooManyParametersForPostProcess(Class annotationClass, + public & ComponentVersion> void testTooManyParametersForPostProcess(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(postProcess(), aReqType(), annotationClass, version), @@ -279,7 +279,7 @@ public & Versioned> void testTooManyParametersForPostProcess( @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testWrongReturnValueForPreProcess(Class annotationClass, + public & ComponentVersion> void testWrongReturnValueForPreProcess(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(preProcess(), aReqType(), annotationClass, version), @@ -294,7 +294,7 @@ public & Versioned> void testWrongReturnValueForPreProcess(Cl @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testWrongReturnValueForPostProcess(Class annotationClass, + public & ComponentVersion> void testWrongReturnValueForPostProcess(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(postProcess(), aReqType(), annotationClass, version), @@ -309,7 +309,7 @@ public & Versioned> void testWrongReturnValueForPostProcess(C @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testWrongFirstArgumentForPreProcess(Class annotationClass, + public & ComponentVersion> void testWrongFirstArgumentForPreProcess(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(preProcess(), aReqType(), annotationClass, version), @@ -324,7 +324,7 @@ public & Versioned> void testWrongFirstArgumentForPreProcess( @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testWrongFirstArgumentForPostProcess(Class annotationClass, + public & ComponentVersion> void testWrongFirstArgumentForPostProcess(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(postProcess(), aReqType(), annotationClass, version), @@ -339,7 +339,7 @@ public & Versioned> void testWrongFirstArgumentForPostProcess @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testWrongSecondArgumentForPreProcess(Class annotationClass, + public & ComponentVersion> void testWrongSecondArgumentForPreProcess(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(preProcess(), aReqType(), annotationClass, version), @@ -354,7 +354,7 @@ public & Versioned> void testWrongSecondArgumentForPreProcess @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testWrongSecondArgumentForPostProcess(Class annotationClass, + public & ComponentVersion> void testWrongSecondArgumentForPostProcess(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(postProcess(), aReqType(), annotationClass, version), @@ -369,7 +369,7 @@ public & Versioned> void testWrongSecondArgumentForPostProces @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testWrongThirdArgumentForPostProcess(Class annotationClass, + public & ComponentVersion> void testWrongThirdArgumentForPostProcess(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(postProcess(), aReqType(), annotationClass, version), @@ -384,7 +384,7 @@ public & Versioned> void testWrongThirdArgumentForPostProcess @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testInvalidProcessingPhase(Class annotationClass, + public & ComponentVersion> void testInvalidProcessingPhase(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf("INVALID", aReqType(), annotationClass, version), @@ -398,7 +398,7 @@ public & Versioned> void testInvalidProcessingPhase(Class @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testInvalidClientVersion(Class annotationClass, + public & ComponentVersion> void testInvalidClientVersion(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(RequestProcessingPhase.PRE_PROCESS, aReqType(), annotationClass, null), @@ -412,7 +412,7 @@ public & Versioned> void testInvalidClientVersion(Class an @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> void testMultipleErrorMessages(Class annotationClass, + public & ComponentVersion> void testMultipleErrorMessages(Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(postProcess(), aReqType(), annotationClass, version), @@ -493,12 +493,12 @@ private List generateSourceOfValidatorMethodWith( return lines; } - private & Versioned> String annotationOf( + private & ComponentVersion> String annotationOf( RequestProcessingPhase phase, Type reqType, Class annotationClass, V applyBeforeVersion) { return annotationOf(phase.name(), reqType, annotationClass, applyBeforeVersion); } - private & Versioned> String annotationOf( + private & ComponentVersion> String annotationOf( String phase, Type reqType, Class annotationClass, diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/validation/TestVersionExtractor.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/validation/TestVersionExtractor.java index 73732ea5f23d..ba971e5bea31 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/validation/TestVersionExtractor.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/validation/TestVersionExtractor.java @@ -24,8 +24,8 @@ import com.google.common.collect.ImmutableMap; import java.lang.annotation.Annotation; import java.util.Map; +import org.apache.hadoop.hdds.ComponentVersion; import org.apache.hadoop.ozone.ClientVersion; -import org.apache.hadoop.ozone.Versioned; import org.apache.hadoop.ozone.om.exceptions.OMException; import org.apache.hadoop.ozone.om.upgrade.OMLayoutFeature; import org.apache.hadoop.ozone.om.upgrade.OMLayoutVersionManager; @@ -44,7 +44,8 @@ void testLayoutVersionExtractor(OMLayoutFeature layoutVersionValue) throws OMExc ValidationContext context = mock(ValidationContext.class); LayoutVersionManager layoutVersionManager = new OMLayoutVersionManager(layoutVersionValue.serialize()); when(context.versionManager()).thenReturn(layoutVersionManager); - Versioned version = VersionExtractor.LAYOUT_VERSION_EXTRACTOR.extractVersion(null, context); + ComponentVersion version = + VersionExtractor.LAYOUT_VERSION_EXTRACTOR.extractVersion(null, context); assertEquals(layoutVersionValue, version); } @@ -53,7 +54,8 @@ void testLayoutVersionExtractor(OMLayoutFeature layoutVersionValue) throws OMExc void testClientVersionExtractor(ClientVersion expectedClientVersion) { OMRequest request = mock(OMRequest.class); when(request.getVersion()).thenReturn(expectedClientVersion.serialize()); - Versioned version = VersionExtractor.CLIENT_VERSION_EXTRACTOR.extractVersion(request, null); + ComponentVersion version = + VersionExtractor.CLIENT_VERSION_EXTRACTOR.extractVersion(request, null); assertEquals(expectedClientVersion, version); } @@ -62,7 +64,8 @@ void testClientVersionExtractor(ClientVersion expectedClientVersion) { void testClientVersionExtractorForFutureValues(int futureVersion) { OMRequest request = mock(OMRequest.class); when(request.getVersion()).thenReturn(ClientVersion.CURRENT_VERSION + futureVersion); - Versioned version = VersionExtractor.CLIENT_VERSION_EXTRACTOR.extractVersion(request, null); + ComponentVersion version = + VersionExtractor.CLIENT_VERSION_EXTRACTOR.extractVersion(request, null); assertEquals(ClientVersion.FUTURE_VERSION, version); } From 2a4351888c086f6f2fbd0f4bb6ce12cfcd9d19e8 Mon Sep 17 00:00:00 2001 From: Ethan Rose Date: Wed, 25 Feb 2026 18:42:00 -0500 Subject: [PATCH 8/8] Checkstyle --- .../om/request/file/TestOMDirectoryCreateRequest.java | 1 - .../file/TestOMDirectoryCreateRequestWithFSO.java | 1 - .../hadoop/ozone/om/request/key/TestOMKeyRequest.java | 2 +- .../request/s3/tenant/TestOMTenantCreateRequest.java | 1 - .../request/validation/TestOMValidatorProcessor.java | 10 ++++++---- .../om/snapshot/TestSnapshotRequestAndResponse.java | 1 - 6 files changed, 7 insertions(+), 9 deletions(-) diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/file/TestOMDirectoryCreateRequest.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/file/TestOMDirectoryCreateRequest.java index 8d3c02c40472..04351d3f8299 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/file/TestOMDirectoryCreateRequest.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/file/TestOMDirectoryCreateRequest.java @@ -29,7 +29,6 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.any; -import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.framework; import static org.mockito.Mockito.mock; diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/file/TestOMDirectoryCreateRequestWithFSO.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/file/TestOMDirectoryCreateRequestWithFSO.java index 658120e25e7a..fd125563825d 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/file/TestOMDirectoryCreateRequestWithFSO.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/file/TestOMDirectoryCreateRequestWithFSO.java @@ -27,7 +27,6 @@ import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.any; -import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.framework; import static org.mockito.Mockito.mock; diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java index 3ce8db695eb4..8643802723ec 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java @@ -84,10 +84,10 @@ import org.apache.hadoop.ozone.om.request.snapshot.TestOMSnapshotCreateRequest; import org.apache.hadoop.ozone.om.response.snapshot.OMSnapshotCreateResponse; import org.apache.hadoop.ozone.om.upgrade.OMLayoutVersionManager; -import org.apache.hadoop.ozone.upgrade.LayoutFeature; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.KeyArgs; import org.apache.hadoop.ozone.security.acl.OzoneNativeAuthorizer; +import org.apache.hadoop.ozone.upgrade.LayoutFeature; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.util.Time; import org.apache.ozone.test.GenericTestUtils; diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/tenant/TestOMTenantCreateRequest.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/tenant/TestOMTenantCreateRequest.java index ee4b516c7931..713bf6b621d9 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/tenant/TestOMTenantCreateRequest.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/tenant/TestOMTenantCreateRequest.java @@ -22,7 +22,6 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.any; -import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.framework; diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/validation/TestOMValidatorProcessor.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/validation/TestOMValidatorProcessor.java index affc405afc61..d487cdf216ee 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/validation/TestOMValidatorProcessor.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/validation/TestOMValidatorProcessor.java @@ -101,8 +101,9 @@ public & ComponentVersion> void testAnnotationCanOnlyBeApplie @ParameterizedTest @MethodSource("annotatedClasses") - public & ComponentVersion> void testACorrectAnnotationSetupForPreProcessCompiles(Class annotationClass, - V version) { + public & ComponentVersion> void + testACorrectAnnotationSetupForPreProcessCompiles( + Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(preProcess(), aReqType(), annotationClass, version), modifiers("public", "static"), @@ -129,8 +130,9 @@ public & ComponentVersion> void testACorrectAnnotationSetupFo @ParameterizedTest @MethodSource("annotatedClasses") - public & ComponentVersion> void testValidatorDoesNotNecessarilyThrowsExceptions(Class annotationClass, - V version) { + public & ComponentVersion> void + testValidatorDoesNotNecessarilyThrowsExceptions( + Class annotationClass, V version) { List source = generateSourceOfValidatorMethodWith( annotationOf(preProcess(), aReqType(), annotationClass, version), modifiers("public", "static"), diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestSnapshotRequestAndResponse.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestSnapshotRequestAndResponse.java index 883ae397802c..3653a324a975 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestSnapshotRequestAndResponse.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestSnapshotRequestAndResponse.java @@ -22,7 +22,6 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.framework; import static org.mockito.Mockito.mock;