This is an automated email from the ASF dual-hosted git repository.
umamahesh pushed a commit to branch HDDS-3816-ec
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/HDDS-3816-ec by this push:
new f3ce6c7 HDDS-5510: allocateContainer should handle ec replication
config (#2490)
f3ce6c7 is described below
commit f3ce6c780163ef3b8b0020df4d9994325d7fee04
Author: Uma Maheswara Rao G <[email protected]>
AuthorDate: Thu Aug 5 11:16:19 2021 -0700
HDDS-5510: allocateContainer should handle ec replication config (#2490)
---
.../hdds/scm/container/ContainerManagerImpl.java | 20 ++++++++++++++------
.../hdds/scm/container/TestContainerManagerImpl.java | 10 ++++++++++
2 files changed, 24 insertions(+), 6 deletions(-)
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerManagerImpl.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerManagerImpl.java
index 2b035ad..776061b 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerManagerImpl.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerManagerImpl.java
@@ -35,6 +35,7 @@ import java.util.stream.Collectors;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hdds.client.ECReplicationConfig;
import org.apache.hadoop.hdds.client.ReplicationConfig;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ContainerInfoProto;
@@ -213,7 +214,8 @@ public class ContainerManagerImpl implements
ContainerManagerV2 {
"Cannot allocate container, negative container id" +
" generated. %s.", uniqueId);
final ContainerID containerID = ContainerID.valueOf(uniqueId);
- final ContainerInfoProto containerInfo = ContainerInfoProto.newBuilder()
+ final ContainerInfoProto.Builder containerInfoBuilder = ContainerInfoProto
+ .newBuilder()
.setState(LifeCycleState.OPEN)
.setPipelineID(pipeline.getId().getProtobuf())
.setUsedBytes(0)
@@ -222,11 +224,17 @@ public class ContainerManagerImpl implements
ContainerManagerV2 {
.setOwner(owner)
.setContainerID(containerID.getId())
.setDeleteTransactionId(0)
- .setReplicationFactor(
- ReplicationConfig.getLegacyFactor(pipeline.getReplicationConfig()))
- .setReplicationType(pipeline.getType())
- .build();
- containerStateManager.addContainer(containerInfo);
+ .setReplicationType(pipeline.getType());
+
+ if (pipeline.getReplicationConfig() instanceof ECReplicationConfig) {
+ containerInfoBuilder.setEcReplicationConfig(
+ ((ECReplicationConfig) pipeline.getReplicationConfig()).toProto());
+ } else {
+ containerInfoBuilder.setReplicationFactor(
+ ReplicationConfig.getLegacyFactor(pipeline.getReplicationConfig()));
+ }
+
+ containerStateManager.addContainer(containerInfoBuilder.build());
scmContainerManagerMetrics.incNumSuccessfulCreateContainers();
return containerStateManager.getContainer(containerID.getProtobuf());
}
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerManagerImpl.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerManagerImpl.java
index 74d2111..091d080 100644
---
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerManagerImpl.java
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerManagerImpl.java
@@ -22,6 +22,7 @@ import java.util.UUID;
import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.hdds.HddsConfigKeys;
+import org.apache.hadoop.hdds.client.ECReplicationConfig;
import org.apache.hadoop.hdds.client.RatisReplicationConfig;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
@@ -151,4 +152,13 @@ public class TestContainerManagerImpl {
Assert.assertEquals(2, containerManager
.getContainers(HddsProtos.LifeCycleState.CLOSING).size());
}
+
+ @Test
+ public void testAllocateContainersWithECReplicationConfig() throws Exception
{
+ final ContainerInfo admin = containerManager
+ .allocateContainer(new ECReplicationConfig(3, 2), "admin");
+ Assert.assertEquals(1, containerManager.getContainers().size());
+ Assert.assertNotNull(containerManager.getContainer(admin.containerID()));
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]