This is an automated email from the ASF dual-hosted git repository.

errose28 pushed a commit to branch HDDS-14496-zdu
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/HDDS-14496-zdu by this push:
     new 97b60475a4c HDDS-15386. Remove LayoutFeature interface (#10376)
97b60475a4c is described below

commit 97b60475a4c0f31d328d01cd71fb7566ba114f5d
Author: Ethan Rose <[email protected]>
AuthorDate: Thu Jun 11 17:53:15 2026 -0400

    HDDS-15386. Remove LayoutFeature interface (#10376)
    
    Co-authored-by: Cursor <[email protected]>
---
 .../apache/hadoop/ozone/upgrade/LayoutFeature.java | 32 --------------------
 .../ozone/container/common/DatanodeStorage.java    |  7 ++---
 .../container/common/TestDatanodeStateMachine.java |  2 +-
 .../common/helpers/TestDatanodeIdYaml.java         |  8 ++---
 .../TestDatanodeStartupInvalidApparentVersion.java |  2 +-
 .../TestDatanodeUpgradeToContainerIdsTable.java    |  4 +--
 .../upgrade/TestDatanodeUpgradeToHBaseSupport.java |  4 +--
 .../upgrade/TestDatanodeUpgradeToSchemaV3.java     | 34 +++++++++++-----------
 .../hadoop/hdds/upgrade/HDDSLayoutFeature.java     |  5 ++--
 .../hadoop/hdds/upgrade/TestHDDSLayoutFeature.java |  8 ++---
 .../hadoop/hdds/scm/server/SCMStorageConfig.java   |  4 +--
 .../TestScmStartupInvalidApparentVersion.java      |  2 +-
 .../ozone/container/common/TestEndPoint.java       |  2 +-
 .../schemaupgrade/TestUpgradeContainerSchema.java  |  2 +-
 .../apache/hadoop/fs/ozone/TestHSyncUpgrade.java   |  2 +-
 .../TestDNDataDistributionFinalization.java        |  4 +--
 .../TestScmDataDistributionFinalization.java       |  4 +--
 .../hadoop/hdds/upgrade/TestScmHAFinalization.java |  4 +--
 .../hadoop/ozone/om/TestOMUpgradeFinalization.java |  2 +-
 .../om/TestOmStartupInvalidApparentVersion.java    |  2 +-
 .../om/multitenant/TestMultiTenantVolume.java      |  2 +-
 .../ozone/om/service/TestBlockDeletionService.java |  4 +--
 .../hadoop/ozone/om/snapshot/TestOmSnapshot.java   |  2 +-
 .../hadoop/ozone/UniformDatanodesFactory.java      | 26 +++++------------
 .../hadoop/ozone/om/upgrade/OMLayoutFeature.java   |  5 ++--
 .../ozone/om/upgrade/OMLayoutFeatureAspect.java    |  6 ++--
 .../ozone/om/upgrade/TestOMLayoutFeature.java      |  8 ++---
 27 files changed, 70 insertions(+), 117 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
deleted file mode 100644
index 7f7374c8137..00000000000
--- 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/LayoutFeature.java
+++ /dev/null
@@ -1,32 +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.upgrade;
-
-import org.apache.hadoop.hdds.ComponentVersion;
-
-/**
- * Generic Layout feature interface for Ozone.
- */
-public interface LayoutFeature extends ComponentVersion {
-  int layoutVersion();
-
-  @Override
-  default int serialize() {
-    return this.layoutVersion();
-  }
-}
diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/DatanodeStorage.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/DatanodeStorage.java
index fe267783437..a6d012a7f65 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/DatanodeStorage.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/DatanodeStorage.java
@@ -46,11 +46,10 @@ public DatanodeStorage(ConfigurationSource conf, String 
dataNodeId)
         DATANODE_LAYOUT_VERSION_DIR, dataNodeId, 
getDefaultApparentVersion(conf));
   }
 
-  public DatanodeStorage(OzoneConfiguration conf, String dataNodeId,
-                         int layoutVersion)
+  public DatanodeStorage(OzoneConfiguration conf, String dataNodeId, int 
apparentVersion)
       throws IOException {
     super(NodeType.DATANODE, ServerUtils.getOzoneMetaDirPath(conf),
-        DATANODE_LAYOUT_VERSION_DIR, dataNodeId, layoutVersion);
+        DATANODE_LAYOUT_VERSION_DIR, dataNodeId, apparentVersion);
   }
 
   public DatanodeStorage(ConfigurationSource conf)
@@ -99,7 +98,7 @@ private static int 
getDefaultApparentVersion(ConfigurationSource conf) {
 
     File dnIdFile = new File(HddsServerUtil.getDatanodeIdFilePath(conf));
     if (dnIdFile.exists()) {
-      defaultApparentVersion = 
HDDSLayoutFeature.INITIAL_VERSION.layoutVersion();
+      defaultApparentVersion = HDDSLayoutFeature.INITIAL_VERSION.serialize();
     }
 
     return defaultApparentVersion;
diff --git 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/TestDatanodeStateMachine.java
 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/TestDatanodeStateMachine.java
index 1019fae622b..f47fde132c9 100644
--- 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/TestDatanodeStateMachine.java
+++ 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/TestDatanodeStateMachine.java
@@ -231,7 +231,7 @@ public void testDatanodeStateContext() throws IOException,
 
       DatanodeStorage layoutStorage = new DatanodeStorage(conf,
           UUID.randomUUID().toString(),
-          HDDSLayoutFeature.DATANODE_SCHEMA_V3.layoutVersion());
+          HDDSLayoutFeature.DATANODE_SCHEMA_V3.serialize());
       layoutStorage.initialize();
 
       // This execute will invoke getVersion calls against all SCM endpoints
diff --git 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/helpers/TestDatanodeIdYaml.java
 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/helpers/TestDatanodeIdYaml.java
