HDDS-350. ContainerMapping#flushContainerInfo doesn't set containerId. Contributed by Ajay Kumar.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/4c25f37c Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/4c25f37c Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/4c25f37c Branch: refs/heads/YARN-3409 Commit: 4c25f37c6cc4e22a006cd095d6143b549bf4a0a8 Parents: 5aa15cf Author: Xiaoyu Yao <[email protected]> Authored: Wed Aug 22 10:53:54 2018 -0700 Committer: Xiaoyu Yao <[email protected]> Committed: Wed Aug 22 10:54:10 2018 -0700 ---------------------------------------------------------------------- .../scm/container/common/helpers/ContainerInfo.java | 1 + .../hadoop/hdds/scm/container/ContainerMapping.java | 16 +--------------- .../hdds/scm/container/TestContainerMapping.java | 8 ++++++++ 3 files changed, 10 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/4c25f37c/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/container/common/helpers/ContainerInfo.java ---------------------------------------------------------------------- diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/container/common/helpers/ContainerInfo.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/container/common/helpers/ContainerInfo.java index 427c08b..311c118 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/container/common/helpers/ContainerInfo.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/container/common/helpers/ContainerInfo.java @@ -212,6 +212,7 @@ public class ContainerInfo implements Comparator<ContainerInfo>, public HddsProtos.SCMContainerInfo getProtobuf() { HddsProtos.SCMContainerInfo.Builder builder = HddsProtos.SCMContainerInfo.newBuilder(); + Preconditions.checkState(containerID > 0); return builder.setAllocatedBytes(getAllocatedBytes()) .setContainerID(getContainerID()) .setUsedBytes(getUsedBytes()) http://git-wip-us.apache.org/repos/asf/hadoop/blob/4c25f37c/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerMapping.java ---------------------------------------------------------------------- diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerMapping.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerMapping.java index 11863f2..4076dad 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerMapping.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerMapping.java @@ -733,21 +733,7 @@ public class ContainerMapping implements Mapping { // return info of a deleted container. may revisit this in the future, // for now, just skip a not-found container if (containerBytes != null) { - HddsProtos.SCMContainerInfo oldInfoProto = - HddsProtos.SCMContainerInfo.PARSER.parseFrom(containerBytes); - ContainerInfo oldInfo = ContainerInfo.fromProtobuf(oldInfoProto); - ContainerInfo newInfo = new ContainerInfo.Builder() - .setAllocatedBytes(info.getAllocatedBytes()) - .setNumberOfKeys(oldInfo.getNumberOfKeys()) - .setOwner(oldInfo.getOwner()) - .setPipelineID(oldInfo.getPipelineID()) - .setState(oldInfo.getState()) - .setUsedBytes(oldInfo.getUsedBytes()) - .setDeleteTransactionId(oldInfo.getDeleteTransactionId()) - .setReplicationFactor(oldInfo.getReplicationFactor()) - .setReplicationType(oldInfo.getReplicationType()) - .build(); - containerStore.put(dbKey, newInfo.getProtobuf().toByteArray()); + containerStore.put(dbKey, info.getProtobuf().toByteArray()); } else { LOG.debug("Container state manager has container {} but not found " + "in container store, a deleted container?", http://git-wip-us.apache.org/repos/asf/hadoop/blob/4c25f37c/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerMapping.java ---------------------------------------------------------------------- diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerMapping.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerMapping.java index 2dc7e99..1e9c35b 100644 --- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerMapping.java +++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerMapping.java @@ -360,4 +360,12 @@ public class TestContainerMapping { return containerInfo; } + @Test + public void testFlushAllContainers() throws IOException { + ContainerInfo info = createContainer(); + List<ContainerInfo> containers = mapping.getStateManager().getAllContainers(); + Assert.assertTrue(containers.size() > 0); + mapping.flushContainerInfo(); + } + } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
