|
20 | 20 | import static org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeOperationalState.IN_SERVICE;
|
21 | 21 | import static org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.ContainerReplicaProto.State.CLOSED;
|
22 | 22 | import static org.apache.hadoop.hdds.scm.exceptions.SCMException.ResultCodes.FAILED_TO_FIND_SUITABLE_NODE;
|
| 23 | +import static org.junit.jupiter.api.Assertions.assertEquals; |
23 | 24 | import static org.mockito.Mockito.any;
|
24 | 25 | import static org.mockito.Mockito.anyBoolean;
|
25 | 26 | import static org.mockito.Mockito.anyInt;
|
|
36 | 37 | import org.apache.commons.lang3.tuple.Pair;
|
37 | 38 | import org.apache.hadoop.hdds.client.ReplicationConfig;
|
38 | 39 | import org.apache.hadoop.hdds.conf.OzoneConfiguration;
|
| 40 | +import org.apache.hadoop.hdds.conf.StorageUnit; |
39 | 41 | import org.apache.hadoop.hdds.protocol.DatanodeDetails;
|
40 | 42 | import org.apache.hadoop.hdds.protocol.MockDatanodeDetails;
|
41 | 43 | import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
|
42 | 44 | import org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.ContainerReplicaProto;
|
43 | 45 | import org.apache.hadoop.hdds.scm.ContainerPlacementStatus;
|
44 | 46 | import org.apache.hadoop.hdds.scm.PlacementPolicy;
|
45 | 47 | import org.apache.hadoop.hdds.scm.SCMCommonPlacementPolicy;
|
| 48 | +import org.apache.hadoop.hdds.scm.ScmConfigKeys; |
46 | 49 | import org.apache.hadoop.hdds.scm.container.ContainerID;
|
47 | 50 | import org.apache.hadoop.hdds.scm.container.ContainerInfo;
|
48 | 51 | import org.apache.hadoop.hdds.scm.container.ContainerReplica;
|
|
51 | 54 | import org.apache.hadoop.hdds.scm.exceptions.SCMException;
|
52 | 55 | import org.apache.hadoop.hdds.scm.net.Node;
|
53 | 56 | import org.apache.hadoop.hdds.scm.node.NodeManager;
|
| 57 | +import org.apache.hadoop.hdds.utils.HddsServerUtil; |
54 | 58 | import org.apache.hadoop.ozone.protocol.commands.DeleteContainerCommand;
|
55 | 59 | import org.apache.hadoop.ozone.protocol.commands.ReconstructECContainersCommand;
|
56 | 60 | import org.apache.hadoop.ozone.protocol.commands.ReplicateContainerCommand;
|
@@ -328,6 +332,9 @@ protected List<DatanodeDetails> chooseDatanodesInternal(
|
328 | 332 | List<DatanodeDetails> favoredNodes, int nodesRequiredToChoose,
|
329 | 333 | long metadataSizeRequired, long dataSizeRequired)
|
330 | 334 | throws SCMException {
|
| 335 | + long containerSize = (long) conf.getStorageSize(ScmConfigKeys.OZONE_SCM_CONTAINER_SIZE, |
| 336 | + ScmConfigKeys.OZONE_SCM_CONTAINER_SIZE_DEFAULT, StorageUnit.BYTES); |
| 337 | + assertEquals(HddsServerUtil.requiredReplicationSpace(containerSize), dataSizeRequired); |
331 | 338 | if (nodesRequiredToChoose > 1) {
|
332 | 339 | throw new IllegalArgumentException("Only one node is allowed");
|
333 | 340 | }
|
@@ -356,6 +363,9 @@ protected List<DatanodeDetails> chooseDatanodesInternal(
|
356 | 363 | List<DatanodeDetails> favoredNodes, int nodesRequiredToChoose,
|
357 | 364 | long metadataSizeRequired, long dataSizeRequired)
|
358 | 365 | throws SCMException {
|
| 366 | + long containerSize = (long) conf.getStorageSize(ScmConfigKeys.OZONE_SCM_CONTAINER_SIZE, |
| 367 | + ScmConfigKeys.OZONE_SCM_CONTAINER_SIZE_DEFAULT, StorageUnit.BYTES); |
| 368 | + assertEquals(HddsServerUtil.requiredReplicationSpace(containerSize), dataSizeRequired); |
359 | 369 | throw new SCMException("No nodes available",
|
360 | 370 | FAILED_TO_FIND_SUITABLE_NODE);
|
361 | 371 | }
|
@@ -383,6 +393,9 @@ protected List<DatanodeDetails> chooseDatanodesInternal(
|
383 | 393 | List<DatanodeDetails> favoredNodes, int nodesRequiredToChoose,
|
384 | 394 | long metadataSizeRequired, long dataSizeRequired)
|
385 | 395 | throws SCMException {
|
| 396 | + long containerSize = (long) conf.getStorageSize(ScmConfigKeys.OZONE_SCM_CONTAINER_SIZE, |
| 397 | + ScmConfigKeys.OZONE_SCM_CONTAINER_SIZE_DEFAULT, StorageUnit.BYTES); |
| 398 | + assertEquals(HddsServerUtil.requiredReplicationSpace(containerSize), dataSizeRequired); |
386 | 399 | if (nodesRequiredToChoose >= throwWhenThisOrMoreNodesRequested) {
|
387 | 400 | throw new SCMException("No nodes available",
|
388 | 401 | FAILED_TO_FIND_SUITABLE_NODE);
|
|
0 commit comments