index 334e08ad117..27b4e1c135b 100644
--- 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/helpers/TestDatanodeIdYaml.java
+++ 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/helpers/TestDatanodeIdYaml.java
@@ -62,7 +62,7 @@ void 
testWriteReadBeforeRatisDatastreamPortLayoutVersion(@TempDir File dir)
     conf.set(HddsConfigKeys.OZONE_METADATA_DIRS, dir.toString());
     DatanodeStorage layoutStorage = new DatanodeStorage(conf,
         UUID.randomUUID().toString(),
-        HDDSLayoutFeature.DATANODE_SCHEMA_V3.layoutVersion());
+        HDDSLayoutFeature.DATANODE_SCHEMA_V3.serialize());
     layoutStorage.initialize();
 
     DatanodeIdYaml.createDatanodeIdFile(original, file, conf);
@@ -86,7 +86,7 @@ void 
testWriteReadAfterRatisDatastreamPortLayoutVersion(@TempDir File dir)
     DatanodeStorage layoutStorage = new DatanodeStorage(conf,
         UUID.randomUUID().toString(),
         HDDSLayoutFeature.RATIS_DATASTREAM_PORT_IN_DATANODEDETAILS
-            .layoutVersion());
+            .serialize());
     layoutStorage.initialize();
 
     DatanodeIdYaml.createDatanodeIdFile(original, file, conf);
@@ -106,7 +106,7 @@ void testWriteReadBeforeWebUIPortLayoutVersion(@TempDir 
File dir)
     conf.set(HddsConfigKeys.OZONE_METADATA_DIRS, dir.toString());
     DatanodeStorage layoutStorage = new DatanodeStorage(conf,
         UUID.randomUUID().toString(),
-        HDDSLayoutFeature.DATANODE_SCHEMA_V3.layoutVersion());
+        HDDSLayoutFeature.DATANODE_SCHEMA_V3.serialize());
     layoutStorage.initialize();
 
     DatanodeIdYaml.createDatanodeIdFile(original, file, conf);
@@ -127,7 +127,7 @@ void testWriteReadAfterWebUIPortLayoutVersion(@TempDir File 
dir)
     conf.set(HddsConfigKeys.OZONE_METADATA_DIRS, dir.toString());
     DatanodeStorage layoutStorage = new DatanodeStorage(conf,
         UUID.randomUUID().toString(),
-        HDDSLayoutFeature.WEBUI_PORTS_IN_DATANODEDETAILS.layoutVersion());
+        HDDSLayoutFeature.WEBUI_PORTS_IN_DATANODEDETAILS.serialize());
     layoutStorage.initialize();
 
     DatanodeIdYaml.createDatanodeIdFile(original, file, conf);
diff --git 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDatanodeStartupInvalidApparentVersion.java
 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDatanodeStartupInvalidApparentVersion.java
index ccc94d9aa2c..3cf2b1c2b7c 100644
--- 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDatanodeStartupInvalidApparentVersion.java
+++ 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDatanodeStartupInvalidApparentVersion.java
@@ -48,7 +48,7 @@ public class TestDatanodeStartupInvalidApparentVersion {
   public void 
testStartupFailsWhenApparentVersionBetweenLastLayoutFeatureAndZdu()
       throws Exception {
     assertStartupFailsWithComponentVersionMessage(
-        HDDSLayoutFeature.STORAGE_SPACE_DISTRIBUTION.layoutVersion() + 1);
+        HDDSLayoutFeature.STORAGE_SPACE_DISTRIBUTION.serialize() + 1);
   }
 
   @Test
diff --git 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDatanodeUpgradeToContainerIdsTable.java
 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDatanodeUpgradeToContainerIdsTable.java
index 86deef6fae0..a2d158c01d0 100644
--- 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDatanodeUpgradeToContainerIdsTable.java
+++ 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDatanodeUpgradeToContainerIdsTable.java
@@ -85,7 +85,7 @@ public void testContainerTableAccessBeforeAndAfterUpgrade() 
throws Exception {
     InetSocketAddress address = scmRpcServer.getListenerAddress();
     UpgradeTestHelper.addHddsVolume(conf, tempFolder);
     dsm = UpgradeTestHelper.startPreFinalizedDatanode(conf, tempFolder, dsm, 
address,
-        HDDSLayoutFeature.HBASE_SUPPORT.layoutVersion());
+        HDDSLayoutFeature.HBASE_SUPPORT.serialize());
     ContainerDispatcher dispatcher = dsm.getContainer().getDispatcher();
     final Pipeline pipeline = 
MockPipeline.createPipeline(Collections.singletonList(dsm.getDatanodeDetails()));
 
@@ -122,7 +122,7 @@ public void testContainerTableFinalizeRetry() throws 
Exception {
     InetSocketAddress address = scmRpcServer.getListenerAddress();
     UpgradeTestHelper.addHddsVolume(conf, tempFolder);
     dsm = UpgradeTestHelper.startPreFinalizedDatanode(conf, tempFolder, dsm, 
address,
-        HDDSLayoutFeature.HBASE_SUPPORT.layoutVersion());
+        HDDSLayoutFeature.HBASE_SUPPORT.serialize());
     ContainerDispatcher dispatcher = dsm.getContainer().getDispatcher();
     final Pipeline pipeline = 
MockPipeline.createPipeline(Collections.singletonList(dsm.getDatanodeDetails()));
 
diff --git 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDatanodeUpgradeToHBaseSupport.java
 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDatanodeUpgradeToHBaseSupport.java
index 11bec6a5dd1..e1061c1372e 100644
--- 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDatanodeUpgradeToHBaseSupport.java
+++ 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDatanodeUpgradeToHBaseSupport.java
@@ -83,7 +83,7 @@ public void testIncrementalChunkListBeforeAndAfterUpgrade() 
throws Exception {
     InetSocketAddress address = scmRpcServer.getListenerAddress();
     UpgradeTestHelper.addHddsVolume(conf, tempFolder);
     dsm = UpgradeTestHelper.startPreFinalizedDatanode(conf, tempFolder, dsm, 
address,
-        HDDSLayoutFeature.HADOOP_PRC_PORTS_IN_DATANODEDETAILS.layoutVersion());
+        HDDSLayoutFeature.HADOOP_PRC_PORTS_IN_DATANODEDETAILS.serialize());
     ContainerDispatcher dispatcher = dsm.getContainer().getDispatcher();
     final Pipeline pipeline = MockPipeline.createPipeline(
         Collections.singletonList(dsm.getDatanodeDetails()));
