HDDS-350. ContainerMapping#flushContainerInfo doesn't set containerId. Contributed by Ajay Kumar.
This commit is contained in:
parent
5aa15cfaff
commit
4c25f37c6c
@ -212,6 +212,7 @@ public void allocate(long size) {
|
||||
public HddsProtos.SCMContainerInfo getProtobuf() {
|
||||
HddsProtos.SCMContainerInfo.Builder builder =
|
||||
HddsProtos.SCMContainerInfo.newBuilder();
|
||||
Preconditions.checkState(containerID > 0);
|
||||
return builder.setAllocatedBytes(getAllocatedBytes())
|
||||
.setContainerID(getContainerID())
|
||||
.setUsedBytes(getUsedBytes())
|
||||
|
@ -733,21 +733,7 @@ public void flushContainerInfo() throws IOException {
|
||||
// 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?",
|
||||
|
@ -360,4 +360,12 @@ private ContainerInfo createContainer()
|
||||
return containerInfo;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFlushAllContainers() throws IOException {
|
||||
ContainerInfo info = createContainer();
|
||||
List<ContainerInfo> containers = mapping.getStateManager().getAllContainers();
|
||||
Assert.assertTrue(containers.size() > 0);
|
||||
mapping.flushContainerInfo();
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user