You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by di...@apache.org on 2021/02/14 04:49:11 UTC
[ozone] branch master updated: HDDS-4798. Check before updating
container's BCSID (#1900)
This is an automated email from the ASF dual-hosted git repository.
dineshc pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new dd5e82d HDDS-4798. Check before updating container's BCSID (#1900)
dd5e82d is described below
commit dd5e82d94347619ec233143fcde95a32401259ea
Author: Symious <yi...@foxmail.com>
AuthorDate: Sun Feb 14 12:49:00 2021 +0800
HDDS-4798. Check before updating container's BCSID (#1900)
Co-authored-by: Symious <yi...@gmail.com>
---
.../container/keyvalue/impl/BlockManagerImpl.java | 10 +++--
.../keyvalue/impl/TestBlockManagerImpl.java | 43 ++++++++++++++++++++++
2 files changed, 50 insertions(+), 3 deletions(-)
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 5980b92..066a0fd 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
@@ -130,8 +130,10 @@ public class BlockManagerImpl implements BlockManager {
.initBatchOperation()) {
db.getStore().getBlockDataTable().putWithBatch(
batch, Long.toString(data.getLocalID()), data);
- db.getStore().getMetadataTable().putWithBatch(
- batch, OzoneConsts.BLOCK_COMMIT_SEQUENCE_ID, bcsId);
+ if (bcsId != 0) {
+ db.getStore().getMetadataTable().putWithBatch(
+ batch, OzoneConsts.BLOCK_COMMIT_SEQUENCE_ID, bcsId);
+ }
// Set Bytes used, this bytes used will be updated for every write and
// only get committed for every put block. In this way, when datanode
@@ -153,7 +155,9 @@ public class BlockManagerImpl implements BlockManager {
db.getStore().getBatchHandler().commitBatchOperation(batch);
}
- container.updateBlockCommitSequenceId(bcsId);
+ if (bcsId != 0) {
+ container.updateBlockCommitSequenceId(bcsId);
+ }
// Increment block count finally here for in-memory.
if (incrKeyCount) {
container.getContainerData().incrKeyCount();
diff --git a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/impl/TestBlockManagerImpl.java b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/impl/TestBlockManagerImpl.java
index 3bba85b..51ba01c 100644
--- a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/impl/TestBlockManagerImpl.java
+++ b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/impl/TestBlockManagerImpl.java
@@ -70,8 +70,10 @@ public class TestBlockManagerImpl {
private KeyValueContainerData keyValueContainerData;
private KeyValueContainer keyValueContainer;
private BlockData blockData;
+ private BlockData blockData1;
private BlockManagerImpl blockManager;
private BlockID blockID;
+ private BlockID blockID1;
private final ChunkLayOutVersion layout;
@@ -120,12 +122,53 @@ public class TestBlockManagerImpl {
chunkList.add(info.getProtoBufMessage());
blockData.setChunks(chunkList);
+ // Creating BlockData
+ blockID1 = new BlockID(1L, 2L);
+ blockData1 = new BlockData(blockID1);
+ blockData1.addMetadata(OzoneConsts.VOLUME, OzoneConsts.OZONE);
+ blockData1.addMetadata(OzoneConsts.OWNER,
+ OzoneConsts.OZONE_SIMPLE_HDFS_USER);
+ List<ContainerProtos.ChunkInfo> chunkList1 = new ArrayList<>();
+ ChunkInfo info1 = new ChunkInfo(String.format("%d.data.%d", blockID1
+ .getLocalID(), 0), 0, 1024);
+ chunkList1.add(info1.getProtoBufMessage());
+ blockData1.setChunks(chunkList1);
+ blockData1.setBlockCommitSequenceId(1);
+
// Create KeyValueContainerManager
blockManager = new BlockManagerImpl(config);
}
@Test
+ public void testPutBlock() throws Exception {
+ assertEquals(0, keyValueContainer.getContainerData().getKeyCount());
+ //Put Block with bcsId != 0
+ blockManager.putBlock(keyValueContainer, blockData1);
+
+ BlockData fromGetBlockData;
+ //Check Container's bcsId
+ fromGetBlockData = blockManager.getBlock(keyValueContainer,
+ blockData1.getBlockID());
+ assertEquals(1, keyValueContainer.getContainerData().getKeyCount());
+ assertEquals(1,
+ keyValueContainer.getContainerData().getBlockCommitSequenceId());
+ assertEquals(1, fromGetBlockData.getBlockCommitSequenceId());
+
+ //Put Block with bcsId == 0
+ blockManager.putBlock(keyValueContainer, blockData);
+
+ //Check Container's bcsId
+ fromGetBlockData = blockManager.getBlock(keyValueContainer,
+ blockData.getBlockID());
+ assertEquals(2, keyValueContainer.getContainerData().getKeyCount());
+ assertEquals(0, fromGetBlockData.getBlockCommitSequenceId());
+ assertEquals(1,
+ keyValueContainer.getContainerData().getBlockCommitSequenceId());
+
+ }
+
+ @Test
public void testPutAndGetBlock() throws Exception {
assertEquals(0, keyValueContainer.getContainerData().getKeyCount());
//Put Block
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org