@@ -118,7 +118,7 @@ public void testBlockFinalizationBeforeAndAfterUpgrade() 
throws Exception {
     InetSocketAddress address = scmRpcServer.getListenerAddress();
     UpgradeTestHelper.addHddsVolume(conf, tempFolder);
     dsm = UpgradeTestHelper.startPreFinalizedDatanode(conf, tempFolder, dsm, 
address,
-        HDDSLayoutFeature.HADOOP_PRC_PORTS_IN_DATANODEDETAILS.layoutVersion());
+        HDDSLayoutFeature.HADOOP_PRC_PORTS_IN_DATANODEDETAILS.serialize());
     ContainerDispatcher dispatcher = dsm.getContainer().getDispatcher();
     final Pipeline pipeline = MockPipeline.createPipeline(
         Collections.singletonList(dsm.getDatanodeDetails()));
diff --git 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDatanodeUpgradeToSchemaV3.java
 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDatanodeUpgradeToSchemaV3.java
index 3747514a95c..a7dce076a75 100644
--- 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDatanodeUpgradeToSchemaV3.java
+++ 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/upgrade/TestDatanodeUpgradeToSchemaV3.java
@@ -121,7 +121,7 @@ public void testDBOnHddsVolume(boolean schemaV3Enabled) 
throws Exception {
     UpgradeTestHelper.addHddsVolume(conf, tempFolder);
 
     dsm = UpgradeTestHelper.startPreFinalizedDatanode(conf, tempFolder, dsm, 
address,
-        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.layoutVersion());
+        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.serialize());
     HddsVolume dataVolume = (HddsVolume) dsm.getContainer().getVolumeSet()
         .getVolumesList().get(0);
     assertNull(dataVolume.getDbVolume());
@@ -159,7 +159,7 @@ public void testDBOnDbVolume(boolean schemaV3Enabled) 
throws Exception {
     UpgradeTestHelper.addDbVolume(conf, tempFolder);
 
     dsm = UpgradeTestHelper.startPreFinalizedDatanode(conf, tempFolder, dsm, 
address,
-        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.layoutVersion());
+        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.serialize());
     HddsVolume dataVolume = (HddsVolume) dsm.getContainer().getVolumeSet()
         .getVolumesList().get(0);
     assertNull(dataVolume.getDbParentDir());
@@ -202,7 +202,7 @@ public void testDBCreatedInFinalize(boolean schemaV3Enabled)
     // Set layout version.
     DatanodeStorage layoutStorage = new DatanodeStorage(conf,
         UUID.randomUUID().toString(),
-        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.layoutVersion());
+        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.serialize());
     layoutStorage.initialize();
     dsm = new DatanodeStateMachine(
         ContainerTestUtils.createDatanodeDetails(), conf);
@@ -219,7 +219,7 @@ public void testDBCreatedInFinalize(boolean schemaV3Enabled)
 
     // Restart DN and finalize upgrade
     dsm = UpgradeTestHelper.restartDatanode(conf, dsm, false, tempFolder, 
address,
-        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.layoutVersion(), true);
+        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.serialize(), true);
     dsm.getVersionManager().finalizeUpgrade();
 
     // RocksDB is created by upgrade action
@@ -249,7 +249,7 @@ public void testFinalizeTwice(boolean schemaV3Enabled) 
throws Exception {
     UpgradeTestHelper.addDbVolume(conf, tempFolder);
 
     dsm = UpgradeTestHelper.startPreFinalizedDatanode(conf, tempFolder, dsm, 
address,
-        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.layoutVersion());
+        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.serialize());
     dsm.getVersionManager().finalizeUpgrade();
 
     DbVolume dbVolume = ((HddsVolume) dsm.getContainer().getVolumeSet()
@@ -276,13 +276,13 @@ public void testAddHddsVolumeAfterFinalize(boolean 
schemaV3Enabled)
     UpgradeTestHelper.addHddsVolume(conf, tempFolder);
 
     dsm = UpgradeTestHelper.startPreFinalizedDatanode(conf, tempFolder, dsm, 
address,
-        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.layoutVersion());
+        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.serialize());
     dsm.getVersionManager().finalizeUpgrade();
 
     // Add a new HddsVolume. It should have DB created after DN restart.
     UpgradeTestHelper.addHddsVolume(conf, tempFolder);
     dsm = UpgradeTestHelper.restartDatanode(conf, dsm, false, tempFolder, 
address,
-        HDDSLayoutFeature.DATANODE_SCHEMA_V3.layoutVersion(),
+        HDDSLayoutFeature.DATANODE_SCHEMA_V3.serialize(),
         false);
     for (StorageVolume vol:
         dsm.getContainer().getVolumeSet().getVolumesList()) {
@@ -310,7 +310,7 @@ public void testAddDbVolumeAfterFinalize(boolean 
schemaV3Enabled)
     UpgradeTestHelper.addHddsVolume(conf, tempFolder);
 
     dsm = UpgradeTestHelper.startPreFinalizedDatanode(conf, tempFolder, dsm, 
address,
-        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.layoutVersion());
+        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.serialize());
     HddsVolume hddsVolume = (HddsVolume) dsm.getContainer().getVolumeSet()
         .getVolumesList().get(0);
     assertNull(hddsVolume.getDbParentDir());
@@ -323,7 +323,7 @@ public void testAddDbVolumeAfterFinalize(boolean 
schemaV3Enabled)
     // Add a new DbVolume
     UpgradeTestHelper.addDbVolume(conf, tempFolder);
     dsm = UpgradeTestHelper.restartDatanode(conf, dsm, false, tempFolder, 
address,
-        HDDSLayoutFeature.DATANODE_SCHEMA_V3.layoutVersion(),
+        HDDSLayoutFeature.DATANODE_SCHEMA_V3.serialize(),
         false);
 
     // HddsVolume should still use the rocksDB under it's volume
