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 f486d5096bc4..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,28 +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 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. - * @return the version associated with the enum value. - */ - int toProtoValue(); - - @Override - default int version() { - 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 c6cf9af4069c..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,10 +60,15 @@ public String description() { } @Override - public int toProtoValue() { + public int serialize() { return version; } + @Override + public String toString() { + return name() + " (" + serialize() + ")"; + } + 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/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/hdds/upgrade/HDDSLayoutFeature.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeature.java index 0d45298da8be..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 @@ -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() + " (" + serialize() + ")"; + } + public Optional scmAction() { return Optional.ofNullable(scmAction); } 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/ClientVersion.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/ClientVersion.java index b84513531631..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,17 +66,22 @@ public String description() { } @Override - public int toProtoValue() { + public int serialize() { return version; } + @Override + public String toString() { + return name() + " (" + serialize() + ")"; + } + public static ClientVersion fromProtoValue(int value) { return BY_PROTO_VALUE.getOrDefault(value, FUTURE_VERSION); } 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 41cf8ab28560..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,10 +78,15 @@ public String description() { } @Override - public int toProtoValue() { + public int serialize() { return version; } + @Override + public String toString() { + return name() + " (" + serialize() + ")"; + } + public static OzoneManagerVersion fromProtoValue(int value) { return BY_PROTO_VALUE.getOrDefault(value, FUTURE_VERSION); } 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..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,39 +17,16 @@ package org.apache.hadoop.ozone.upgrade; -import java.util.Optional; -import org.apache.hadoop.ozone.Versioned; +import org.apache.hadoop.hdds.ComponentVersion; /** * Generic Layout feature interface for Ozone. */ -public interface LayoutFeature extends Versioned { - String name(); - +public interface LayoutFeature extends ComponentVersion { int layoutVersion(); - String description(); - - 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() { + default int serialize() { return this.layoutVersion(); } } 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/upgrade/UpgradeAction.java similarity index 68% rename from hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/Versioned.java rename to hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/UpgradeAction.java index 136edeaf2a0a..44765802e2cb 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/upgrade/UpgradeAction.java @@ -15,11 +15,18 @@ * limitations under the License. */ -package org.apache.hadoop.ozone; +package org.apache.hadoop.ozone.upgrade; /** - * Base class defining the version in the entire system. + * 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 Versioned { - int version(); +public interface UpgradeAction { + + default String name() { + return getClass().getSimpleName(); + } + + void execute(T arg) throws Exception; } 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/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 2c5be227f856..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 @@ -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; @@ -259,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/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-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-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..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 @@ -86,6 +86,11 @@ public String description() { return null; } + @Override + public String toString() { + return name() + " (" + serialize() + ")"; + } + public void addAction(UpgradeAction upgradeAction) { this.action = upgradeAction; } 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/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/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/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..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 @@ -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() + " (" + serialize() + ")"; + } + /** * Associates a given upgrade action with this feature. Only the first upgrade action registered will be used. * 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/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. 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..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; @@ -69,6 +68,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 +112,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..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; @@ -69,6 +68,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 +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/key/TestOMKeyRequest.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java index b84294370c58..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 @@ -87,6 +87,7 @@ 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; @@ -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..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; @@ -54,6 +53,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 +83,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/request/validation/TestOMValidatorProcessor.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/validation/TestOMValidatorProcessor.java index 677a722bfe17..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 @@ -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,8 +101,9 @@ public & Versioned> void testAnnotationCanOnlyBeAppliedOnMeth @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> 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"), @@ -115,7 +116,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,8 +130,9 @@ public & Versioned> void testACorrectAnnotationSetupForPostPr @ParameterizedTest @MethodSource("annotatedClasses") - public & Versioned> 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"), @@ -143,7 +145,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 +160,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 +174,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 +188,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 +202,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 +216,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 +232,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 +248,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 +264,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 +281,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 +296,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 +311,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 +326,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 +341,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 +356,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 +371,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 +386,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 +400,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 +414,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 +495,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 80133cf5de84..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; @@ -42,9 +42,10 @@ 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); + ComponentVersion version = + VersionExtractor.LAYOUT_VERSION_EXTRACTOR.extractVersion(null, context); assertEquals(layoutVersionValue, version); } @@ -52,8 +53,9 @@ void testLayoutVersionExtractor(OMLayoutFeature layoutVersionValue) throws OMExc @EnumSource(ClientVersion.class) void testClientVersionExtractor(ClientVersion expectedClientVersion) { OMRequest request = mock(OMRequest.class); - when(request.getVersion()).thenReturn(expectedClientVersion.version()); - Versioned version = VersionExtractor.CLIENT_VERSION_EXTRACTOR.extractVersion(request, null); + when(request.getVersion()).thenReturn(expectedClientVersion.serialize()); + 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); } 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..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; @@ -69,6 +68,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 +167,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; }