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

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


The following commit(s) were added to refs/heads/HDDS-3630 by this push:
     new acdc4ca   HDDS-6404. Format table key according to schema in 
KeyValueContainerData. (#3172)
acdc4ca is described below

commit acdc4ca5693d9af90b40fc4b33e3e566a86bae50
Author: Gui Hecheng <[email protected]>
AuthorDate: Tue Mar 15 21:42:32 2022 +0800

     HDDS-6404. Format table key according to schema in KeyValueContainerData. 
(#3172)
---
 .../commandhandler/DeleteBlocksCommandHandler.java |  19 ++--
 .../container/keyvalue/KeyValueContainerCheck.java |   9 +-
 .../container/keyvalue/KeyValueContainerData.java  |  89 ++++++++++++++++-
 .../KeyValueContainerMetadataInspector.java        |  14 +--
 .../keyvalue/helpers/KeyValueContainerUtil.java    |  17 ++--
 .../container/keyvalue/impl/BlockManagerImpl.java  |  44 ++++-----
 .../background/BlockDeletingService.java           |  13 ++-
 .../container/common/TestBlockDeletingService.java |  32 +++---
 .../TestSchemaOneBackwardsCompatibility.java       | 109 ++++++++++++---------
 .../keyvalue/TestKeyValueBlockIterator.java        |  11 ++-
 .../container/keyvalue/TestKeyValueContainer.java  |   9 +-
 .../TestKeyValueContainerIntegrityChecks.java      |   5 +-
 .../TestKeyValueContainerMetadataInspector.java    |   8 +-
 .../container/ozoneimpl/TestContainerReader.java   |  22 ++---
 .../container/ozoneimpl/TestOzoneContainer.java    |  55 ++++++-----
 .../hadoop/hdds/utils/MetadataKeyFilters.java      |   1 +
 .../ozone/TestStorageContainerManagerHelper.java   |  31 +++---
 .../client/rpc/TestFailureHandlingByClient.java    |   6 +-
 .../client/rpc/TestOzoneRpcClientAbstract.java     |   9 +-
 .../client/rpc/TestValidateBCSIDOnRestart.java     |   3 +-
 .../commandhandler/TestBlockDeletion.java          |  23 ++---
 21 files changed, 309 insertions(+), 220 deletions(-)

diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/DeleteBlocksCommandHandler.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/DeleteBlocksCommandHandler.java
index 314ca7d..bd93a41 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/DeleteBlocksCommandHandler.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/DeleteBlocksCommandHandler.java
@@ -31,7 +31,6 @@ import org.apache.hadoop.hdds.protocol.proto
 import org.apache.hadoop.hdds.protocol.proto
     .StorageContainerDatanodeProtocolProtos.DeletedBlocksTransaction;
 import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.ozone.OzoneConsts;
 import org.apache.hadoop.ozone.container.common.helpers.BlockData;
 import org.apache.hadoop.ozone.container.common.helpers.ChunkInfoList;
 import org.apache.hadoop.ozone.container.common.helpers
@@ -366,16 +365,15 @@ public class DeleteBlocksCommandHandler implements 
CommandHandler {
       try (BatchOperation batch = containerDB.getStore().getBatchHandler()
           .initBatchOperation()) {
         for (Long blkLong : delTX.getLocalIDList()) {
-          String blk = blkLong.toString();
+          String blk = containerData.blockKey(blkLong);
           BlockData blkInfo = blockDataTable.get(blk);
           if (blkInfo != null) {
-            String deletingKey = OzoneConsts.DELETING_KEY_PREFIX + blk;
+            String deletingKey = containerData.deletingBlockKey(blkLong);
             if (blockDataTable.get(deletingKey) != null
                 || deletedBlocksTable.get(blk) != null) {
               if (LOG.isDebugEnabled()) {
-                LOG.debug(String.format(
-                    "Ignoring delete for block %s in container %d."
-                        + " Entry already added.", blk, containerId));
+                LOG.debug("Ignoring delete for block {} in container {}."
+                        + " Entry already added.", blkLong, containerId);
               }
               continue;
             }
@@ -386,12 +384,12 @@ public class DeleteBlocksCommandHandler implements 
CommandHandler {
             newDeletionBlocks++;
             if (LOG.isDebugEnabled()) {
               LOG.debug("Transited Block {} to DELETING state in container {}",
-                  blk, containerId);
+                  blkLong, containerId);
             }
           } else {
             if (LOG.isDebugEnabled()) {
               LOG.debug("Block {} not found or already under deletion in"
-                  + " container {}, skip deleting it.", blk, containerId);
+                  + " container {}, skip deleting it.", blkLong, containerId);
             }
           }
         }
@@ -422,14 +420,15 @@ public class DeleteBlocksCommandHandler implements 
CommandHandler {
       if (delTX.getTxID() > containerData.getDeleteTransactionId()) {
         // Update in DB pending delete key count and delete transaction ID.
         metadataTable
-            .putWithBatch(batchOperation, OzoneConsts.DELETE_TRANSACTION_KEY,
+            .putWithBatch(batchOperation, containerData.latestDeleteTxnKey(),
                 delTX.getTxID());
       }
 
       long pendingDeleteBlocks =
           containerData.getNumPendingDeletionBlocks() + newDeletionBlocks;
       metadataTable
-          .putWithBatch(batchOperation, OzoneConsts.PENDING_DELETE_BLOCK_COUNT,
+          .putWithBatch(batchOperation,
+              containerData.pendingDeleteBlockCountKey(),
               pendingDeleteBlocks);
 
       // update pending deletion blocks count and delete transaction ID in
diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainerCheck.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainerCheck.java
index 1c1e558..5f3f1f8 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainerCheck.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainerCheck.java
@@ -232,7 +232,8 @@ public class KeyValueContainerCheck {
 
     try (DBHandle db = BlockUtils.getDB(onDiskContainerData, checkConfig);
         BlockIterator<BlockData> kvIter = db.getStore().getBlockIterator(
-            onDiskContainerData.getContainerID())) {
+            onDiskContainerData.getContainerID(),
+            onDiskContainerData.getUnprefixedKeyFilter())) {
 
       while (kvIter.hasNext()) {
         BlockData block = kvIter.nextBlock();
@@ -242,11 +243,11 @@ public class KeyValueContainerCheck {
 
           if (!chunkFile.exists()) {
             // concurrent mutation in Block DB? lookup the block again.
-            String localBlockID =
-                    Long.toString(block.getBlockID().getLocalID());
+            String blockKey =
+                onDiskContainerData.blockKey(block.getBlockID().getLocalID());
             BlockData bdata = db.getStore()
                     .getBlockDataTable()
-                    .get(localBlockID);
+                    .get(blockKey);
             if (bdata != null) {
               throw new IOException("Missing chunk file "
                   + chunkFile.getAbsolutePath());
diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainerData.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainerData.java
index 594f3b2..55d8f6d 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainerData.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainerData.java
@@ -28,6 +28,7 @@ import java.util.Collections;
 import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos;
 import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos
     .ContainerDataProto;
+import org.apache.hadoop.hdds.utils.MetadataKeyFilters.KeyPrefixFilter;
 import org.apache.hadoop.hdds.utils.db.BatchOperation;
 import org.apache.hadoop.hdds.utils.db.Table;
 import org.apache.hadoop.ozone.container.common.impl.ContainerLayoutVersion;
@@ -42,9 +43,12 @@ import java.util.Map;
 import java.util.concurrent.atomic.AtomicLong;
 
 import static java.lang.Math.max;
+import static org.apache.hadoop.ozone.OzoneConsts.BLOCK_COMMIT_SEQUENCE_ID;
 import static org.apache.hadoop.ozone.OzoneConsts.CONTAINER_DB_TYPE_ROCKSDB;
 import static org.apache.hadoop.ozone.OzoneConsts.CHUNKS_PATH;
 import static org.apache.hadoop.ozone.OzoneConsts.CONTAINER_DB_TYPE;
+import static org.apache.hadoop.ozone.OzoneConsts.DELETE_TRANSACTION_KEY;
+import static org.apache.hadoop.ozone.OzoneConsts.DELETING_KEY_PREFIX;
 import static org.apache.hadoop.ozone.OzoneConsts.METADATA_PATH;
 import static org.apache.hadoop.ozone.OzoneConsts.SCHEMA_VERSION;
 import static org.apache.hadoop.ozone.OzoneConsts.CONTAINER_BYTES_USED;
@@ -295,13 +299,90 @@ public class KeyValueContainerData extends ContainerData {
     Table<String, Long> metadataTable = db.getStore().getMetadataTable();
 
     // Set Bytes used and block count key.
-    metadataTable.putWithBatch(batchOperation, CONTAINER_BYTES_USED,
+    metadataTable.putWithBatch(batchOperation, bytesUsedKey(),
             getBytesUsed() - releasedBytes);
-    metadataTable.putWithBatch(batchOperation, BLOCK_COUNT,
+    metadataTable.putWithBatch(batchOperation, blockCountKey(),
             getBlockCount() - deletedBlockCount);
-    metadataTable.putWithBatch(batchOperation, PENDING_DELETE_BLOCK_COUNT,
-            (long)(getNumPendingDeletionBlocks() - deletedBlockCount));
+    metadataTable.putWithBatch(batchOperation, pendingDeleteBlockCountKey(),
+        getNumPendingDeletionBlocks() - deletedBlockCount);
 
     db.getStore().getBatchHandler().commitBatchOperation(batchOperation);
   }
+
+  // NOTE: Below are some helper functions to format keys according
+  // to container schemas, we should use them instead of using
+  // raw const variables defined.
+
+  public String blockKey(long localID) {
+    return formatKey(Long.toString(localID));
+  }
+
+  public String deletingBlockKey(long localID) {
+    return formatKey(DELETING_KEY_PREFIX + localID);
+  }
+
+  public String deleteTxnKey(long txnID) {
+    return formatKey(Long.toString(txnID));
+  }
+
+  public String latestDeleteTxnKey() {
+    return formatKey(DELETE_TRANSACTION_KEY);
+  }
+
+  public String bcsIdKey() {
+    return formatKey(BLOCK_COMMIT_SEQUENCE_ID);
+  }
+
+  public String blockCountKey() {
+    return formatKey(BLOCK_COUNT);
+  }
+
+  public String bytesUsedKey() {
+    return formatKey(CONTAINER_BYTES_USED);
+  }
+
+  public String pendingDeleteBlockCountKey() {
+    return formatKey(PENDING_DELETE_BLOCK_COUNT);
+  }
+
+  public String deletingBlockKeyPrefix() {
+    return formatKey(DELETING_KEY_PREFIX);
+  }
+
+  public KeyPrefixFilter getUnprefixedKeyFilter() {
+    return new KeyPrefixFilter().addFilter(containerPrefix() + "#", true);
+  }
+
+  public KeyPrefixFilter getDeletingBlockKeyFilter() {
+    return new KeyPrefixFilter().addFilter(deletingBlockKeyPrefix());
+  }
+
+  /**
+   * Schema v3 use a prefix as startKey,
+   * for other schemas just return null.
+   * @return
+   */
+  public String startKeyEmpty() {
+    return null;
+  }
+
+  /**
+   * Schema v3 use containerID as key prefix,
+   * for other schemas just return empty.
+   * @return
+   */
+  public String containerPrefix() {
+    return "";
+  }
+
+  /**
+   * Format the raw key to a schema specific format key.
+   * Schema v3 use container ID as key prefix,
+   * for other schemas just return the raw key.
+   * @param key raw key
+   * @return formatted key
+   */
+  private String formatKey(String key) {
+    return key;
+  }
 }
diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainerMetadataInspector.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainerMetadataInspector.java
index bb7fdc6..5dd7da3 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainerMetadataInspector.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueContainerMetadataInspector.java
@@ -25,7 +25,6 @@ import com.google.gson.JsonObject;
 import com.google.gson.JsonPrimitive;
 import org.apache.commons.io.FileUtils;
 import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos;
-import org.apache.hadoop.hdds.utils.MetadataKeyFilters;
 import org.apache.hadoop.hdds.utils.db.Table;
 import org.apache.hadoop.hdds.utils.db.TableIterator;
 import org.apache.hadoop.ozone.OzoneConsts;
@@ -209,7 +208,7 @@ public class KeyValueContainerMetadataInspector implements 
ContainerInspector {
 
       // Build aggregate values.
       JsonObject aggregates = getAggregateValues(store,
-          containerData.getContainerID(), schemaVersion);
+          containerData, schemaVersion);
       containerJson.add("aggregates", aggregates);
 
       // Build info about chunks directory.
@@ -243,7 +242,8 @@ public class KeyValueContainerMetadataInspector implements 
ContainerInspector {
   }
 
   private JsonObject getAggregateValues(DatanodeStore store,
-      long containerID, String schemaVersion) throws IOException {
+      KeyValueContainerData containerData, String schemaVersion)
+      throws IOException {
     JsonObject aggregates = new JsonObject();
 
     long usedBytesTotal = 0;
@@ -251,8 +251,8 @@ public class KeyValueContainerMetadataInspector implements 
ContainerInspector {
     long pendingDeleteBlockCountTotal = 0;
     // Count normal blocks.
     try (BlockIterator<BlockData> blockIter =
-             store.getBlockIterator(containerID,
-                 MetadataKeyFilters.getUnprefixedKeyFilter())) {
+             store.getBlockIterator(containerData.getContainerID(),
+                 containerData.getUnprefixedKeyFilter())) {
 
       while (blockIter.hasNext()) {
         blockCountTotal++;
@@ -263,8 +263,8 @@ public class KeyValueContainerMetadataInspector implements 
ContainerInspector {
     // Count pending delete blocks.
     if (schemaVersion.equals(OzoneConsts.SCHEMA_V1)) {
       try (BlockIterator<BlockData> blockIter =
-               store.getBlockIterator(containerID,
-                   MetadataKeyFilters.getDeletingKeyFilter())) {
+               store.getBlockIterator(containerData.getContainerID(),
+                   containerData.getDeletingBlockKeyFilter())) {
 
         while (blockIter.hasNext()) {
           blockCountTotal++;
diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/helpers/KeyValueContainerUtil.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/helpers/KeyValueContainerUtil.java
index 1958a3e..365b44e 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/helpers/KeyValueContainerUtil.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/helpers/KeyValueContainerUtil.java
@@ -207,14 +207,14 @@ public final class KeyValueContainerUtil {
 
       // Set pending deleted block count.
       Long pendingDeleteBlockCount =
-          metadataTable.get(OzoneConsts.PENDING_DELETE_BLOCK_COUNT);
+          metadataTable.get(kvContainerData.pendingDeleteBlockCountKey());
       if (pendingDeleteBlockCount != null) {
         kvContainerData.incrPendingDeletionBlocks(
                 pendingDeleteBlockCount);
       } else {
         // Set pending deleted block count.
         MetadataKeyFilters.KeyPrefixFilter filter =
-                MetadataKeyFilters.getDeletingKeyFilter();
+                kvContainerData.getDeletingBlockKeyFilter();
         int numPendingDeletionBlocks =
             store.getBlockDataTable()
             .getSequentialRangeKVs(null, Integer.MAX_VALUE, filter)
@@ -224,15 +224,14 @@ public final class KeyValueContainerUtil {
 
       // Set delete transaction id.
       Long delTxnId =
-          metadataTable.get(OzoneConsts.DELETE_TRANSACTION_KEY);
+          metadataTable.get(kvContainerData.latestDeleteTxnKey());
       if (delTxnId != null) {
         kvContainerData
             .updateDeleteTransactionId(delTxnId);
       }
 
       // Set BlockCommitSequenceId.
-      Long bcsId = metadataTable.get(
-          OzoneConsts.BLOCK_COMMIT_SEQUENCE_ID);
+      Long bcsId = metadataTable.get(kvContainerData.bcsIdKey());
       if (bcsId != null) {
         kvContainerData
             .updateBlockCommitSequenceId(bcsId);
@@ -241,14 +240,14 @@ public final class KeyValueContainerUtil {
       // Set bytes used.
       // commitSpace for Open Containers relies on usedBytes
       Long bytesUsed =
-          metadataTable.get(OzoneConsts.CONTAINER_BYTES_USED);
+          metadataTable.get(kvContainerData.bytesUsedKey());
       if (bytesUsed != null) {
         isBlockMetadataSet = true;
         kvContainerData.setBytesUsed(bytesUsed);
       }
 
       // Set block count.
-      Long blockCount = metadataTable.get(OzoneConsts.BLOCK_COUNT);
+      Long blockCount = metadataTable.get(kvContainerData.blockCountKey());
       if (blockCount != null) {
         isBlockMetadataSet = true;
         kvContainerData.setBlockCount(blockCount);
@@ -301,7 +300,7 @@ public final class KeyValueContainerUtil {
 
     try (BlockIterator<BlockData> blockIter =
              store.getBlockIterator(kvData.getContainerID(),
-                 MetadataKeyFilters.getUnprefixedKeyFilter())) {
+                 kvData.getUnprefixedKeyFilter())) {
 
       while (blockIter.hasNext()) {
         blockCount++;
@@ -316,7 +315,7 @@ public final class KeyValueContainerUtil {
     // Count all deleting blocks.
     try (BlockIterator<BlockData> blockIter =
              store.getBlockIterator(kvData.getContainerID(),
-                 MetadataKeyFilters.getDeletingKeyFilter())) {
+                 kvData.getDeletingBlockKeyFilter())) {
 
       while (blockIter.hasNext()) {
         blockCount++;
diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/impl/BlockManagerImpl.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/impl/BlockManagerImpl.java
index d8407e6..80e48e0 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/impl/BlockManagerImpl.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/impl/BlockManagerImpl.java
@@ -27,10 +27,8 @@ import org.apache.hadoop.hdds.conf.ConfigurationSource;
 import org.apache.hadoop.hdds.conf.StorageUnit;
 import org.apache.hadoop.hdds.scm.ScmConfigKeys;
 import 
org.apache.hadoop.hdds.scm.container.common.helpers.StorageContainerException;
-import org.apache.hadoop.hdds.utils.MetadataKeyFilters;
 import org.apache.hadoop.hdds.utils.db.BatchOperation;
 import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.ozone.OzoneConsts;
 import org.apache.hadoop.ozone.container.common.helpers.BlockData;
 import org.apache.hadoop.ozone.container.common.interfaces.Container;
 import org.apache.hadoop.ozone.container.common.interfaces.DBHandle;
@@ -117,17 +115,18 @@ public class BlockManagerImpl implements BlockManager {
         "operation.");
     Preconditions.checkState(data.getContainerID() >= 0, "Container Id " +
         "cannot be negative");
+
+    KeyValueContainerData containerData = container.getContainerData();
+
     // We are not locking the key manager since LevelDb serializes all actions
     // against a single DB. We rely on DB level locking to avoid conflicts.
-    try (DBHandle db = BlockUtils.
-        getDB(container.getContainerData(), config)) {
+    try (DBHandle db = BlockUtils.getDB(containerData, config)) {
       // This is a post condition that acts as a hint to the user.
       // Should never fail.
       Preconditions.checkNotNull(db, DB_NULL_ERR_MSG);
 
       long bcsId = data.getBlockCommitSequenceId();
-      long containerBCSId = container.
-          getContainerData().getBlockCommitSequenceId();
+      long containerBCSId = containerData.getBlockCommitSequenceId();
 
       // default blockCommitSequenceId for any block is 0. It the putBlock
       // request is not coming via Ratis(for test scenarios), it will be 0.
@@ -160,7 +159,7 @@ public class BlockManagerImpl implements BlockManager {
         // If block exists in cache, blockCount should not be incremented.
         if (!isBlockInCache) {
           if (db.getStore().getBlockDataTable().get(
-              Long.toString(localID)) == null) {
+              containerData.blockKey(localID)) == null) {
             // Block does not exist in DB => blockCount needs to be
             // incremented when the block is added into DB.
             incrBlockCount = true;
@@ -168,10 +167,10 @@ public class BlockManagerImpl implements BlockManager {
         }
 
         db.getStore().getBlockDataTable().putWithBatch(
-            batch, Long.toString(localID), data);
+            batch, containerData.blockKey(localID), data);
         if (bcsId != 0) {
           db.getStore().getMetadataTable().putWithBatch(
-              batch, OzoneConsts.BLOCK_COMMIT_SEQUENCE_ID, bcsId);
+              batch, containerData.bcsIdKey(), bcsId);
         }
 
         // Set Bytes used, this bytes used will be updated for every write and
@@ -181,14 +180,14 @@ public class BlockManagerImpl implements BlockManager {
         // is only used to compute the bytes used. This is done to keep the
         // current behavior and avoid DB write during write chunk operation.
         db.getStore().getMetadataTable().putWithBatch(
-            batch, OzoneConsts.CONTAINER_BYTES_USED,
-            container.getContainerData().getBytesUsed());
+            batch, containerData.bytesUsedKey(),
+            containerData.getBytesUsed());
 
         // Set Block Count for a container.
         if (incrBlockCount) {
           db.getStore().getMetadataTable().putWithBatch(
-              batch, OzoneConsts.BLOCK_COUNT,
-              container.getContainerData().getBlockCount() + 1);
+              batch, containerData.blockCountKey(),
+              containerData.getBlockCount() + 1);
         }
 
         db.getStore().getBatchHandler().commitBatchOperation(batch);
@@ -201,7 +200,7 @@ public class BlockManagerImpl implements BlockManager {
       // Increment block count and add block to pendingPutBlockCache
       // in-memory after the DB update.
       if (incrBlockCount) {
-        container.getContainerData().incrBlockCount();
+        containerData.incrBlockCount();
       }
 
       // If the Block is not in PendingPutBlockCache (and it is not 
endOfBlock),
@@ -247,7 +246,7 @@ public class BlockManagerImpl implements BlockManager {
     if (containerBCSId < bcsId) {
       throw new StorageContainerException(
           "Unable to find the block with bcsID " + bcsId + " .Container "
-              + container.getContainerData().getContainerID() + " bcsId is "
+              + containerData.getContainerID() + " bcsId is "
               + containerBCSId + ".", UNKNOWN_BCSID);
     }
 
@@ -255,7 +254,7 @@ public class BlockManagerImpl implements BlockManager {
       // This is a post condition that acts as a hint to the user.
       // Should never fail.
       Preconditions.checkNotNull(db, DB_NULL_ERR_MSG);
-      BlockData blockData = getBlockByID(db, blockID);
+      BlockData blockData = getBlockByID(db, blockID, containerData);
       long id = blockData.getBlockID().getBlockCommitSequenceId();
       if (id < bcsId) {
         throw new StorageContainerException(
@@ -283,7 +282,7 @@ public class BlockManagerImpl implements BlockManager {
       // This is a post condition that acts as a hint to the user.
       // Should never fail.
       Preconditions.checkNotNull(db, DB_NULL_ERR_MSG);
-      BlockData blockData = getBlockByID(db, blockID);
+      BlockData blockData = getBlockByID(db, blockID, containerData);
       return blockData.getSize();
     }
   }
@@ -328,10 +327,11 @@ public class BlockManagerImpl implements BlockManager {
           (KeyValueContainerData) container.getContainerData();
       try (DBHandle db = BlockUtils.getDB(cData, config)) {
         result = new ArrayList<>();
+        String startKey = cData.blockKey(startLocalID);
         List<? extends Table.KeyValue<String, BlockData>> range =
             db.getStore().getBlockDataTable()
-                .getSequentialRangeKVs(Long.toString(startLocalID), count,
-                    MetadataKeyFilters.getUnprefixedKeyFilter());
+                .getSequentialRangeKVs(startKey, count,
+                    cData.getUnprefixedKeyFilter());
         for (Table.KeyValue<String, BlockData> entry : range) {
           BlockData data = new BlockData(entry.getValue().getBlockID());
           result.add(data);
@@ -351,9 +351,9 @@ public class BlockManagerImpl implements BlockManager {
     BlockUtils.shutdownCache(ContainerCache.getInstance(config));
   }
 
-  private BlockData getBlockByID(DBHandle db, BlockID blockID)
-      throws IOException {
-    String blockKey = Long.toString(blockID.getLocalID());
+  private BlockData getBlockByID(DBHandle db, BlockID blockID,
+      KeyValueContainerData containerData) throws IOException {
+    String blockKey = containerData.blockKey(blockID.getLocalID());
 
     BlockData blockData = db.getStore().getBlockDataTable().get(blockKey);
     if (blockData == null) {
diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/statemachine/background/BlockDeletingService.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/statemachine/background/BlockDeletingService.java
index 8206c29..36294d3 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/statemachine/background/BlockDeletingService.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/statemachine/background/BlockDeletingService.java
@@ -36,7 +36,6 @@ import 
org.apache.hadoop.hdds.scm.container.common.helpers.StorageContainerExcep
 import org.apache.hadoop.hdds.scm.pipeline.PipelineID;
 import org.apache.hadoop.hdds.utils.BackgroundTaskResult;
 import org.apache.hadoop.hdds.utils.db.BatchOperation;
-import org.apache.hadoop.hdds.utils.MetadataKeyFilters;
 import org.apache.hadoop.hdds.utils.BackgroundTaskQueue;
 import org.apache.hadoop.hdds.utils.BackgroundService;
 import org.apache.hadoop.hdds.utils.BackgroundTask;
@@ -315,7 +314,7 @@ public class BlockDeletingService extends BackgroundService 
{
             meta.getStore().getBlockDataTable();
 
         // # of blocks to delete is throttled
-        KeyPrefixFilter filter = MetadataKeyFilters.getDeletingKeyFilter();
+        KeyPrefixFilter filter = containerData.getDeletingBlockKeyFilter();
         List<? extends Table.KeyValue<String, BlockData>> toDeleteBlocks =
             blockDataTable
                 .getSequentialRangeKVs(null, (int) blocksToDelete, filter);
@@ -487,13 +486,13 @@ public class BlockDeletingService extends 
BackgroundService {
       long bytesReleased = 0;
       for (DeletedBlocksTransaction entry : delBlocks) {
         for (Long blkLong : entry.getLocalIDList()) {
-          String blk = blkLong.toString();
+          String blk = containerData.blockKey(blkLong);
           BlockData blkInfo = blockDataTable.get(blk);
-          LOG.debug("Deleting block {}", blk);
+          LOG.debug("Deleting block {}", blkLong);
           if (blkInfo == null) {
             LOG.warn("Missing delete block(Container = " +
                 container.getContainerData().getContainerID() + ", Block = " +
-                blk);
+                blkLong);
             continue;
           }
           try {
@@ -501,9 +500,9 @@ public class BlockDeletingService extends BackgroundService 
{
             blocksDeleted++;
             bytesReleased += KeyValueContainerUtil.getBlockLength(blkInfo);
           } catch (InvalidProtocolBufferException e) {
-            LOG.error("Failed to parse block info for block {}", blk, e);
+            LOG.error("Failed to parse block info for block {}", blkLong, e);
           } catch (IOException e) {
-            LOG.error("Failed to delete files for block {}", blk, e);
+            LOG.error("Failed to delete files for block {}", blkLong, e);
           }
         }
       }
diff --git 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/TestBlockDeletingService.java
 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/TestBlockDeletingService.java
index ce644ce..6d2e4ac 100644
--- 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/TestBlockDeletingService.java
+++ 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/TestBlockDeletingService.java
@@ -39,11 +39,9 @@ import 
org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos;
 import 
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos;
 import org.apache.hadoop.hdds.scm.ScmConfigKeys;
 import org.apache.hadoop.hdds.utils.BackgroundService;
-import org.apache.hadoop.hdds.utils.MetadataKeyFilters;
 import org.apache.hadoop.hdds.utils.db.BatchOperation;
 import org.apache.hadoop.hdds.utils.db.Table;
 import org.apache.hadoop.hdds.utils.db.TableIterator;
-import org.apache.hadoop.ozone.OzoneConsts;
 import org.apache.hadoop.ozone.common.Checksum;
 import org.apache.hadoop.ozone.common.ChunkBuffer;
 import org.apache.hadoop.ozone.container.ContainerTestHelper;
@@ -239,8 +237,7 @@ public class TestBlockDeletingService {
     try (DBHandle metadata = BlockUtils.getDB(data, conf)) {
       for (int j = 0; j < numOfBlocksPerContainer; j++) {
         blockID = ContainerTestHelper.getTestBlockID(containerID);
-        String deleteStateName =
-            OzoneConsts.DELETING_KEY_PREFIX + blockID.getLocalID();
+        String deleteStateName = data.deletingBlockKey(blockID.getLocalID());
         BlockData kd = new BlockData(blockID);
         List<ContainerProtos.ChunkInfo> chunks = Lists.newArrayList();
         putChunksInBlock(numOfChunksPerBlock, j, chunks, buffer, chunkManager,
@@ -271,13 +268,13 @@ public class TestBlockDeletingService {
       putChunksInBlock(numOfChunksPerBlock, i, chunks, buffer, chunkManager,
           container, blockID);
       kd.setChunks(chunks);
-      String bID = null;
       try (DBHandle metadata = BlockUtils.getDB(data, conf)) {
-        bID = blockID.getLocalID() + "";
-        metadata.getStore().getBlockDataTable().put(bID, kd);
+        String blockKey = data.blockKey(blockID.getLocalID());
+        metadata.getStore().getBlockDataTable().put(blockKey, kd);
       } catch (IOException exception) {
         LOG.info("Exception = " + exception);
-        LOG.warn("Failed to put block: " + bID + " in BlockDataTable.");
+        LOG.warn("Failed to put block: " + blockID.getLocalID()
+            + " in BlockDataTable.");
       }
       container.getContainerData().incrPendingDeletionBlocks(1);
 
@@ -348,12 +345,12 @@ public class TestBlockDeletingService {
       container.getContainerData().setBlockCount(numOfBlocksPerContainer);
       // Set block count, bytes used and pending delete block count.
       metadata.getStore().getMetadataTable()
-          .put(OzoneConsts.BLOCK_COUNT, (long) numOfBlocksPerContainer);
+          .put(data.blockCountKey(), (long) numOfBlocksPerContainer);
       metadata.getStore().getMetadataTable()
-          .put(OzoneConsts.CONTAINER_BYTES_USED,
+          .put(data.bytesUsedKey(),
               chunkLength * numOfChunksPerBlock * numOfBlocksPerContainer);
       metadata.getStore().getMetadataTable()
-          .put(OzoneConsts.PENDING_DELETE_BLOCK_COUNT,
+          .put(data.pendingDeleteBlockCountKey(),
               (long) numOfBlocksPerContainer);
     } catch (IOException exception) {
       LOG.warn("Meta Data update was not successful for container: "
@@ -379,7 +376,7 @@ public class TestBlockDeletingService {
       KeyValueContainerData data) throws IOException {
     if (data.getSchemaVersion().equals(SCHEMA_V1)) {
       return meta.getStore().getBlockDataTable()
-          .getRangeKVs(null, 100, MetadataKeyFilters.getDeletingKeyFilter())
+          .getRangeKVs(null, 100, data.getDeletingBlockKeyFilter())
           .size();
     } else if (data.getSchemaVersion().equals(SCHEMA_V2)) {
       int pendingBlocks = 0;
@@ -425,11 +422,10 @@ public class TestBlockDeletingService {
     // Ensure 1 container was created
     List<ContainerData> containerData = Lists.newArrayList();
     containerSet.listContainer(0L, 1, containerData);
-    KeyValueContainerData data = (KeyValueContainerData) containerData.get(0);
     Assert.assertEquals(1, containerData.size());
+    KeyValueContainerData data = (KeyValueContainerData) containerData.get(0);
 
-    try (DBHandle meta = BlockUtils.getDB(
-        (KeyValueContainerData) containerData.get(0), conf)) {
+    try (DBHandle meta = BlockUtils.getDB(data, conf)) {
       Map<Long, Container<?>> containerMap = 
containerSet.getContainerMapCopy();
       // NOTE: this test assumes that all the container is KetValueContainer 
and
       // have DeleteTransactionId in KetValueContainerData. If other
@@ -447,7 +443,7 @@ public class TestBlockDeletingService {
       // Ensure there are 3 blocks under deletion and 0 deleted blocks
       Assert.assertEquals(3, getUnderDeletionBlocksCount(meta, data));
       Assert.assertEquals(3, meta.getStore().getMetadataTable()
-          .get(OzoneConsts.PENDING_DELETE_BLOCK_COUNT).longValue());
+          .get(data.pendingDeleteBlockCountKey()).longValue());
 
       // Container contains 3 blocks. So, space used by the container
       // should be greater than zero.
@@ -474,9 +470,9 @@ public class TestBlockDeletingService {
       // Check finally DB counters.
       // Not checking bytes used, as handler is a mock call.
       Assert.assertEquals(0, meta.getStore().getMetadataTable()
-          .get(OzoneConsts.PENDING_DELETE_BLOCK_COUNT).longValue());
+          .get(data.pendingDeleteBlockCountKey()).longValue());
       Assert.assertEquals(0,
-          meta.getStore().getMetadataTable().get(OzoneConsts.BLOCK_COUNT)
+          meta.getStore().getMetadataTable().get(data.blockCountKey())
               .longValue());
     }
 
diff --git 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/TestSchemaOneBackwardsCompatibility.java
 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/TestSchemaOneBackwardsCompatibility.java
index ec46bd5..ff013da 100644
--- 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/TestSchemaOneBackwardsCompatibility.java
+++ 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/TestSchemaOneBackwardsCompatibility.java
@@ -22,7 +22,7 @@ import org.apache.commons.io.FileUtils;
 import org.apache.hadoop.hdds.HddsConfigKeys;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.scm.ScmConfigKeys;
-import org.apache.hadoop.hdds.utils.MetadataKeyFilters;
+import org.apache.hadoop.hdds.utils.MetadataKeyFilters.KeyPrefixFilter;
 import org.apache.hadoop.hdds.utils.db.Table;
 import org.apache.hadoop.ozone.OzoneConfigKeys;
 import org.apache.hadoop.ozone.OzoneConsts;
@@ -158,14 +158,16 @@ public class TestSchemaOneBackwardsCompatibility {
    */
   @Test
   public void testBlockIteration() throws IOException {
-    try (DBHandle refCountedDB = BlockUtils.getDB(newKvData(), conf)) {
-      assertEquals(TestDB.NUM_DELETED_BLOCKS, 
countDeletedBlocks(refCountedDB));
+    KeyValueContainerData cData = newKvData();
+    try (DBHandle refCountedDB = BlockUtils.getDB(cData, conf)) {
+      assertEquals(TestDB.NUM_DELETED_BLOCKS,
+          countDeletedBlocks(refCountedDB, cData));
 
       assertEquals(TestDB.NUM_PENDING_DELETION_BLOCKS,
-              countDeletingBlocks(refCountedDB));
+          countDeletingBlocks(refCountedDB, cData));
 
       assertEquals(TestDB.KEY_COUNT - TestDB.NUM_PENDING_DELETION_BLOCKS,
-              countUnprefixedBlocks(refCountedDB));
+          countUnprefixedBlocks(refCountedDB, cData));
 
       // Test that deleted block keys do not have a visible prefix when
       // iterating.
@@ -175,14 +177,15 @@ public class TestSchemaOneBackwardsCompatibility {
 
       // Test rangeKVs.
       List<? extends Table.KeyValue<String, ChunkInfoList>> deletedBlocks =
-              deletedBlocksTable.getRangeKVs(null, 100);
+              deletedBlocksTable.getRangeKVs(cData.startKeyEmpty(), 100);
 
       for (Table.KeyValue<String, ChunkInfoList> kv: deletedBlocks) {
         assertFalse(kv.getKey().contains(prefix));
       }
 
       // Test sequentialRangeKVs.
-      deletedBlocks = deletedBlocksTable.getRangeKVs(null, 100);
+      deletedBlocks = deletedBlocksTable.getRangeKVs(cData.startKeyEmpty(),
+          100);
 
       for (Table.KeyValue<String, ChunkInfoList> kv: deletedBlocks) {
         assertFalse(kv.getKey().contains(prefix));
@@ -215,17 +218,18 @@ public class TestSchemaOneBackwardsCompatibility {
   public void testReadWithoutMetadata() throws Exception {
     // Delete metadata keys from our copy of the DB.
     // This simulates them not being there to start with.
-    try (DBHandle db = BlockUtils.getDB(newKvData(), conf)) {
+    KeyValueContainerData cData = newKvData();
+    try (DBHandle db = BlockUtils.getDB(cData, conf)) {
       Table<String, Long> metadataTable = db.getStore().getMetadataTable();
 
-      metadataTable.delete(OzoneConsts.BLOCK_COUNT);
-      assertNull(metadataTable.get(OzoneConsts.BLOCK_COUNT));
+      metadataTable.delete(cData.blockCountKey());
+      assertNull(metadataTable.get(cData.blockCountKey()));
 
-      metadataTable.delete(OzoneConsts.CONTAINER_BYTES_USED);
-      assertNull(metadataTable.get(OzoneConsts.CONTAINER_BYTES_USED));
+      metadataTable.delete(cData.bytesUsedKey());
+      assertNull(metadataTable.get(cData.bytesUsedKey()));
 
-      metadataTable.delete(OzoneConsts.PENDING_DELETE_BLOCK_COUNT);
-      assertNull(metadataTable.get(OzoneConsts.PENDING_DELETE_BLOCK_COUNT));
+      metadataTable.delete(cData.pendingDeleteBlockCountKey());
+      assertNull(metadataTable.get(cData.pendingDeleteBlockCountKey()));
     }
 
     // Create a new container data object, and fill in its metadata by
@@ -278,15 +282,16 @@ public class TestSchemaOneBackwardsCompatibility {
     final long expectedRegularBlocks =
             TestDB.KEY_COUNT - numBlocksToDelete;
 
-    try (DBHandle refCountedDB = BlockUtils.getDB(newKvData(), conf)) {
+    KeyValueContainerData cData = newKvData();
+    try (DBHandle refCountedDB = BlockUtils.getDB(cData, conf)) {
       // Test results via block iteration.
 
       assertEquals(expectedDeletingBlocks,
-              countDeletingBlocks(refCountedDB));
+              countDeletingBlocks(refCountedDB, cData));
       assertEquals(expectedDeletedBlocks,
           TestDB.NUM_DELETED_BLOCKS + numberOfBlocksDeleted);
       assertEquals(expectedRegularBlocks,
-              countUnprefixedBlocks(refCountedDB));
+              countUnprefixedBlocks(refCountedDB, cData));
 
       // Test table metadata.
       // Because the KeyValueHandler used for the block deleting service is
@@ -295,7 +300,7 @@ public class TestSchemaOneBackwardsCompatibility {
       Table<String, Long> metadataTable =
               refCountedDB.getStore().getMetadataTable();
       assertEquals(expectedRegularBlocks + expectedDeletingBlocks,
-              (long)metadataTable.get(OzoneConsts.BLOCK_COUNT));
+              (long)metadataTable.get(cData.blockCountKey()));
     }
   }
 
@@ -320,11 +325,12 @@ public class TestSchemaOneBackwardsCompatibility {
         new KeyValueHandler(conf, datanodeUuid, containerSet, volumeSet,
             metrics, c -> {
         });
-    try (DBHandle refCountedDB = BlockUtils.getDB(newKvData(), conf)) {
+    KeyValueContainerData cData = newKvData();
+    try (DBHandle refCountedDB = BlockUtils.getDB(cData, conf)) {
       // Read blocks that were already deleted before the upgrade.
       List<? extends Table.KeyValue<String, ChunkInfoList>> deletedBlocks =
-              refCountedDB.getStore()
-                      .getDeletedBlocksTable().getRangeKVs(null, 100);
+              refCountedDB.getStore().getDeletedBlocksTable()
+                  .getRangeKVs(cData.startKeyEmpty(), 100);
 
       Set<String> preUpgradeBlocks = new HashSet<>();
 
@@ -370,20 +376,22 @@ public class TestSchemaOneBackwardsCompatibility {
 
   @Test
   public void testReadBlockData() throws Exception {
-    try (DBHandle refCountedDB = BlockUtils.getDB(newKvData(), conf)) {
+    KeyValueContainerData cData = newKvData();
+    try (DBHandle refCountedDB = BlockUtils.getDB(cData, conf)) {
       Table<String, BlockData> blockDataTable =
           refCountedDB.getStore().getBlockDataTable();
 
       // Test encoding keys and decoding database values.
       for (String blockID: TestDB.BLOCK_IDS) {
-        BlockData blockData = blockDataTable.get(blockID);
+        String blockKey = cData.blockKey(Long.parseLong(blockID));
+        BlockData blockData = blockDataTable.get(blockKey);
         Assert.assertEquals(Long.toString(blockData.getLocalID()), blockID);
       }
 
       // Test decoding keys from the database.
       List<? extends Table.KeyValue<String, BlockData>> blockKeyValues =
-          blockDataTable.getRangeKVs(null, 100,
-              MetadataKeyFilters.getUnprefixedKeyFilter());
+          blockDataTable.getRangeKVs(cData.startKeyEmpty(), 100,
+              cData.getUnprefixedKeyFilter());
 
       List<String> decodedKeys = new ArrayList<>();
 
@@ -412,20 +420,21 @@ public class TestSchemaOneBackwardsCompatibility {
 
   @Test
   public void testReadDeletingBlockData() throws Exception {
-    try (DBHandle refCountedDB = BlockUtils.getDB(newKvData(), conf)) {
+    KeyValueContainerData cData = newKvData();
+    try (DBHandle refCountedDB = BlockUtils.getDB(cData, conf)) {
       Table<String, BlockData> blockDataTable =
           refCountedDB.getStore().getBlockDataTable();
 
       for (String blockID: TestDB.DELETING_BLOCK_IDS) {
-        BlockData blockData =
-            blockDataTable.get(OzoneConsts.DELETING_KEY_PREFIX + blockID);
+        String blockKey = cData.deletingBlockKey(Long.parseLong(blockID));
+        BlockData blockData = blockDataTable.get(blockKey);
         Assert.assertEquals(Long.toString(blockData.getLocalID()), blockID);
       }
 
       // Test decoding keys from the database.
       List<? extends Table.KeyValue<String, BlockData>> blockKeyValues =
-          blockDataTable.getRangeKVs(null, 100,
-              MetadataKeyFilters.getDeletingKeyFilter());
+          blockDataTable.getRangeKVs(cData.startKeyEmpty(), 100,
+              cData.getDeletingBlockKeyFilter());
 
       List<String> decodedKeys = new ArrayList<>();
 
@@ -437,14 +446,13 @@ public class TestSchemaOneBackwardsCompatibility {
       // Apply the deleting prefix to the saved block IDs so we can compare
       // them to the retrieved keys.
       List<String> expectedKeys = TestDB.DELETING_BLOCK_IDS.stream()
-          .map(key -> OzoneConsts.DELETING_KEY_PREFIX + key)
+          .map(key -> cData.deletingBlockKey(Long.parseLong(key)))
           .collect(Collectors.toList());
 
       Assert.assertEquals(expectedKeys, decodedKeys);
 
       // Test reading deleting blocks with block iterator.
-      MetadataKeyFilters.KeyPrefixFilter filter =
-          MetadataKeyFilters.getDeletingKeyFilter();
+      KeyPrefixFilter filter = cData.getDeletingBlockKeyFilter();
 
       try (BlockIterator<BlockData> iter =
               refCountedDB.getStore().getBlockIterator(TestDB.CONTAINER_ID,
@@ -464,23 +472,25 @@ public class TestSchemaOneBackwardsCompatibility {
 
   @Test
   public void testReadMetadata() throws Exception {
-    try (DBHandle refCountedDB = BlockUtils.getDB(newKvData(), conf)) {
+    KeyValueContainerData cData = newKvData();
+    try (DBHandle refCountedDB = BlockUtils.getDB(cData, conf)) {
       Table<String, Long> metadataTable =
           refCountedDB.getStore().getMetadataTable();
 
       Assert.assertEquals(TestDB.KEY_COUNT,
-          metadataTable.get(OzoneConsts.BLOCK_COUNT).longValue());
+          metadataTable.get(cData.blockCountKey()).longValue());
       Assert.assertEquals(TestDB.BYTES_USED,
-          metadataTable.get(OzoneConsts.CONTAINER_BYTES_USED).longValue());
+          metadataTable.get(cData.bytesUsedKey()).longValue());
       Assert.assertEquals(TestDB.NUM_PENDING_DELETION_BLOCKS,
-          metadataTable.get(OzoneConsts.PENDING_DELETE_BLOCK_COUNT)
+          metadataTable.get(cData.pendingDeleteBlockCountKey())
               .longValue());
     }
   }
 
   @Test
   public void testReadDeletedBlocks() throws Exception {
-    try (DBHandle refCountedDB = BlockUtils.getDB(newKvData(), conf)) {
+    KeyValueContainerData cData = newKvData();
+    try (DBHandle refCountedDB = BlockUtils.getDB(cData, conf)) {
       Table<String, ChunkInfoList> deletedBlocksTable =
           refCountedDB.getStore().getDeletedBlocksTable();
 
@@ -492,7 +502,7 @@ public class TestSchemaOneBackwardsCompatibility {
 
       // Test decoding keys from the database.
       List<? extends Table.KeyValue<String, ChunkInfoList>> chunkInfoKeyValues 
=
-          deletedBlocksTable.getRangeKVs(null, 100);
+          deletedBlocksTable.getRangeKVs(cData.startKeyEmpty(), 100);
 
       List<String> decodedKeys = new ArrayList<>();
 
@@ -585,25 +595,28 @@ public class TestSchemaOneBackwardsCompatibility {
             kvData.getNumPendingDeletionBlocks());
   }
 
-  private int countDeletedBlocks(DBHandle refCountedDB)
+  private int countDeletedBlocks(DBHandle refCountedDB,
+      KeyValueContainerData cData)
           throws IOException {
     return refCountedDB.getStore().getDeletedBlocksTable()
-            .getRangeKVs(null, 100,
-                    MetadataKeyFilters.getUnprefixedKeyFilter()).size();
+            .getRangeKVs(cData.startKeyEmpty(), 100,
+                    cData.getUnprefixedKeyFilter()).size();
   }
 
-  private int countDeletingBlocks(DBHandle refCountedDB)
+  private int countDeletingBlocks(DBHandle refCountedDB,
+      KeyValueContainerData cData)
           throws IOException {
     return refCountedDB.getStore().getBlockDataTable()
-            .getRangeKVs(null, 100,
-                    MetadataKeyFilters.getDeletingKeyFilter()).size();
+            .getRangeKVs(cData.startKeyEmpty(), 100,
+                    cData.getDeletingBlockKeyFilter()).size();
   }
 
-  private int countUnprefixedBlocks(DBHandle refCountedDB)
+  private int countUnprefixedBlocks(DBHandle refCountedDB,
+      KeyValueContainerData cData)
           throws IOException {
     return refCountedDB.getStore().getBlockDataTable()
-            .getRangeKVs(null, 100,
-                    MetadataKeyFilters.getUnprefixedKeyFilter()).size();
+            .getRangeKVs(cData.startKeyEmpty(), 100,
+                    cData.getUnprefixedKeyFilter()).size();
   }
 
   /**
diff --git 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueBlockIterator.java
 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueBlockIterator.java
index 655f400..afd5fc2 100644
--- 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueBlockIterator.java
+++ 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueBlockIterator.java
@@ -219,7 +219,7 @@ public class TestKeyValueBlockIterator {
             normalBlocks, deletingBlocks);
     try (BlockIterator<BlockData> keyValueBlockIterator =
                 db.getStore().getBlockIterator(CONTAINER_ID,
-                        MetadataKeyFilters.getDeletingKeyFilter())) {
+                        containerData.getDeletingBlockKeyFilter())) {
       List<Long> deletingBlockIDs =
               blockIDs.get(OzoneConsts.DELETING_KEY_PREFIX);
       int counter = 0;
@@ -281,13 +281,13 @@ public class TestKeyValueBlockIterator {
     Map<String, List<Long>> blockIDs = createContainerWithBlocks(CONTAINER_ID,
             prefixCounts);
     // Test deleting filter.
-    testWithFilter(MetadataKeyFilters.getDeletingKeyFilter(),
+    testWithFilter(containerData.getDeletingBlockKeyFilter(),
             blockIDs.get(OzoneConsts.DELETING_KEY_PREFIX));
 
     // Test arbitrary filter.
     MetadataKeyFilters.KeyPrefixFilter secondFilter =
             new MetadataKeyFilters.KeyPrefixFilter()
-            .addFilter(secondPrefix);
+            .addFilter(containerData.containerPrefix() + secondPrefix);
     testWithFilter(secondFilter, blockIDs.get(secondPrefix));
   }
 
@@ -394,8 +394,9 @@ public class TestKeyValueBlockIterator {
           blockIndex++;
           BlockData blockData = new BlockData(blockID);
           blockData.setChunks(chunkList);
-          String localID = prefix + blockID.getLocalID();
-          blockDataTable.put(localID, blockData);
+          String blockKey = containerData.containerPrefix() + prefix +
+              blockID.getLocalID();
+          blockDataTable.put(blockKey, blockData);
           blockIDs.get(prefix).add(blockID.getLocalID());
         }
       }
diff --git 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainer.java
 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainer.java
index ea009b7..5be7627 100644
--- 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainer.java
+++ 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainer.java
@@ -321,19 +321,20 @@ public class TestKeyValueContainer {
    * Add some keys to the container.
    */
   private void populate(long numberOfKeysToWrite) throws IOException {
-    try (DBHandle metadataStore =
-        BlockUtils.getDB(keyValueContainer.getContainerData(), CONF)) {
+    KeyValueContainerData cData = keyValueContainer.getContainerData();
+    try (DBHandle metadataStore = BlockUtils.getDB(cData, CONF)) {
       Table<String, BlockData> blockDataTable =
               metadataStore.getStore().getBlockDataTable();
 
       for (long i = 0; i < numberOfKeysToWrite; i++) {
-        blockDataTable.put("test" + i, new BlockData(new BlockID(i, i)));
+        blockDataTable.put(cData.blockKey(i),
+            new BlockData(new BlockID(i, i)));
       }
 
       // As now when we put blocks, we increment block count and update in DB.
       // As for test, we are doing manually so adding key count to DB.
       metadataStore.getStore().getMetadataTable()
-              .put(OzoneConsts.BLOCK_COUNT, numberOfKeysToWrite);
+              .put(cData.blockCountKey(), numberOfKeysToWrite);
     }
 
     Map<String, String> metadata = new HashMap<>();
diff --git 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainerIntegrityChecks.java
 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainerIntegrityChecks.java
index a4ee503..c431903 100644
--- 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainerIntegrityChecks.java
+++ 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainerIntegrityChecks.java
@@ -23,7 +23,6 @@ import org.apache.hadoop.hdds.client.BlockID;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos;
 import org.apache.hadoop.ozone.OzoneConfigKeys;
-import org.apache.hadoop.ozone.OzoneConsts;
 import org.apache.hadoop.ozone.common.Checksum;
 import org.apache.hadoop.ozone.common.ChecksumData;
 import org.apache.hadoop.ozone.container.common.helpers.BlockData;
@@ -166,10 +165,10 @@ public class TestKeyValueContainerIntegrityChecks {
         blockData.setChunks(chunkList);
 
         // normal key
-        String key = Long.toString(blockID.getLocalID());
+        String key = containerData.blockKey(blockID.getLocalID());
         if (i >= normalBlocks) {
           // deleted key
-          key = OzoneConsts.DELETING_KEY_PREFIX + blockID.getLocalID();
+          key = containerData.deletingBlockKey(blockID.getLocalID());
         }
         metadataStore.getStore().getBlockDataTable().put(key, blockData);
       }
diff --git 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainerMetadataInspector.java
 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainerMetadataInspector.java
index b7334ac..a2a6d6b 100644
--- 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainerMetadataInspector.java
+++ 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestKeyValueContainerMetadataInspector.java
@@ -293,8 +293,8 @@ public class TestKeyValueContainerMetadataInspector
     try (DBHandle db = BlockUtils.getDB(containerData, getConf())) {
       Table<String, Long> metadataTable = db.getStore().getMetadataTable();
       // Don't care about in memory state. Just change the DB values.
-      metadataTable.put(OzoneConsts.BLOCK_COUNT, blockCount);
-      metadataTable.put(OzoneConsts.CONTAINER_BYTES_USED, byteCount);
+      metadataTable.put(containerData.blockCountKey(), blockCount);
+      metadataTable.put(containerData.bytesUsedKey(), byteCount);
     }
   }
 
@@ -303,10 +303,10 @@ public class TestKeyValueContainerMetadataInspector
     try (DBHandle db = BlockUtils.getDB(containerData, getConf())) {
       Table<String, Long> metadataTable = db.getStore().getMetadataTable();
 
-      long bytesUsed = metadataTable.get(OzoneConsts.CONTAINER_BYTES_USED);
+      long bytesUsed = metadataTable.get(containerData.bytesUsedKey());
       Assert.assertEquals(expectedBytesUsed, bytesUsed);
 
-      long blockCount = metadataTable.get(OzoneConsts.BLOCK_COUNT);
+      long blockCount = metadataTable.get(containerData.blockCountKey());
       Assert.assertEquals(expectedBlockCount, blockCount);
     }
   }
diff --git 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestContainerReader.java
 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestContainerReader.java
index ee1ca75..0c70e79 100644
--- 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestContainerReader.java
+++ 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestContainerReader.java
@@ -124,18 +124,19 @@ public class TestContainerReader {
 
   private void markBlocksForDelete(KeyValueContainer keyValueContainer,
       boolean setMetaData, List<Long> blockNames, int count) throws Exception {
-    try (DBHandle metadataStore = BlockUtils.getDB(keyValueContainer
-        .getContainerData(), conf)) {
+    KeyValueContainerData cData = keyValueContainer.getContainerData();
+    try (DBHandle metadataStore = BlockUtils.getDB(cData, conf)) {
 
       for (int i = 0; i < count; i++) {
         Table<String, BlockData> blockDataTable =
                 metadataStore.getStore().getBlockDataTable();
 
-        String blk = Long.toString(blockNames.get(i));
+        Long localID = blockNames.get(i);
+        String blk = cData.blockKey(localID);
         BlockData blkInfo = blockDataTable.get(blk);
 
         blockDataTable.delete(blk);
-        blockDataTable.put(OzoneConsts.DELETING_KEY_PREFIX + blk, blkInfo);
+        blockDataTable.put(cData.deletingBlockKey(localID), blkInfo);
       }
 
       if (setMetaData) {
@@ -143,7 +144,7 @@ public class TestContainerReader {
         // and bytes used metadata values, so those do not change.
         Table<String, Long> metadataTable =
                 metadataStore.getStore().getMetadataTable();
-        metadataTable.put(OzoneConsts.PENDING_DELETE_BLOCK_COUNT, (long)count);
+        metadataTable.put(cData.pendingDeleteBlockCountKey(), (long)count);
       }
     }
 
@@ -152,10 +153,9 @@ public class TestContainerReader {
   private List<Long> addBlocks(KeyValueContainer keyValueContainer,
       boolean setMetaData) throws Exception {
     long containerId = keyValueContainer.getContainerData().getContainerID();
-
+    KeyValueContainerData cData = keyValueContainer.getContainerData();
     List<Long> blkNames = new ArrayList<>();
-    try (DBHandle metadataStore = BlockUtils.getDB(keyValueContainer
-        .getContainerData(), conf)) {
+    try (DBHandle metadataStore = BlockUtils.getDB(cData, conf)) {
 
       for (int i = 0; i < blockCount; i++) {
         // Creating BlockData
@@ -172,14 +172,14 @@ public class TestContainerReader {
         blockData.setChunks(chunkList);
         blkNames.add(localBlockID);
         metadataStore.getStore().getBlockDataTable()
-                .put(Long.toString(localBlockID), blockData);
+                .put(cData.blockKey(localBlockID), blockData);
       }
 
       if (setMetaData) {
         metadataStore.getStore().getMetadataTable()
-                .put(OzoneConsts.BLOCK_COUNT, (long)blockCount);
+                .put(cData.blockCountKey(), (long)blockCount);
         metadataStore.getStore().getMetadataTable()
-                .put(OzoneConsts.CONTAINER_BYTES_USED, blockCount * blockLen);
+                .put(cData.bytesUsedKey(), blockCount * blockLen);
       }
     }
 
diff --git 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestOzoneContainer.java
 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestOzoneContainer.java
index c9d79e8..35fef4a 100644
--- 
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestOzoneContainer.java
+++ 
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestOzoneContainer.java
@@ -30,7 +30,6 @@ import org.apache.hadoop.hdds.scm.ScmConfigKeys;
 import 
org.apache.hadoop.hdds.scm.container.common.helpers.StorageContainerException;
 import org.apache.hadoop.ozone.OzoneConfigKeys;
 import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.ozone.OzoneConsts;
 import org.apache.hadoop.ozone.container.common.helpers.BlockData;
 import org.apache.hadoop.ozone.container.common.helpers.ChunkInfo;
 import org.apache.hadoop.ozone.container.common.impl.ContainerLayoutVersion;
@@ -277,35 +276,37 @@ public class TestOzoneContainer {
 
     long freeBytes = container.getContainerData().getMaxSize();
     long containerId = container.getContainerData().getContainerID();
-    DBHandle db = BlockUtils.getDB(container.getContainerData(), conf);
-
-    Table<String, Long> metadataTable = db.getStore().getMetadataTable();
-    Table<String, BlockData> blockDataTable = 
db.getStore().getBlockDataTable();
-
-    for (int bi = 0; bi < blocks; bi++) {
-      // Creating BlockData
-      BlockID blockID = new BlockID(containerId, bi);
-      BlockData blockData = new BlockData(blockID);
-      List<ContainerProtos.ChunkInfo> chunkList = new ArrayList<>();
-
-      chunkList.clear();
-      for (int ci = 0; ci < chunksPerBlock; ci++) {
-        String chunkName = strBlock + bi + strChunk + ci;
-        long offset = ci * (long) datalen;
-        ChunkInfo info = new ChunkInfo(chunkName, offset, datalen);
-        usedBytes += datalen;
-        chunkList.add(info.getProtoBufMessage());
+    KeyValueContainerData cData = container.getContainerData();
+    try (DBHandle db = BlockUtils.getDB(cData, conf)) {
+
+      Table<String, Long> metadataTable =
+          db.getStore().getMetadataTable();
+      Table<String, BlockData> blockDataTable =
+          db.getStore().getBlockDataTable();
+
+      for (int bi = 0; bi < blocks; bi++) {
+        // Creating BlockData
+        BlockID blockID = new BlockID(containerId, bi);
+        BlockData blockData = new BlockData(blockID);
+        List<ContainerProtos.ChunkInfo> chunkList = new ArrayList<>();
+
+        chunkList.clear();
+        for (int ci = 0; ci < chunksPerBlock; ci++) {
+          String chunkName = strBlock + bi + strChunk + ci;
+          long offset = ci * (long) datalen;
+          ChunkInfo info = new ChunkInfo(chunkName, offset, datalen);
+          usedBytes += datalen;
+          chunkList.add(info.getProtoBufMessage());
+        }
+        blockData.setChunks(chunkList);
+        blockDataTable.put(cData.blockKey(blockID.getLocalID()), blockData);
       }
-      blockData.setChunks(chunkList);
-      blockDataTable.put(Long.toString(blockID.getLocalID()), blockData);
-    }
-
-    // Set Block count and used bytes.
-    metadataTable.put(OzoneConsts.BLOCK_COUNT, (long)blocks);
-    metadataTable.put(OzoneConsts.CONTAINER_BYTES_USED, usedBytes);
 
+      // Set Block count and used bytes.
+      metadataTable.put(cData.blockCountKey(), (long) blocks);
+      metadataTable.put(cData.bytesUsedKey(), usedBytes);
+    }
     // remaining available capacity of the container
-    db.close();
     return (freeBytes - usedBytes);
   }
 
diff --git 
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/MetadataKeyFilters.java
 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/MetadataKeyFilters.java
index e3b91ba..31660c0 100644
--- 
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/MetadataKeyFilters.java
+++ 
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/MetadataKeyFilters.java
@@ -32,6 +32,7 @@ import com.google.common.base.Strings;
 public final class MetadataKeyFilters {
   private MetadataKeyFilters() { }
 
+  @Deprecated
   public static KeyPrefixFilter getDeletingKeyFilter() {
     return new MetadataKeyFilters.KeyPrefixFilter()
             .addFilter(OzoneConsts.DELETING_KEY_PREFIX);
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestStorageContainerManagerHelper.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestStorageContainerManagerHelper.java
index cdecca3..992bf40 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestStorageContainerManagerHelper.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestStorageContainerManagerHelper.java
@@ -25,7 +25,6 @@ import java.util.Set;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.protocol.DatanodeDetails;
 import 
org.apache.hadoop.hdds.scm.container.common.helpers.ContainerWithPipeline;
-import org.apache.hadoop.hdds.utils.MetadataKeyFilters;
 import org.apache.hadoop.hdds.utils.MetadataKeyFilters.KeyPrefixFilter;
 import org.apache.hadoop.hdds.utils.db.Table;
 import org.apache.hadoop.ozone.client.OzoneBucket;
@@ -102,17 +101,17 @@ public class TestStorageContainerManagerHelper {
   public List<String> getPendingDeletionBlocks(Long containerID)
       throws IOException {
     List<String> pendingDeletionBlocks = Lists.newArrayList();
-    try (DBHandle meta = getContainerMetadata(containerID)) {
-      KeyPrefixFilter filter =
-          new KeyPrefixFilter().addFilter(OzoneConsts.DELETING_KEY_PREFIX);
+    KeyValueContainerData cData = getContainerMetadata(containerID);
+    try (DBHandle db = BlockUtils.getDB(cData, conf)) {
+      KeyPrefixFilter filter = cData.getDeletingBlockKeyFilter();
 
       List<? extends Table.KeyValue<String, BlockData>> kvs =
-          meta.getStore().getBlockDataTable()
-              .getRangeKVs(null, Integer.MAX_VALUE, filter);
+          db.getStore().getBlockDataTable()
+              .getRangeKVs(cData.startKeyEmpty(), Integer.MAX_VALUE, filter);
 
       for (Table.KeyValue<String, BlockData> entry : kvs) {
         pendingDeletionBlocks
-            .add(entry.getKey().replace(OzoneConsts.DELETING_KEY_PREFIX, ""));
+            .add(entry.getKey().replace(cData.deletingBlockKeyPrefix(), ""));
       }
     }
     return pendingDeletionBlocks;
@@ -129,12 +128,13 @@ public class TestStorageContainerManagerHelper {
 
   public List<Long> getAllBlocks(Long containeID) throws IOException {
     List<Long> allBlocks = Lists.newArrayList();
-    try (DBHandle meta = getContainerMetadata(containeID)) {
+    KeyValueContainerData cData = getContainerMetadata(containeID);
+    try (DBHandle db = BlockUtils.getDB(cData, conf)) {
 
       List<? extends Table.KeyValue<String, BlockData>> kvs =
-          meta.getStore().getBlockDataTable()
-              .getRangeKVs(null, Integer.MAX_VALUE,
-                  MetadataKeyFilters.getUnprefixedKeyFilter());
+          db.getStore().getBlockDataTable()
+              .getRangeKVs(cData.startKeyEmpty(), Integer.MAX_VALUE,
+                  cData.getUnprefixedKeyFilter());
 
       for (Table.KeyValue<String, BlockData> entry : kvs) {
         allBlocks.add(Long.valueOf(entry.getKey()));
@@ -146,8 +146,9 @@ public class TestStorageContainerManagerHelper {
   public boolean verifyBlocksWithTxnTable(Map<Long, List<Long>> 
containerBlocks)
       throws IOException {
     for (Map.Entry<Long, List<Long>> entry : containerBlocks.entrySet()) {
-      try (DBHandle meta = getContainerMetadata(entry.getKey())) {
-        DatanodeStore ds = meta.getStore();
+      KeyValueContainerData cData = getContainerMetadata(entry.getKey());
+      try (DBHandle db = BlockUtils.getDB(cData, conf)) {
+        DatanodeStore ds = db.getStore();
         DatanodeStoreSchemaTwoImpl dnStoreTwoImpl =
             (DatanodeStoreSchemaTwoImpl) ds;
         List<? extends Table.KeyValue<Long, DeletedBlocksTransaction>>
@@ -166,7 +167,7 @@ public class TestStorageContainerManagerHelper {
     return true;
   }
 
-  private DBHandle getContainerMetadata(Long containerID)
+  private KeyValueContainerData getContainerMetadata(Long containerID)
       throws IOException {
     ContainerWithPipeline containerWithPipeline = cluster
         .getStorageContainerManager().getClientProtocolServer()
@@ -179,7 +180,7 @@ public class TestStorageContainerManagerHelper {
     KeyValueContainerData containerData =
         (KeyValueContainerData) containerServer.getContainerSet()
         .getContainer(containerID).getContainerData();
-    return BlockUtils.getDB(containerData, conf);
+    return containerData;
   }
 
   private OzoneContainer getContainerServerByDatanodeUuid(String dnUUID)
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestFailureHandlingByClient.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestFailureHandlingByClient.java
index a9f4621..3b84f9f 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestFailureHandlingByClient.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestFailureHandlingByClient.java
@@ -275,7 +275,8 @@ public class TestFailureHandlingByClient {
             .getContainer(containerId1)).getContainerData();
     try (DBHandle containerDb1 = BlockUtils.getDB(containerData1, conf)) {
       BlockData blockData1 = containerDb1.getStore().getBlockDataTable().get(
-          Long.toString(locationList.get(0).getBlockID().getLocalID()));
+          containerData1.blockKey(locationList.get(0).getBlockID()
+              .getLocalID()));
       // The first Block could have 1 or 2 chunkSize of data
       int block1NumChunks = blockData1.getChunks().size();
       Assert.assertTrue(block1NumChunks >= 1);
@@ -293,7 +294,8 @@ public class TestFailureHandlingByClient {
             .getContainer(containerId2)).getContainerData();
     try (DBHandle containerDb2 = BlockUtils.getDB(containerData2, conf)) {
       BlockData blockData2 = containerDb2.getStore().getBlockDataTable().get(
-          Long.toString(locationList.get(1).getBlockID().getLocalID()));
+          containerData2.blockKey(locationList.get(1).getBlockID()
+              .getLocalID()));
       // The second Block should have 0.5 chunkSize of data
       Assert.assertEquals(block2ExpectedChunkCount,
           blockData2.getChunks().size());
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientAbstract.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientAbstract.java
index fd7355b..35618d9 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientAbstract.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientAbstract.java
@@ -1597,11 +1597,10 @@ public abstract class TestOzoneRpcClientAbstract {
       // Change first and second replica commit sequenceId
       if (index < 3) {
         long newBCSID = container.getBlockCommitSequenceId() - 1;
-        try (DBHandle db = BlockUtils.getDB(
-            (KeyValueContainerData) container.getContainerData(),
-            cluster.getConf())) {
-          db.getStore().getMetadataTable().put(
-              OzoneConsts.BLOCK_COMMIT_SEQUENCE_ID, newBCSID);
+        KeyValueContainerData cData =
+            (KeyValueContainerData) container.getContainerData();
+        try (DBHandle db = BlockUtils.getDB(cData, cluster.getConf())) {
+          db.getStore().getMetadataTable().put(cData.bcsIdKey(), newBCSID);
         }
         container.updateBlockCommitSequenceId(newBCSID);
         index++;
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestValidateBCSIDOnRestart.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestValidateBCSIDOnRestart.java
index cdaf4c1..e70ffc5 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestValidateBCSIDOnRestart.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestValidateBCSIDOnRestart.java
@@ -37,7 +37,6 @@ import org.apache.hadoop.hdds.scm.OzoneClientConfig;
 import org.apache.hadoop.hdds.scm.XceiverClientManager;
 import org.apache.hadoop.ozone.HddsDatanodeService;
 import org.apache.hadoop.ozone.MiniOzoneCluster;
-import org.apache.hadoop.ozone.OzoneConsts;
 import org.apache.hadoop.ozone.client.ObjectStore;
 import org.apache.hadoop.ozone.client.OzoneClient;
 import org.apache.hadoop.ozone.client.OzoneClientFactory;
@@ -228,7 +227,7 @@ public class TestValidateBCSIDOnRestart {
       // modify the bcsid for the container in the ROCKS DB thereby inducing
       // corruption
       db.getStore().getMetadataTable()
-          .put(OzoneConsts.BLOCK_COMMIT_SEQUENCE_ID, 0L);
+          .put(keyValueContainerData.bcsIdKey(), 0L);
     }
     // after the restart, there will be a mismatch in BCSID of what is recorded
     // in the and what is there in RockSDB and hence the container would be
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestBlockDeletion.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestBlockDeletion.java
index 73f5fc0..c5dba0a 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestBlockDeletion.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/container/common/statemachine/commandhandler/TestBlockDeletion.java
@@ -38,7 +38,6 @@ import org.apache.hadoop.hdds.server.events.EventQueue;
 import org.apache.hadoop.hdds.utils.db.Table;
 import org.apache.hadoop.ozone.HddsDatanodeService;
 import org.apache.hadoop.ozone.MiniOzoneCluster;
-import org.apache.hadoop.ozone.OzoneConsts;
 import org.apache.hadoop.ozone.OzoneTestUtils;
 import org.apache.hadoop.ozone.client.ObjectStore;
 import org.apache.hadoop.ozone.client.OzoneBucket;
@@ -439,12 +438,11 @@ public class TestBlockDeletion {
       ContainerSet dnContainerSet =
           datanode.getDatanodeStateMachine().getContainer().getContainerSet();
       OzoneTestUtils.performOperationOnKeyContainers((blockID) -> {
-        try (DBHandle db = BlockUtils.getDB(
-            (KeyValueContainerData) dnContainerSet
-                .getContainer(blockID.getContainerID()).getContainerData(),
-            conf)) {
+        KeyValueContainerData cData = (KeyValueContainerData) dnContainerSet
+            .getContainer(blockID.getContainerID()).getContainerData();
+        try (DBHandle db = BlockUtils.getDB(cData, conf)) {
           Assert.assertNotNull(db.getStore().getBlockDataTable()
-              .get(Long.toString(blockID.getLocalID())));
+              .get(cData.blockKey(blockID.getLocalID())));
         }
       }, omKeyLocationInfoGroups);
     }
@@ -456,19 +454,18 @@ public class TestBlockDeletion {
       ContainerSet dnContainerSet =
           datanode.getDatanodeStateMachine().getContainer().getContainerSet();
       OzoneTestUtils.performOperationOnKeyContainers((blockID) -> {
-        try (DBHandle db = BlockUtils.getDB(
-            (KeyValueContainerData) dnContainerSet
-                .getContainer(blockID.getContainerID()).getContainerData(),
-            conf)) {
+        KeyValueContainerData cData = (KeyValueContainerData) dnContainerSet
+            .getContainer(blockID.getContainerID()).getContainerData();
+        try (DBHandle db = BlockUtils.getDB(cData, conf)) {
           Table<String, BlockData> blockDataTable =
               db.getStore().getBlockDataTable();
 
-          String blockIDString = Long.toString(blockID.getLocalID());
+          String blockKey = cData.blockKey(blockID.getLocalID());
 
-          BlockData blockData = blockDataTable.get(blockIDString);
+          BlockData blockData = blockDataTable.get(blockKey);
           Assert.assertNull(blockData);
 
-          String deletingKey = OzoneConsts.DELETING_KEY_PREFIX + blockIDString;
+          String deletingKey = cData.deletingBlockKey(blockID.getLocalID());
           Assert.assertNull(blockDataTable.get(deletingKey));
         }
         containerIdsWithDeletedBlocks.add(blockID.getContainerID());

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

Reply via email to