@@ -353,13 +353,13 @@ public void testAddDbAndHddsVolumeAfterFinalize(boolean 
schemaV3Enabled)
     UpgradeTestHelper.addHddsVolume(conf, tempFolder);
 
     dsm = UpgradeTestHelper.startPreFinalizedDatanode(conf, tempFolder, dsm, 
address,
-        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.layoutVersion());
+        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.serialize());
     dsm.getVersionManager().finalizeUpgrade();
 
     UpgradeTestHelper.addDbVolume(conf, tempFolder);
     File newDataVolume = UpgradeTestHelper.addHddsVolume(conf, tempFolder);
     dsm = UpgradeTestHelper.restartDatanode(conf, dsm, false, tempFolder, 
address,
-        HDDSLayoutFeature.DATANODE_SCHEMA_V3.layoutVersion(),
+        HDDSLayoutFeature.DATANODE_SCHEMA_V3.serialize(),
         false);
 
     DbVolume dbVolume = (DbVolume) dsm.getContainer().getDbVolumeSet()
@@ -422,7 +422,7 @@ public void testWrite(boolean enable, String 
expectedVersion)
     // Disable Schema V3
     conf.setBoolean(DatanodeConfiguration.CONTAINER_SCHEMA_V3_ENABLED, false);
     dsm = UpgradeTestHelper.startPreFinalizedDatanode(conf, tempFolder, dsm, 
address,
-        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.layoutVersion());
+        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.serialize());
     ContainerDispatcher dispatcher = dsm.getContainer().getDispatcher();
     dsm.getVersionManager().finalizeUpgrade();
 
@@ -442,7 +442,7 @@ public void testWrite(boolean enable, String 
expectedVersion)
     conf.setBoolean(DatanodeConfiguration.CONTAINER_SCHEMA_V3_ENABLED,
         enable);
     dsm = UpgradeTestHelper.restartDatanode(conf, dsm, false, tempFolder, 
address,
-        HDDSLayoutFeature.DATANODE_SCHEMA_V3.layoutVersion(),
+        HDDSLayoutFeature.DATANODE_SCHEMA_V3.serialize(),
         false);
     dispatcher = dsm.getContainer().getDispatcher();
 
@@ -471,7 +471,7 @@ public void testReadsDuringFinalize(boolean schemaV3Enabled)
     InetSocketAddress address = scmRpcServer.getListenerAddress();
     UpgradeTestHelper.addHddsVolume(conf, tempFolder);
     dsm = UpgradeTestHelper.startPreFinalizedDatanode(conf, tempFolder, dsm, 
address,
-        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.layoutVersion());
+        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.serialize());
     ContainerDispatcher dispatcher = dsm.getContainer().getDispatcher();
     final Pipeline pipeline = MockPipeline.createPipeline(
         Collections.singletonList(dsm.getDatanodeDetails()));
@@ -516,7 +516,7 @@ public void testFinalizeFailure(boolean schemaV3Enabled) 
throws Exception {
     // Set layout version.
     DatanodeStorage layoutStorage = new DatanodeStorage(conf,
         UUID.randomUUID().toString(),
-        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.layoutVersion());
+        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.serialize());
     layoutStorage.initialize();
     dsm = new DatanodeStateMachine(
         ContainerTestUtils.createDatanodeDetails(), conf);
@@ -532,7 +532,7 @@ public void testFinalizeFailure(boolean schemaV3Enabled) 
throws Exception {
 
     // Restart DN
     dsm = UpgradeTestHelper.restartDatanode(conf, dsm, false, tempFolder, 
address,
-        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.layoutVersion(), true);
+        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.serialize(), true);
     ContainerDispatcher dispatcher = dsm.getContainer().getDispatcher();
 
     // Write some data.
@@ -572,7 +572,7 @@ public void testFinalizeFailure(boolean schemaV3Enabled) 
throws Exception {
 
     // SchemaV3 is not finalized, so still ERASURE_CODED_STORAGE_SUPPORT
     dsm = UpgradeTestHelper.restartDatanode(conf, dsm, false, tempFolder, 
address,
-        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.layoutVersion(), true);
+        HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT.serialize(), true);
     dispatcher = dsm.getContainer().getDispatcher();
 
     // Old data is readable after DN restart
diff --git 
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeature.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeature.java
index 9978787e43d..96fa5a89897 100644
--- 
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeature.java
+++ 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/upgrade/HDDSLayoutFeature.java
@@ -25,14 +25,13 @@
 import java.util.TreeMap;
 import org.apache.hadoop.hdds.ComponentVersion;
 import org.apache.hadoop.hdds.HDDSVersion;
-import org.apache.hadoop.ozone.upgrade.LayoutFeature;
 
 /**
  * List of HDDS Layout Features. All version management has been migrated to 
{@link HDDSVersion} and no new additions
  * should be made to this class. Existing versions are kept here for backwards 
compatibility when upgrading to this
  * version from older versions.
  */
-public enum HDDSLayoutFeature implements LayoutFeature {
+public enum HDDSLayoutFeature implements ComponentVersion {
   //////////////////////////////  //////////////////////////////
   INITIAL_VERSION(0, "Initial Layout Version"),
   DATANODE_SCHEMA_V2(1, "Datanode RocksDB Schema Version 2 (with column " +
@@ -70,7 +69,7 @@ public enum HDDSLayoutFeature implements LayoutFeature {
   }
 
   @Override
-  public int layoutVersion() {
+  public int serialize() {
     return layoutVersion;
   }
 
diff --git 
a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/upgrade/TestHDDSLayoutFeature.java
 
b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/upgrade/TestHDDSLayoutFeature.java
index b8a0662d31a..20b943065f5 100644
--- 
a/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/upgrade/TestHDDSLayoutFeature.java
+++ 
b/hadoop-hdds/framework/src/test/java/org/apache/hadoop/hdds/upgrade/TestHDDSLayoutFeature.java
@@ -37,9 +37,9 @@ public void 
testHDDSLayoutFeaturesHaveIncreasingLayoutVersion() {
     for (HDDSLayoutFeature lf : values) {
       // This will skip the jump from the last HDDSLayoutFeature to 
HDDSVersion#ZDU,
       // since that is expected to be a larger version increment.
-      assertEquals(currVersion + 1, lf.layoutVersion(),
+      assertEquals(currVersion + 1, lf.serialize(),
           "Expected monotonically increasing layout version for " + lf);
-      currVersion = lf.layoutVersion();
+      currVersion = lf.serialize();
     }
   }
 
@@ -52,7 +52,7 @@ public void testNoNewHDDSLayoutFeaturesAdded() {
     HDDSLayoutFeature lastFeature = 
HDDSLayoutFeature.values()[numHDDSLayoutFeatures - 1];
     assertEquals(11, numHDDSLayoutFeatures);
     assertEquals(HDDSLayoutFeature.STORAGE_SPACE_DISTRIBUTION, lastFeature);
-    assertEquals(10, lastFeature.layoutVersion());
+    assertEquals(10, lastFeature.serialize());
   }
 
   @Test
@@ -87,7 +87,7 @@ public void testDeserializeUnknownVersionReturnsNull() {
   public void testIsSupportedByFeatureBoundary() {
     for (HDDSLayoutFeature feature : HDDSLayoutFeature.values()) {
       // A layout feature should support itself.
-      int layoutVersion = feature.layoutVersion();
+      int layoutVersion = feature.serialize();
       assertSupportedBy(feature, feature);
       if (layoutVersion > 0) {
         // A layout feature should not be supported by older features.
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMStorageConfig.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMStorageConfig.java
index 75d2c557b64..3f42861777e 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMStorageConfig.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMStorageConfig.java
@@ -39,7 +39,7 @@
  */
 public class SCMStorageConfig extends Storage {
 
-  public static final String TESTING_INIT_LAYOUT_VERSION_KEY = 
"testing.hdds.scm.init.layout.version";
+  public static final String TESTING_INIT_APPARENT_VERSION_KEY = 
"testing.hdds.scm.init.apparent.version";
 
   /**
    * Construct SCMStorageConfig.
@@ -47,7 +47,7 @@ public class SCMStorageConfig extends Storage {
    */
   public SCMStorageConfig(OzoneConfiguration conf) throws IOException {
     super(NodeType.SCM, ServerUtils.getScmDbDir(conf), STORAGE_DIR,
-        getInitApparentVersion(conf, TESTING_INIT_LAYOUT_VERSION_KEY,
+        getInitApparentVersion(conf, TESTING_INIT_APPARENT_VERSION_KEY,
             HDDSVersion.SOFTWARE_VERSION::serialize));
   }
 
diff --git 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/upgrade/TestScmStartupInvalidApparentVersion.java
 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/upgrade/TestScmStartupInvalidApparentVersion.java
index 0f678bdf5d7..16272a2fb33 100644
--- 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/upgrade/TestScmStartupInvalidApparentVersion.java
+++ 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/upgrade/TestScmStartupInvalidApparentVersion.java
@@ -51,7 +51,7 @@ public class TestScmStartupInvalidApparentVersion {
   @Test
   public void 
testStartupFailsWhenApparentVersionBetweenLastLayoutFeatureAndZdu() throws 
Exception {
     assertStartupFailsWithComponentVersionMessage(
-        HDDSLayoutFeature.STORAGE_SPACE_DISTRIBUTION.layoutVersion() + 1);
+        HDDSLayoutFeature.STORAGE_SPACE_DISTRIBUTION.serialize() + 1);
   }
 
   @Test
diff --git 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/ozone/container/common/TestEndPoint.java
 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/ozone/container/common/TestEndPoint.java
index feb244edb56..3e7bccb811d 100644
--- 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/ozone/container/common/TestEndPoint.java
+++ 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/ozone/container/common/TestEndPoint.java
@@ -120,7 +120,7 @@ static void setUp() throws Exception {
     dnDetails = randomDatanodeDetails();
     DatanodeStorage layoutStorage = new DatanodeStorage(ozoneConf,
         UUID.randomUUID().toString(),
-        HDDSLayoutFeature.DATANODE_SCHEMA_V3.layoutVersion());
+        HDDSLayoutFeature.DATANODE_SCHEMA_V3.serialize());
     layoutStorage.initialize();
     scmServer = SCMTestUtils.startScmRpcServer(ozoneConf, scmServerImpl);
     serverAddress = scmServer.getListenerAddress();
diff --git 
a/hadoop-ozone/cli-repair/src/test/java/org/apache/hadoop/ozone/repair/datanode/schemaupgrade/TestUpgradeContainerSchema.java
 
b/hadoop-ozone/cli-repair/src/test/java/org/apache/hadoop/ozone/repair/datanode/schemaupgrade/TestUpgradeContainerSchema.java
index 351b2d0477b..3cf958525e8 100644
--- 
a/hadoop-ozone/cli-repair/src/test/java/org/apache/hadoop/ozone/repair/datanode/schemaupgrade/TestUpgradeContainerSchema.java
+++ 
b/hadoop-ozone/cli-repair/src/test/java/org/apache/hadoop/ozone/repair/datanode/schemaupgrade/TestUpgradeContainerSchema.java
@@ -139,7 +139,7 @@ void setup(@TempDir Path testRoot) throws Exception {
   private void initDatanode(HDDSLayoutFeature layoutFeature) throws 
IOException {
     DatanodeStorage layoutStorage = new DatanodeStorage(conf,
         datanodeDetails.getUuidString(),
-        layoutFeature.layoutVersion());
+        layoutFeature.serialize());
     layoutStorage.initialize();
 
     String idFilePath = 
Objects.requireNonNull(HddsServerUtil.getDatanodeIdFilePath(conf), "datanode.id 
path");
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestHSyncUpgrade.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestHSyncUpgrade.java
index ff5680a9fd3..56e82f8927f 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestHSyncUpgrade.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestHSyncUpgrade.java
@@ -111,7 +111,7 @@ public void init() throws Exception {
     conf.setTimeDuration(OZONE_OM_LEASE_HARD_LIMIT,
         EXPIRE_THRESHOLD_MS, TimeUnit.MILLISECONDS);
     conf.set(OzoneConfigKeys.OZONE_OM_LEASE_SOFT_LIMIT, "0s");
-    conf.setInt(OMStorage.TESTING_INIT_APPARENT_VERSION_KEY, 
OMLayoutFeature.MULTITENANCY_SCHEMA.layoutVersion());
+    conf.setInt(OMStorage.TESTING_INIT_APPARENT_VERSION_KEY, 
OMLayoutFeature.MULTITENANCY_SCHEMA.serialize());
     conf.set(OMConfigKeys.OZONE_OM_UPGRADE_FINALIZATION_CHECK_INTERVAL, 
"10ms");
 
     ClientConfigForTesting.newBuilder(StorageUnit.BYTES)
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestDNDataDistributionFinalization.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestDNDataDistributionFinalization.java
index 5f038f6b7c4..76bab76d66b 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestDNDataDistributionFinalization.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestDNDataDistributionFinalization.java
@@ -75,7 +75,7 @@ public void cleanup() {
 
   public void init(OzoneConfiguration conf) throws Exception {
 
-    conf.setInt(SCMStorageConfig.TESTING_INIT_LAYOUT_VERSION_KEY, 
HDDSLayoutFeature.HBASE_SUPPORT.serialize());
+    conf.setInt(SCMStorageConfig.TESTING_INIT_APPARENT_VERSION_KEY, 
HDDSLayoutFeature.HBASE_SUPPORT.serialize());
     conf.setTimeDuration(OZONE_BLOCK_DELETING_SERVICE_INTERVAL, 100,
         TimeUnit.MILLISECONDS);
     conf.setTimeDuration(OZONE_BLOCK_DELETING_SERVICE_INTERVAL, 100,
@@ -100,7 +100,7 @@ public void init(OzoneConfiguration conf) throws Exception {
         .setNumOfOzoneManagers(1)
         .setNumDatanodes(NUM_DATANODES)
         .setDatanodeFactory(UniformDatanodesFactory.newBuilder()
-            
.setLayoutVersion(HDDSLayoutFeature.INITIAL_VERSION.layoutVersion())
+            .setApparentVersion(HDDSLayoutFeature.INITIAL_VERSION.serialize())
             .build());
     this.cluster = clusterBuilder.build();
 
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestScmDataDistributionFinalization.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestScmDataDistributionFinalization.java
index 3339e3c2387..6707cd87f00 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestScmDataDistributionFinalization.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestScmDataDistributionFinalization.java
@@ -98,7 +98,7 @@ public void init(OzoneConfiguration conf) throws Exception {
 
     SCMConfigurator configurator = new SCMConfigurator();
 
-    conf.setInt(SCMStorageConfig.TESTING_INIT_LAYOUT_VERSION_KEY, 
HDDSLayoutFeature.HBASE_SUPPORT.layoutVersion());
+    conf.setInt(SCMStorageConfig.TESTING_INIT_APPARENT_VERSION_KEY, 
HDDSLayoutFeature.HBASE_SUPPORT.serialize());
     conf.setTimeDuration(OZONE_BLOCK_DELETING_SERVICE_INTERVAL, 100, 
TimeUnit.MILLISECONDS);
     conf.setTimeDuration(OZONE_BLOCK_DELETING_SERVICE_INTERVAL, 100, 
TimeUnit.MILLISECONDS);
     conf.setTimeDuration(OZONE_SCM_HEARTBEAT_PROCESS_INTERVAL, 100, 
TimeUnit.MILLISECONDS);
@@ -127,7 +127,7 @@ public void init(OzoneConfiguration conf) throws Exception {
         .setSCMConfigurator(configurator)
         .setNumDatanodes(NUM_DATANODES)
         .setDatanodeFactory(UniformDatanodesFactory.newBuilder()
-            
.setLayoutVersion(HDDSLayoutFeature.INITIAL_VERSION.layoutVersion())
+            .setApparentVersion(HDDSLayoutFeature.INITIAL_VERSION.serialize())
             .build());
     this.cluster = clusterBuilder.build();
 
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestScmHAFinalization.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestScmHAFinalization.java
index c024bf3ebb9..3c152f1dd15 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestScmHAFinalization.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestScmHAFinalization.java
@@ -59,7 +59,7 @@ public void init(OzoneConfiguration conf, int 
numInactiveSCMs) throws Exception
 
     SCMConfigurator configurator = new SCMConfigurator();
 
-    conf.setInt(SCMStorageConfig.TESTING_INIT_LAYOUT_VERSION_KEY, 
HDDSLayoutFeature.INITIAL_VERSION.layoutVersion());
+    conf.setInt(SCMStorageConfig.TESTING_INIT_APPARENT_VERSION_KEY, 
HDDSLayoutFeature.INITIAL_VERSION.serialize());
     
conf.set(ScmConfigKeys.OZONE_SCM_HA_RATIS_SERVER_RPC_FIRST_ELECTION_TIMEOUT, 
"5s");
     conf.set(ScmConfigKeys.OZONE_SCM_PIPELINE_CREATION_INTERVAL_DEFAULT, "1s");
 
@@ -71,7 +71,7 @@ public void init(OzoneConfiguration conf, int 
numInactiveSCMs) throws Exception
         .setSCMConfigurator(configurator)
         .setNumDatanodes(NUM_DATANODES)
         .setDatanodeFactory(UniformDatanodesFactory.newBuilder()
-            
.setLayoutVersion(HDDSLayoutFeature.INITIAL_VERSION.layoutVersion())
+            .setApparentVersion(HDDSLayoutFeature.INITIAL_VERSION.serialize())
             .build());
     this.cluster = clusterBuilder.build();
 
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOMUpgradeFinalization.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOMUpgradeFinalization.java
index 03f1786415c..35c4ce3aafe 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOMUpgradeFinalization.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOMUpgradeFinalization.java
@@ -72,7 +72,7 @@ public static void shutdown() {
   @Test
   void testOMUpgradeFinalizationWithOneOMDown() throws Exception {
     OzoneConfiguration conf = new OzoneConfiguration();
-    conf.setInt(OMStorage.TESTING_INIT_APPARENT_VERSION_KEY, 
INITIAL_VERSION.layoutVersion());
+    conf.setInt(OMStorage.TESTING_INIT_APPARENT_VERSION_KEY, 
INITIAL_VERSION.serialize());
     conf.set(OMConfigKeys.OZONE_OM_UPGRADE_FINALIZATION_CHECK_INTERVAL, 
"10ms");
     try (MiniOzoneHAClusterImpl cluster = newCluster(conf)) {
       cluster.waitForClusterToBeReady();
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOmStartupInvalidApparentVersion.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOmStartupInvalidApparentVersion.java
index 519421413a0..65e86fbd03d 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOmStartupInvalidApparentVersion.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOmStartupInvalidApparentVersion.java
@@ -48,7 +48,7 @@ public class TestOmStartupInvalidApparentVersion {
   @Test
   public void 
testStartupFailsWhenApparentVersionBetweenLastLayoutFeatureAndZdu()
       throws Exception {
-    
assertStartupFailsWithComponentVersionMessage(OMLayoutFeature.SNAPSHOT_DEFRAG.layoutVersion()
 + 1);
+    
assertStartupFailsWithComponentVersionMessage(OMLayoutFeature.SNAPSHOT_DEFRAG.serialize()
 + 1);
   }
 
   @Test
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/multitenant/TestMultiTenantVolume.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/multitenant/TestMultiTenantVolume.java
index 4fdd713a77d..654cb7ca671 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/multitenant/TestMultiTenantVolume.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/multitenant/TestMultiTenantVolume.java
@@ -72,7 +72,7 @@ public static void initClusterProvider() throws Exception {
     conf.setBoolean(
         OMMultiTenantManagerImpl.OZONE_OM_TENANT_DEV_SKIP_RANGER, true);
     conf.setBoolean(OZONE_OM_MULTITENANCY_ENABLED, true);
-    conf.setInt(OMStorage.TESTING_INIT_APPARENT_VERSION_KEY, 
OMLayoutFeature.INITIAL_VERSION.layoutVersion());
+    conf.setInt(OMStorage.TESTING_INIT_APPARENT_VERSION_KEY, 
OMLayoutFeature.INITIAL_VERSION.serialize());
     conf.set(OMConfigKeys.OZONE_OM_UPGRADE_FINALIZATION_CHECK_INTERVAL, 
"10ms");
     MiniOzoneCluster.Builder builder = MiniOzoneCluster.newBuilder(conf)
         .withoutDatanodes();
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/service/TestBlockDeletionService.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/service/TestBlockDeletionService.java
index 257260f4622..482662c9df8 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/service/TestBlockDeletionService.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/service/TestBlockDeletionService.java
@@ -88,12 +88,12 @@ public static Stream<Arguments> replicationConfigProvider() 
{
   public static void init() throws Exception {
     OzoneConfiguration conf = new OzoneConfiguration();
     conf.setTimeDuration(OZONE_BLOCK_DELETING_SERVICE_INTERVAL, 500, 
TimeUnit.MILLISECONDS);
-    conf.setInt(SCMStorageConfig.TESTING_INIT_LAYOUT_VERSION_KEY, 
HBASE_SUPPORT.layoutVersion());
+    conf.setInt(SCMStorageConfig.TESTING_INIT_APPARENT_VERSION_KEY, 
HBASE_SUPPORT.serialize());
 
     cluster = MiniOzoneCluster.newBuilder(conf)
         .setNumDatanodes(9)
         .setDatanodeFactory(UniformDatanodesFactory.newBuilder()
-            .setLayoutVersion(HBASE_SUPPORT.layoutVersion()).build())
+            .setApparentVersion(HBASE_SUPPORT.serialize()).build())
         .build();
     cluster.waitForClusterToBeReady();
     scmClient = cluster.getStorageContainerLocationClient();
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestOmSnapshot.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestOmSnapshot.java
index 7a97d2c28c2..2515117f423 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestOmSnapshot.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestOmSnapshot.java
@@ -231,7 +231,7 @@ private void init() throws Exception {
     conf.setEnum(HDDS_DB_PROFILE, DBProfile.TEST);
     // Enable filesystem snapshot feature for the test regardless of the 
default
     conf.setBoolean(OMConfigKeys.OZONE_FILESYSTEM_SNAPSHOT_ENABLED_KEY, true);
-    conf.setInt(OMStorage.TESTING_INIT_APPARENT_VERSION_KEY, 
OMLayoutFeature.BUCKET_LAYOUT_SUPPORT.layoutVersion());
+    conf.setInt(OMStorage.TESTING_INIT_APPARENT_VERSION_KEY, 
OMLayoutFeature.BUCKET_LAYOUT_SUPPORT.serialize());
     conf.set(OMConfigKeys.OZONE_OM_UPGRADE_FINALIZATION_CHECK_INTERVAL, 
"10ms");
     conf.setTimeDuration(OZONE_SNAPSHOT_DELETING_SERVICE_INTERVAL, 1, 
TimeUnit.SECONDS);
     conf.setInt(OZONE_SNAPSHOT_SST_FILTERING_SERVICE_INTERVAL, -1);
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 c77f087671b..9132c3d7e62 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
@@ -25,7 +25,6 @@
 import static 
org.apache.hadoop.hdds.scm.ScmConfigKeys.HDDS_DATANODE_DIR_DU_RESERVED;
 import static org.apache.hadoop.hdds.scm.ScmConfigKeys.HDDS_DATANODE_DIR_KEY;
 import static 
org.apache.hadoop.ozone.HddsDatanodeService.TESTING_DATANODE_VERSION_CURRENT;
-import static 
org.apache.hadoop.ozone.HddsDatanodeService.TESTING_DATANODE_VERSION_INITIAL;
 import static org.apache.hadoop.ozone.OzoneConfigKeys.HDDS_CONTAINER_IPC_PORT;
 import static 
org.apache.hadoop.ozone.OzoneConfigKeys.HDDS_CONTAINER_RATIS_ADMIN_PORT;
 import static 
org.apache.hadoop.ozone.OzoneConfigKeys.HDDS_CONTAINER_RATIS_DATANODE_STORAGE_DIR;
@@ -60,16 +59,14 @@ public class UniformDatanodesFactory implements 
MiniOzoneCluster.DatanodeFactory
 
   private final int numDataVolumes;
   private final String reservedSpace;
-  private final Integer layoutVersion;
-  private final HDDSVersion initialVersion;
+  private final Integer apparentVersion;
   private final HDDSVersion currentVersion;
 
   protected UniformDatanodesFactory(Builder builder) {
     numDataVolumes = builder.numDataVolumes;
-    layoutVersion = builder.layoutVersion;
+    apparentVersion = builder.apparentVersion;
     reservedSpace = builder.reservedSpace;
     currentVersion = builder.currentVersion;
-    initialVersion = builder.initialVersion != null ? builder.initialVersion : 
builder.currentVersion;
   }
 
   @Override
@@ -104,15 +101,12 @@ public OzoneConfiguration apply(OzoneConfiguration conf) 
throws IOException {
     Files.createDirectories(ratisDir);
     dnConf.set(HDDS_CONTAINER_RATIS_DATANODE_STORAGE_DIR, ratisDir.toString());
 
-    if (layoutVersion != null) {
+    if (apparentVersion != null) {
       DatanodeStorage layoutStorage = new DatanodeStorage(
-          dnConf, UUID.randomUUID().toString(), layoutVersion);
+          dnConf, UUID.randomUUID().toString(), apparentVersion);
       layoutStorage.initialize();
     }
 
-    if (initialVersion != null) {
-      dnConf.setInt(TESTING_DATANODE_VERSION_INITIAL, 
initialVersion.serialize());
-    }
     if (currentVersion != null) {
       dnConf.setInt(TESTING_DATANODE_VERSION_CURRENT, 
currentVersion.serialize());
     }
@@ -144,8 +138,7 @@ public static class Builder {
 
     private int numDataVolumes = 1;
     private String reservedSpace;
-    private Integer layoutVersion;
-    private HDDSVersion initialVersion;
+    private Integer apparentVersion;
     private HDDSVersion currentVersion;
 
     /**
@@ -169,13 +162,8 @@ public Builder setReservedSpace(String reservedSpace) {
       return this;
     }
 
-    public Builder setLayoutVersion(int layoutVersion) {
-      this.layoutVersion = layoutVersion;
-      return this;
-    }
-
-    public Builder setInitialVersion(HDDSVersion version) {
-      this.initialVersion = version;
+    public Builder setApparentVersion(int apparentVersion) {
+      this.apparentVersion = apparentVersion;
       return this;
     }
 
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 9194791ce59..346b6524f60 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
@@ -25,14 +25,13 @@
 import java.util.TreeMap;
 import org.apache.hadoop.hdds.ComponentVersion;
 import org.apache.hadoop.ozone.OzoneManagerVersion;
-import org.apache.hadoop.ozone.upgrade.LayoutFeature;
 
 /**
  * List of OM Layout Features. All version management has been migrated to 
{@link OzoneManagerVersion} and no new
  * additions should be made to this class. Existing versions are kept here for 
backwards compatibility when upgrading
  * to this version from older versions.
  */
-public enum OMLayoutFeature implements LayoutFeature {
+public enum OMLayoutFeature implements ComponentVersion {
   //////////////////////////////  //////////////////////////////
   INITIAL_VERSION(0, "Initial Layout Version"),
 
@@ -72,7 +71,7 @@ public enum OMLayoutFeature implements LayoutFeature {
   }
 
   @Override
-  public int layoutVersion() {
+  public int serialize() {
     return layoutVersion;
   }
 
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 d17cfe2d1f6..479d47c31e6 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
@@ -20,11 +20,11 @@
 import static 
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.NOT_SUPPORTED_OPERATION_PRIOR_FINALIZATION;
 
 import java.io.IOException;
+import org.apache.hadoop.hdds.ComponentVersion;
 import org.apache.hadoop.ozone.om.OzoneManager;
 import org.apache.hadoop.ozone.om.exceptions.OMException;
 import org.apache.hadoop.ozone.om.request.OMClientRequest;
 import org.apache.hadoop.ozone.protocolPB.OzoneManagerRequestHandler;
-import org.apache.hadoop.ozone.upgrade.LayoutFeature;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Before;
@@ -40,7 +40,7 @@ public class OMLayoutFeatureAspect {
 
   @Before("@annotation(DisallowedUntilLayoutVersion) && execution(* *(..))")
   public void checkLayoutFeature(JoinPoint joinPoint) throws IOException {
-    LayoutFeature layoutFeature = ((MethodSignature) joinPoint.getSignature())
+    ComponentVersion layoutFeature = ((MethodSignature) 
joinPoint.getSignature())
         .getMethod().getAnnotation(DisallowedUntilLayoutVersion.class)
         .value();
     OMVersionManager versionManager = null;
@@ -66,7 +66,7 @@ public void checkLayoutFeature(JoinPoint joinPoint) throws 
IOException {
 
   private void checkIsAllowed(String operationName,
                               OMVersionManager omVersionManager,
-                              LayoutFeature layoutFeature) throws OMException {
+                              ComponentVersion layoutFeature) throws 
OMException {
     if (!omVersionManager.isAllowed(layoutFeature)) {
       throw new OMException(String.format("Operation %s cannot be invoked " +
               "before finalization. It belongs to version %s. Current apparent 
version is %s",
diff --git 
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMLayoutFeature.java
 
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMLayoutFeature.java
index 6f16cb2726e..e27bba5aadd 100644
--- 
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMLayoutFeature.java
+++ 
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/upgrade/TestOMLayoutFeature.java
@@ -37,9 +37,9 @@ public void testOMLayoutFeaturesHaveIncreasingLayoutVersion() 
{
     for (OMLayoutFeature lf : values) {
       // This will skip the jump from the last OMLayoutFeature to 
OzoneManagerVersion#ZDU,
       // since that is expected to be a larger version increment.
-      assertEquals(currVersion + 1, lf.layoutVersion(),
+      assertEquals(currVersion + 1, lf.serialize(),
           "Expected monotonically increasing layout version for " + lf);
-      currVersion = lf.layoutVersion();
+      currVersion = lf.serialize();
     }
   }
 
@@ -52,7 +52,7 @@ public void testNoNewOMLayoutFeaturesAdded() {
     OMLayoutFeature lastFeature = OMLayoutFeature.values()[numOMLayoutFeatures 
- 1];
     assertEquals(10, numOMLayoutFeatures);
     assertEquals(OMLayoutFeature.SNAPSHOT_DEFRAG, lastFeature);
-    assertEquals(9, lastFeature.layoutVersion());
+    assertEquals(9, lastFeature.serialize());
   }
 
   @Test
@@ -87,7 +87,7 @@ public void testDeserializeUnknownVersionReturnsNull() {
   public void testIsSupportedByFeatureBoundary() {
     for (OMLayoutFeature feature : OMLayoutFeature.values()) {
       // A layout feature should support itself.
-      int layoutVersion = feature.layoutVersion();
+      int layoutVersion = feature.serialize();
       assertSupportedBy(feature, feature);
       if (layoutVersion > 0) {
         // A layout feature should not be supported by older features.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to