diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerID.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerID.java index c7985cf47df9..23c8f3bb8a21 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerID.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerID.java @@ -18,13 +18,15 @@ package org.apache.hadoop.hdds.scm.container; import com.google.common.base.Preconditions; -import org.apache.commons.lang3.builder.CompareToBuilder; -import org.apache.commons.lang3.builder.EqualsBuilder; -import org.apache.commons.lang3.builder.HashCodeBuilder; +import jakarta.annotation.Nonnull; +import java.util.Objects; +import java.util.function.Supplier; +import net.jcip.annotations.Immutable; import org.apache.hadoop.hdds.protocol.proto.HddsProtos; import org.apache.hadoop.hdds.utils.db.Codec; import org.apache.hadoop.hdds.utils.db.DelegatedCodec; import org.apache.hadoop.hdds.utils.db.LongCodec; +import org.apache.ratis.util.MemoizedSupplier; /** * Container ID is an integer that is a value between 1..MAX_CONTAINER ID. @@ -34,6 +36,7 @@ *

* This class is immutable. */ +@Immutable public final class ContainerID implements Comparable { private static final Codec CODEC = new DelegatedCodec<>( LongCodec.get(), ContainerID::valueOf, c -> c.id, @@ -46,16 +49,20 @@ public static Codec getCodec() { } private final long id; + private final Supplier proto; + private final Supplier hash; /** * Constructs ContainerID. * * @param id int */ - public ContainerID(long id) { + private ContainerID(long id) { Preconditions.checkState(id >= 0, "Container ID should be positive. %s.", id); this.id = id; + this.proto = MemoizedSupplier.valueOf(() -> HddsProtos.ContainerID.newBuilder().setId(id).build()); + this.hash = MemoizedSupplier.valueOf(() -> 61 * 71 + Long.hashCode(id)); } /** @@ -80,16 +87,12 @@ public long getId() { return id; } - /** - * Use proto message. - */ - @Deprecated - public byte[] getBytes() { + public static byte[] getBytes(long id) { return LongCodec.get().toPersistedFormat(id); } public HddsProtos.ContainerID getProtobuf() { - return HddsProtos.ContainerID.newBuilder().setId(id).build(); + return proto.get(); } public static ContainerID getFromProtobuf(HddsProtos.ContainerID proto) { @@ -107,25 +110,18 @@ public boolean equals(final Object o) { } final ContainerID that = (ContainerID) o; - - return new EqualsBuilder() - .append(id, that.id) - .isEquals(); + return this.id == that.id; } @Override public int hashCode() { - return new HashCodeBuilder(61, 71) - .append(id) - .toHashCode(); + return hash.get(); } @Override - public int compareTo(final ContainerID that) { - Preconditions.checkNotNull(that); - return new CompareToBuilder() - .append(this.id, that.id) - .build(); + public int compareTo(@Nonnull final ContainerID that) { + Objects.requireNonNull(that, "that == null"); + return Long.compare(this.id, that.id); } @Override diff --git a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerInfo.java b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerInfo.java index 3f2f7f2c09ad..f38eceb52ad5 100644 --- a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerInfo.java +++ b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/container/TestContainerInfo.java @@ -28,6 +28,8 @@ import java.time.Duration; import java.time.Instant; +import java.util.concurrent.ThreadLocalRandom; +import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.hadoop.hdds.client.ECReplicationConfig; import org.apache.hadoop.hdds.client.RatisReplicationConfig; import org.apache.hadoop.hdds.protocol.proto.HddsProtos; @@ -40,6 +42,25 @@ */ public class TestContainerInfo { + static int oldHash(long id) { + return new HashCodeBuilder(61, 71) + .append(id) + .toHashCode(); + } + + static void assertHash(long value) { + final ContainerID id = ContainerID.valueOf(value); + assertEquals(oldHash(value), id.hashCode(), id::toString); + } + + @Test + void testContainIdHash() { + for (int i = 0; i < 100; i++) { + assertHash(i); + final long id = ThreadLocalRandom.current().nextLong(Long.MAX_VALUE); + assertHash(id); + } + } @Test void getProtobufRatis() { diff --git a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/container/TestReplicationManagerReport.java b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/container/TestReplicationManagerReport.java index a4ce5b249432..ee0f920d8af9 100644 --- a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/container/TestReplicationManagerReport.java +++ b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/container/TestReplicationManagerReport.java @@ -80,13 +80,13 @@ void testJsonOutput() throws IOException { report.incrementAndSample( ReplicationManagerReport.HealthState.UNDER_REPLICATED, - new ContainerID(1)); + ContainerID.valueOf(1)); report.incrementAndSample( ReplicationManagerReport.HealthState.UNDER_REPLICATED, - new ContainerID(2)); + ContainerID.valueOf(2)); report.incrementAndSample( ReplicationManagerReport.HealthState.OVER_REPLICATED, - new ContainerID(3)); + ContainerID.valueOf(3)); report.setComplete(); String jsonString = JsonUtils.toJsonStringWithDefaultPrettyPrinter(report); @@ -124,13 +124,13 @@ void testJsonOutput() throws IOException { void testContainerIDsCanBeSampled() { report.incrementAndSample( ReplicationManagerReport.HealthState.UNDER_REPLICATED, - new ContainerID(1)); + ContainerID.valueOf(1)); report.incrementAndSample( ReplicationManagerReport.HealthState.UNDER_REPLICATED, - new ContainerID(2)); + ContainerID.valueOf(2)); report.incrementAndSample( ReplicationManagerReport.HealthState.OVER_REPLICATED, - new ContainerID(3)); + ContainerID.valueOf(3)); assertEquals(2, report.getStat(ReplicationManagerReport.HealthState.UNDER_REPLICATED)); @@ -141,13 +141,13 @@ void testContainerIDsCanBeSampled() { List sample = report.getSample(ReplicationManagerReport.HealthState.UNDER_REPLICATED); - assertEquals(new ContainerID(1), sample.get(0)); - assertEquals(new ContainerID(2), sample.get(1)); + assertEquals(ContainerID.valueOf(1), sample.get(0)); + assertEquals(ContainerID.valueOf(2), sample.get(1)); assertEquals(2, sample.size()); sample = report.getSample(ReplicationManagerReport.HealthState.OVER_REPLICATED); - assertEquals(new ContainerID(3), sample.get(0)); + assertEquals(ContainerID.valueOf(3), sample.get(0)); assertEquals(1, sample.size()); sample = @@ -160,13 +160,13 @@ void testSamplesAreLimited() { for (int i = 0; i < ReplicationManagerReport.SAMPLE_LIMIT * 2; i++) { report.incrementAndSample( ReplicationManagerReport.HealthState.UNDER_REPLICATED, - new ContainerID(i)); + ContainerID.valueOf(i)); } List sample = report.getSample(ReplicationManagerReport.HealthState.UNDER_REPLICATED); assertEquals(ReplicationManagerReport.SAMPLE_LIMIT, sample.size()); for (int i = 0; i < ReplicationManagerReport.SAMPLE_LIMIT; i++) { - assertEquals(new ContainerID(i), sample.get(i)); + assertEquals(ContainerID.valueOf(i), sample.get(i)); } } diff --git a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/ec/reconstruction/ECReconstructionCoordinator.java b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/ec/reconstruction/ECReconstructionCoordinator.java index 057d96204a82..4694850b936c 100644 --- a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/ec/reconstruction/ECReconstructionCoordinator.java +++ b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/ec/reconstruction/ECReconstructionCoordinator.java @@ -493,7 +493,7 @@ private SortedMap getBlockDataMap(long containerID, SortedMap resultMap = new TreeMap<>(); Token containerToken = - tokenHelper.getContainerToken(new ContainerID(containerID)); + tokenHelper.getContainerToken(ContainerID.valueOf(containerID)); Iterator> iterator = sourceNodeMap.entrySet().iterator(); diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/TestSCMCommonPlacementPolicy.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/TestSCMCommonPlacementPolicy.java index dd297cb35ec8..8b9dfe873e80 100644 --- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/TestSCMCommonPlacementPolicy.java +++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/TestSCMCommonPlacementPolicy.java @@ -132,7 +132,7 @@ public void testReplicasToFixMisreplicationWithOneMisreplication() { List replicaDns = Stream.of(0, 1, 2, 3, 5) .map(list::get).collect(Collectors.toList()); List replicas = - HddsTestUtils.getReplicasWithReplicaIndex(new ContainerID(1), + HddsTestUtils.getReplicasWithReplicaIndex(ContainerID.valueOf(1), CLOSED, 0, 0, 0, replicaDns); testReplicasToFixMisreplication(replicas, dummyPlacementPolicy, 1, ImmutableMap.of(racks.get(0), 1)); @@ -153,7 +153,7 @@ public void testReplicasToFixMisreplicationWithTwoMisreplication() { List replicaDns = Stream.of(0, 1, 2, 3, 5) .map(list::get).collect(Collectors.toList()); List replicas = - HddsTestUtils.getReplicasWithReplicaIndex(new ContainerID(1), + HddsTestUtils.getReplicasWithReplicaIndex(ContainerID.valueOf(1), CLOSED, 0, 0, 0, replicaDns); testReplicasToFixMisreplication(replicas, dummyPlacementPolicy, 2, ImmutableMap.of(racks.get(0), 2)); @@ -174,7 +174,7 @@ public void testReplicasToFixMisreplicationWithThreeMisreplication() { List replicaDns = Stream.of(0, 1, 2, 3, 5) .map(list::get).collect(Collectors.toList()); List replicas = - HddsTestUtils.getReplicasWithReplicaIndex(new ContainerID(1), + HddsTestUtils.getReplicasWithReplicaIndex(ContainerID.valueOf(1), CLOSED, 0, 0, 0, replicaDns); testReplicasToFixMisreplication(replicas, dummyPlacementPolicy, 3, ImmutableMap.of(racks.get(0), 3)); @@ -197,7 +197,7 @@ public void testReplicasToFixMisreplicationWithThreeMisreplication() { .map(list::get).collect(Collectors.toList()); //Creating Replicas without replica Index List replicas = HddsTestUtils - .getReplicas(new ContainerID(1), CLOSED, 0, replicaDns); + .getReplicas(ContainerID.valueOf(1), CLOSED, 0, replicaDns); testReplicasToFixMisreplication(replicas, dummyPlacementPolicy, 3, ImmutableMap.of(racks.get(0), 2, racks.get(3), 1)); } @@ -220,7 +220,7 @@ public void testReplicasToFixMisreplicationWithThreeMisreplication() { .map(list::get).collect(Collectors.toList()); //Creating Replicas without replica Index for replicas < number of racks List replicas = HddsTestUtils - .getReplicas(new ContainerID(1), CLOSED, 0, replicaDns); + .getReplicas(ContainerID.valueOf(1), CLOSED, 0, replicaDns); testReplicasToFixMisreplication(replicas, dummyPlacementPolicy, 2, ImmutableMap.of(racks.get(0), 1, racks.get(3), 1)); } @@ -243,7 +243,7 @@ public void testReplicasToFixMisreplicationWithThreeMisreplication() { .map(list::get).collect(Collectors.toList()); //Creating Replicas without replica Index for replicas >number of racks List replicas = HddsTestUtils - .getReplicas(new ContainerID(1), CLOSED, 0, replicaDns); + .getReplicas(ContainerID.valueOf(1), CLOSED, 0, replicaDns); testReplicasToFixMisreplication(replicas, dummyPlacementPolicy, 2, ImmutableMap.of(racks.get(0), 1, racks.get(3), 1)); } @@ -257,7 +257,7 @@ public void testReplicasToFixMisreplicationMaxReplicaPerRack() { List replicaDns = Stream.of(0, 2, 4, 6, 8) .map(list::get).collect(Collectors.toList()); List replicas = - HddsTestUtils.getReplicasWithReplicaIndex(new ContainerID(1), + HddsTestUtils.getReplicasWithReplicaIndex(ContainerID.valueOf(1), CLOSED, 0, 0, 0, replicaDns); testReplicasToFixMisreplication(replicas, dummyPlacementPolicy, 2, ImmutableMap.of(racks.get(0), 2)); @@ -273,7 +273,7 @@ public void testReplicasToFixMisreplicationMaxReplicaPerRack() { List replicaDns = Stream.of(0, 2, 4, 6, 8) .map(list::get).collect(Collectors.toList()); List replicas = - HddsTestUtils.getReplicasWithReplicaIndex(new ContainerID(1), + HddsTestUtils.getReplicasWithReplicaIndex(ContainerID.valueOf(1), CLOSED, 0, 0, 0, replicaDns); Map replicaMap = replicas.stream().distinct() .collect(Collectors.toMap(Function.identity(), r -> false)); @@ -292,7 +292,7 @@ public void testReplicasWithoutMisreplication() { List replicaDns = Stream.of(0, 1, 2, 3, 4) .map(list::get).collect(Collectors.toList()); Map replicas = - HddsTestUtils.getReplicasWithReplicaIndex(new ContainerID(1), + HddsTestUtils.getReplicasWithReplicaIndex(ContainerID.valueOf(1), CLOSED, 0, 0, 0, replicaDns) .stream() .collect(Collectors.toMap(Function.identity(), r -> true)); @@ -308,9 +308,9 @@ public void testReplicasToRemoveWithOneOverreplication() { List list = nodeManager.getAllNodes(); Set replicas = Sets.newHashSet( HddsTestUtils.getReplicasWithReplicaIndex( - new ContainerID(1), CLOSED, 0, 0, 0, list.subList(1, 6))); + ContainerID.valueOf(1), CLOSED, 0, 0, 0, list.subList(1, 6))); ContainerReplica replica = ContainerReplica.newBuilder() - .setContainerID(new ContainerID(1)) + .setContainerID(ContainerID.valueOf(1)) .setContainerState(CLOSED) .setReplicaIndex(1) .setDatanodeDetails(list.get(7)).build(); @@ -330,11 +330,11 @@ public void testReplicasToRemoveWithTwoOverreplication() { Set replicas = Sets.newHashSet( HddsTestUtils.getReplicasWithReplicaIndex( - new ContainerID(1), CLOSED, 0, 0, 0, list.subList(1, 6))); + ContainerID.valueOf(1), CLOSED, 0, 0, 0, list.subList(1, 6))); Set replicasToBeRemoved = Sets.newHashSet( HddsTestUtils.getReplicasWithReplicaIndex( - new ContainerID(1), CLOSED, 0, 0, 0, list.subList(7, 9))); + ContainerID.valueOf(1), CLOSED, 0, 0, 0, list.subList(7, 9))); replicas.addAll(replicasToBeRemoved); Set replicasToRemove = dummyPlacementPolicy @@ -351,14 +351,14 @@ public void testReplicasToRemoveWith2CountPerUniqueReplica() { Set replicas = Sets.newHashSet( HddsTestUtils.getReplicasWithReplicaIndex( - new ContainerID(1), CLOSED, 0, 0, 0, list.subList(0, 3))); + ContainerID.valueOf(1), CLOSED, 0, 0, 0, list.subList(0, 3))); replicas.addAll(HddsTestUtils.getReplicasWithReplicaIndex( - new ContainerID(1), CLOSED, 0, 0, 0, list.subList(3, 6))); + ContainerID.valueOf(1), CLOSED, 0, 0, 0, list.subList(3, 6))); Set replicasToBeRemoved = Sets.newHashSet( - HddsTestUtils.getReplicaBuilder(new ContainerID(1), CLOSED, 0, 0, 0, + HddsTestUtils.getReplicaBuilder(ContainerID.valueOf(1), CLOSED, 0, 0, 0, list.get(7).getUuid(), list.get(7)) .setReplicaIndex(1).build(), - HddsTestUtils.getReplicaBuilder(new ContainerID(1), CLOSED, 0, 0, 0, + HddsTestUtils.getReplicaBuilder(ContainerID.valueOf(1), CLOSED, 0, 0, 0, list.get(8).getUuid(), list.get(8)).setReplicaIndex(1) .build()); replicas.addAll(replicasToBeRemoved); @@ -376,7 +376,7 @@ public void testReplicasToRemoveWithoutReplicaIndex() { List list = nodeManager.getAllNodes(); Set replicas = Sets.newHashSet(HddsTestUtils.getReplicas( - new ContainerID(1), CLOSED, 0, list.subList(0, 5))); + ContainerID.valueOf(1), CLOSED, 0, list.subList(0, 5))); Set replicasToRemove = dummyPlacementPolicy .replicasToRemoveToFixOverreplication(replicas, 3); @@ -397,16 +397,16 @@ public void testReplicasToRemoveWithOverreplicationWithinSameRack() { Set replicas = Sets.newHashSet( HddsTestUtils.getReplicasWithReplicaIndex( - new ContainerID(1), CLOSED, 0, 0, 0, list.subList(1, 6))); + ContainerID.valueOf(1), CLOSED, 0, 0, 0, list.subList(1, 6))); ContainerReplica replica1 = ContainerReplica.newBuilder() - .setContainerID(new ContainerID(1)) + .setContainerID(ContainerID.valueOf(1)) .setContainerState(CLOSED) .setReplicaIndex(1) .setDatanodeDetails(list.get(6)).build(); replicas.add(replica1); ContainerReplica replica2 = ContainerReplica.newBuilder() - .setContainerID(new ContainerID(1)) + .setContainerID(ContainerID.valueOf(1)) .setContainerState(CLOSED) .setReplicaIndex(1) .setDatanodeDetails(list.get(0)).build(); @@ -435,7 +435,7 @@ public void testReplicasToRemoveWithNoOverreplication() { List list = nodeManager.getAllNodes(); Set replicas = Sets.newHashSet( HddsTestUtils.getReplicasWithReplicaIndex( - new ContainerID(1), CLOSED, 0, 0, 0, list.subList(1, 6))); + ContainerID.valueOf(1), CLOSED, 0, 0, 0, list.subList(1, 6))); Set replicasToRemove = dummyPlacementPolicy .replicasToRemoveToFixOverreplication(replicas, 1); diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestContainerReplicaPendingOps.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestContainerReplicaPendingOps.java index 95209b68d812..0f546a4e3ec4 100644 --- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestContainerReplicaPendingOps.java +++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestContainerReplicaPendingOps.java @@ -93,14 +93,14 @@ void cleanup() { @Test public void testGetPendingOpsReturnsEmptyList() { List ops = - pendingOps.getPendingOps(new ContainerID(1)); + pendingOps.getPendingOps(ContainerID.valueOf(1)); assertEquals(0, ops.size()); } @Test public void testClear() { - pendingOps.scheduleAddReplica(new ContainerID(1), dn1, 0, addCmd, deadline); - pendingOps.scheduleDeleteReplica(new ContainerID(2), dn1, 0, deleteCmd, deadline); + pendingOps.scheduleAddReplica(ContainerID.valueOf(1), dn1, 0, addCmd, deadline); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(2), dn1, 0, deleteCmd, deadline); assertEquals(1, pendingOps.getPendingOpCount(ContainerReplicaOp.PendingOpType.ADD)); assertEquals(1, pendingOps.getPendingOpCount(ContainerReplicaOp.PendingOpType.DELETE)); @@ -109,26 +109,26 @@ public void testClear() { assertEquals(0, pendingOps.getPendingOpCount(ContainerReplicaOp.PendingOpType.ADD)); assertEquals(0, pendingOps.getPendingOpCount(ContainerReplicaOp.PendingOpType.DELETE)); - assertEquals(0, pendingOps.getPendingOps(new ContainerID(1)).size()); - assertEquals(0, pendingOps.getPendingOps(new ContainerID(2)).size()); + assertEquals(0, pendingOps.getPendingOps(ContainerID.valueOf(1)).size()); + assertEquals(0, pendingOps.getPendingOps(ContainerID.valueOf(2)).size()); } @Test public void testCanAddReplicasForAdd() { - pendingOps.scheduleAddReplica(new ContainerID(1), dn1, 0, addCmd, deadline); - pendingOps.scheduleAddReplica(new ContainerID(1), dn2, 0, addCmd, deadline); - pendingOps.scheduleAddReplica(new ContainerID(1), dn3, 0, addCmd, deadline); + pendingOps.scheduleAddReplica(ContainerID.valueOf(1), dn1, 0, addCmd, deadline); + pendingOps.scheduleAddReplica(ContainerID.valueOf(1), dn2, 0, addCmd, deadline); + pendingOps.scheduleAddReplica(ContainerID.valueOf(1), dn3, 0, addCmd, deadline); // Duplicate for DN2 - pendingOps.scheduleAddReplica(new ContainerID(1), dn2, 0, addCmd, deadline + 1); + pendingOps.scheduleAddReplica(ContainerID.valueOf(1), dn2, 0, addCmd, deadline + 1); // Not a duplicate for DN2 as different index. Should not happen in practice as it is not valid to have 2 indexes // on the same node. - pendingOps.scheduleAddReplica(new ContainerID(1), dn2, 1, addCmd, deadline); - pendingOps.scheduleAddReplica(new ContainerID(2), dn1, 1, addCmd, deadline); - pendingOps.scheduleAddReplica(new ContainerID(2), dn1, 1, addCmd, deadline + 1); + pendingOps.scheduleAddReplica(ContainerID.valueOf(1), dn2, 1, addCmd, deadline); + pendingOps.scheduleAddReplica(ContainerID.valueOf(2), dn1, 1, addCmd, deadline); + pendingOps.scheduleAddReplica(ContainerID.valueOf(2), dn1, 1, addCmd, deadline + 1); List ops = - pendingOps.getPendingOps(new ContainerID(1)); + pendingOps.getPendingOps(ContainerID.valueOf(1)); assertEquals(4, ops.size()); for (ContainerReplicaOp op : ops) { if (!op.getTarget().equals(dn2)) { @@ -147,7 +147,7 @@ public void testCanAddReplicasForAdd() { assertThat(allDns).contains(dn2); assertThat(allDns).contains(dn3); - ops = pendingOps.getPendingOps(new ContainerID(2)); + ops = pendingOps.getPendingOps(ContainerID.valueOf(2)); assertEquals(1, ops.size()); assertEquals(1, ops.get(0).getReplicaIndex()); assertEquals(ADD, ops.get(0).getOpType()); @@ -157,13 +157,13 @@ public void testCanAddReplicasForAdd() { @Test public void testCanAddReplicasForDelete() { - pendingOps.scheduleDeleteReplica(new ContainerID(1), dn1, 0, deleteCmd, deadline); - pendingOps.scheduleDeleteReplica(new ContainerID(1), dn2, 0, deleteCmd, deadline); - pendingOps.scheduleDeleteReplica(new ContainerID(1), dn3, 0, deleteCmd, deadline); - pendingOps.scheduleDeleteReplica(new ContainerID(2), dn1, 1, deleteCmd, deadline); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(1), dn1, 0, deleteCmd, deadline); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(1), dn2, 0, deleteCmd, deadline); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(1), dn3, 0, deleteCmd, deadline); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(2), dn1, 1, deleteCmd, deadline); List ops = - pendingOps.getPendingOps(new ContainerID(1)); + pendingOps.getPendingOps(ContainerID.valueOf(1)); assertEquals(3, ops.size()); for (ContainerReplicaOp op : ops) { assertEquals(0, op.getReplicaIndex()); @@ -175,7 +175,7 @@ public void testCanAddReplicasForDelete() { assertThat(allDns).contains(dn2); assertThat(allDns).contains(dn3); - ops = pendingOps.getPendingOps(new ContainerID(2)); + ops = pendingOps.getPendingOps(ContainerID.valueOf(2)); assertEquals(1, ops.size()); assertEquals(1, ops.get(0).getReplicaIndex()); assertEquals(DELETE, ops.get(0).getOpType()); @@ -184,46 +184,46 @@ public void testCanAddReplicasForDelete() { @Test public void testCompletingOps() { - pendingOps.scheduleDeleteReplica(new ContainerID(1), dn1, 0, deleteCmd, deadline); - pendingOps.scheduleAddReplica(new ContainerID(1), dn1, 0, addCmd, deadline); - pendingOps.scheduleDeleteReplica(new ContainerID(1), dn2, 0, deleteCmd, deadline); - pendingOps.scheduleAddReplica(new ContainerID(1), dn3, 0, addCmd, deadline); - pendingOps.scheduleDeleteReplica(new ContainerID(2), dn1, 1, deleteCmd, deadline); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(1), dn1, 0, deleteCmd, deadline); + pendingOps.scheduleAddReplica(ContainerID.valueOf(1), dn1, 0, addCmd, deadline); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(1), dn2, 0, deleteCmd, deadline); + pendingOps.scheduleAddReplica(ContainerID.valueOf(1), dn3, 0, addCmd, deadline); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(2), dn1, 1, deleteCmd, deadline); List ops = - pendingOps.getPendingOps(new ContainerID(1)); + pendingOps.getPendingOps(ContainerID.valueOf(1)); // We expect 4 entries - 2 add and 2 delete. assertEquals(4, ops.size()); assertTrue(pendingOps - .completeAddReplica(new ContainerID(1), dn1, 0)); - ops = pendingOps.getPendingOps(new ContainerID(1)); + .completeAddReplica(ContainerID.valueOf(1), dn1, 0)); + ops = pendingOps.getPendingOps(ContainerID.valueOf(1)); assertEquals(3, ops.size()); // Complete one that does not exist: assertFalse(pendingOps - .completeAddReplica(new ContainerID(1), dn1, 0)); - ops = pendingOps.getPendingOps(new ContainerID(1)); + .completeAddReplica(ContainerID.valueOf(1), dn1, 0)); + ops = pendingOps.getPendingOps(ContainerID.valueOf(1)); assertEquals(3, ops.size()); // Complete the remaining ones - pendingOps.completeDeleteReplica(new ContainerID(1), dn1, 0); - pendingOps.completeDeleteReplica(new ContainerID(1), dn2, 0); - pendingOps.completeAddReplica(new ContainerID(1), dn3, 0); - ops = pendingOps.getPendingOps(new ContainerID(1)); + pendingOps.completeDeleteReplica(ContainerID.valueOf(1), dn1, 0); + pendingOps.completeDeleteReplica(ContainerID.valueOf(1), dn2, 0); + pendingOps.completeAddReplica(ContainerID.valueOf(1), dn3, 0); + ops = pendingOps.getPendingOps(ContainerID.valueOf(1)); assertEquals(0, ops.size()); } @Test public void testRemoveSpecificOp() { - pendingOps.scheduleDeleteReplica(new ContainerID(1), dn1, 0, deleteCmd, deadline); - pendingOps.scheduleAddReplica(new ContainerID(1), dn1, 0, addCmd, deadline); - pendingOps.scheduleDeleteReplica(new ContainerID(1), dn2, 0, deleteCmd, deadline); - pendingOps.scheduleAddReplica(new ContainerID(1), dn3, 0, addCmd, deadline); - pendingOps.scheduleDeleteReplica(new ContainerID(2), dn1, 1, deleteCmd, deadline); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(1), dn1, 0, deleteCmd, deadline); + pendingOps.scheduleAddReplica(ContainerID.valueOf(1), dn1, 0, addCmd, deadline); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(1), dn2, 0, deleteCmd, deadline); + pendingOps.scheduleAddReplica(ContainerID.valueOf(1), dn3, 0, addCmd, deadline); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(2), dn1, 1, deleteCmd, deadline); - ContainerID cid = new ContainerID(1); + ContainerID cid = ContainerID.valueOf(1); List ops = pendingOps.getPendingOps(cid); assertEquals(4, ops.size()); for (ContainerReplicaOp op : ops) { @@ -240,17 +240,17 @@ public void testRemoveExpiredEntries() { long expiry = clock.millis() + 1000; long laterExpiry = clock.millis() + 2000; long latestExpiry = clock.millis() + 3000; - pendingOps.scheduleDeleteReplica(new ContainerID(1), dn1, 0, deleteCmd, expiry); - pendingOps.scheduleAddReplica(new ContainerID(1), dn1, 0, addCmd, expiry); - pendingOps.scheduleDeleteReplica(new ContainerID(1), dn2, 0, deleteCmd, laterExpiry); - pendingOps.scheduleAddReplica(new ContainerID(1), dn3, 0, addCmd, laterExpiry); - pendingOps.scheduleDeleteReplica(new ContainerID(2), dn1, 1, deleteCmd, latestExpiry); - pendingOps.scheduleAddReplica(new ContainerID(2), dn1, 1, addCmd, latestExpiry); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(1), dn1, 0, deleteCmd, expiry); + pendingOps.scheduleAddReplica(ContainerID.valueOf(1), dn1, 0, addCmd, expiry); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(1), dn2, 0, deleteCmd, laterExpiry); + pendingOps.scheduleAddReplica(ContainerID.valueOf(1), dn3, 0, addCmd, laterExpiry); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(2), dn1, 1, deleteCmd, latestExpiry); + pendingOps.scheduleAddReplica(ContainerID.valueOf(2), dn1, 1, addCmd, latestExpiry); List ops = - pendingOps.getPendingOps(new ContainerID(1)); + pendingOps.getPendingOps(ContainerID.valueOf(1)); assertEquals(4, ops.size()); - ops = pendingOps.getPendingOps(new ContainerID(2)); + ops = pendingOps.getPendingOps(ContainerID.valueOf(2)); assertEquals(2, ops.size()); // Some entries expire at "start + 1000" some at start + 2000 and @@ -258,13 +258,13 @@ public void testRemoveExpiredEntries() { clock.fastForward(1000); pendingOps.removeExpiredEntries(); // Nothing is remove as no deadline is older than the current clock time. - ops = pendingOps.getPendingOps(new ContainerID(1)); + ops = pendingOps.getPendingOps(ContainerID.valueOf(1)); assertEquals(4, ops.size()); clock.fastForward(1000); pendingOps.removeExpiredEntries(); // Those ADD with deadline + 1000 should be removed, but deletes are retained - ops = pendingOps.getPendingOps(new ContainerID(1)); + ops = pendingOps.getPendingOps(ContainerID.valueOf(1)); assertEquals(3, ops.size()); // We should lose the entries for DN1 assertFalse(isOpPresent(ops, dn1, 0, ADD)); @@ -275,19 +275,19 @@ public void testRemoveExpiredEntries() { pendingOps.removeExpiredEntries(); // Now should only have entries for container 2 and the deletes for container 1 - ops = pendingOps.getPendingOps(new ContainerID(1)); + ops = pendingOps.getPendingOps(ContainerID.valueOf(1)); assertEquals(2, ops.size()); assertTrue(isOpPresent(ops, dn1, 0, DELETE)); assertTrue(isOpPresent(ops, dn2, 0, DELETE)); - ops = pendingOps.getPendingOps(new ContainerID(2)); + ops = pendingOps.getPendingOps(ContainerID.valueOf(2)); assertEquals(2, ops.size()); // Advance the clock again and all should be removed except deletes clock.fastForward(1000); pendingOps.removeExpiredEntries(); - ops = pendingOps.getPendingOps(new ContainerID(2)); + ops = pendingOps.getPendingOps(ContainerID.valueOf(2)); assertTrue(isOpPresent(ops, dn1, 1, DELETE)); assertEquals(1, ops.size()); } @@ -301,12 +301,12 @@ private boolean isOpPresent(List ops, DatanodeDetails dn, @Test public void testReplicationMetrics() { long expiry = clock.millis() + 1000; - pendingOps.scheduleDeleteReplica(new ContainerID(1), dn1, 1, deleteCmd, expiry); - pendingOps.scheduleAddReplica(new ContainerID(1), dn1, 2, addCmd, expiry); - pendingOps.scheduleDeleteReplica(new ContainerID(2), dn2, 1, deleteCmd, expiry); - pendingOps.scheduleAddReplica(new ContainerID(2), dn3, 1, addCmd, expiry); - pendingOps.scheduleAddReplica(new ContainerID(3), dn3, 0, addCmd, expiry); - pendingOps.scheduleDeleteReplica(new ContainerID(4), dn3, 0, deleteCmd, expiry); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(1), dn1, 1, deleteCmd, expiry); + pendingOps.scheduleAddReplica(ContainerID.valueOf(1), dn1, 2, addCmd, expiry); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(2), dn2, 1, deleteCmd, expiry); + pendingOps.scheduleAddReplica(ContainerID.valueOf(2), dn3, 1, addCmd, expiry); + pendingOps.scheduleAddReplica(ContainerID.valueOf(3), dn3, 0, addCmd, expiry); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(4), dn3, 0, deleteCmd, expiry); // InFlight Replication and Deletion assertEquals(3, pendingOps.getPendingOpCount(ADD)); @@ -327,32 +327,32 @@ public void testReplicationMetrics() { assertEquals(metrics.getReplicaDeleteTimeoutTotal(), 1); expiry = clock.millis() + 1000; - pendingOps.scheduleDeleteReplica(new ContainerID(3), dn1, 2, deleteCmd, expiry); - pendingOps.scheduleAddReplica(new ContainerID(3), dn1, 3, addCmd, expiry); - pendingOps.scheduleDeleteReplica(new ContainerID(4), dn2, 2, deleteCmd, expiry); - pendingOps.scheduleAddReplica(new ContainerID(4), dn3, 4, addCmd, expiry); - pendingOps.scheduleAddReplica(new ContainerID(5), dn3, 0, addCmd, expiry); - pendingOps.scheduleDeleteReplica(new ContainerID(6), dn3, 0, deleteCmd, expiry); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(3), dn1, 2, deleteCmd, expiry); + pendingOps.scheduleAddReplica(ContainerID.valueOf(3), dn1, 3, addCmd, expiry); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(4), dn2, 2, deleteCmd, expiry); + pendingOps.scheduleAddReplica(ContainerID.valueOf(4), dn3, 4, addCmd, expiry); + pendingOps.scheduleAddReplica(ContainerID.valueOf(5), dn3, 0, addCmd, expiry); + pendingOps.scheduleDeleteReplica(ContainerID.valueOf(6), dn3, 0, deleteCmd, expiry); // InFlight Replication and Deletion. Previous Inflight should be // removed as they were timed out, but deletes are retained assertEquals(3, pendingOps.getPendingOpCount(ADD)); assertEquals(6, pendingOps.getPendingOpCount(DELETE)); - pendingOps.completeDeleteReplica(new ContainerID(3), dn1, 2); - pendingOps.completeAddReplica(new ContainerID(3), dn1, 3); - pendingOps.completeDeleteReplica(new ContainerID(4), dn2, 2); - pendingOps.completeAddReplica(new ContainerID(4), dn3, 4); - pendingOps.completeDeleteReplica(new ContainerID(6), dn3, 0); - pendingOps.completeAddReplica(new ContainerID(5), dn3, 0); + pendingOps.completeDeleteReplica(ContainerID.valueOf(3), dn1, 2); + pendingOps.completeAddReplica(ContainerID.valueOf(3), dn1, 3); + pendingOps.completeDeleteReplica(ContainerID.valueOf(4), dn2, 2); + pendingOps.completeAddReplica(ContainerID.valueOf(4), dn3, 4); + pendingOps.completeDeleteReplica(ContainerID.valueOf(6), dn3, 0); + pendingOps.completeAddReplica(ContainerID.valueOf(5), dn3, 0); assertEquals(metrics.getEcReplicasCreatedTotal(), 2); assertEquals(metrics.getEcReplicasDeletedTotal(), 2); assertEquals(metrics.getReplicasCreatedTotal(), 1); assertEquals(metrics.getReplicasDeletedTotal(), 1); - pendingOps.completeDeleteReplica(new ContainerID(3), dn1, 2); - pendingOps.completeAddReplica(new ContainerID(2), dn1, 3); + pendingOps.completeDeleteReplica(ContainerID.valueOf(3), dn1, 2); + pendingOps.completeAddReplica(ContainerID.valueOf(2), dn1, 3); // Checking pendingOpCount doesn't go below zero assertEquals(0, pendingOps.getPendingOpCount(ADD)); @@ -374,7 +374,7 @@ public void testNotifySubscribers() { pendingOps.registerSubscriber(subscriber2); // schedule an ADD and a DELETE - ContainerID containerID = new ContainerID(1); + ContainerID containerID = ContainerID.valueOf(1); pendingOps.scheduleAddReplica(containerID, dn1, 0, addCmd, deadline); ContainerReplicaOp addOp = pendingOps.getPendingOps(containerID).get(0); pendingOps.scheduleDeleteReplica(containerID, dn1, 0, deleteCmd, deadline); @@ -411,7 +411,7 @@ public void testNotifySubscribers() { @Test public void subscribersShouldNotBeNotifiedWhenOpsHaveNotExpired() { - ContainerID containerID = new ContainerID(1); + ContainerID containerID = ContainerID.valueOf(1); // schedule ops pendingOps.scheduleDeleteReplica(containerID, dn1, 0, deleteCmd, deadline); @@ -431,7 +431,7 @@ public void subscribersShouldNotBeNotifiedWhenOpsHaveNotExpired() { @Test public void subscribersShouldNotBeNotifiedWhenReplacingAnOpWithDuplicate() { - ContainerID containerID = new ContainerID(1); + ContainerID containerID = ContainerID.valueOf(1); // schedule ops pendingOps.scheduleAddReplica(containerID, dn2, 0, addCmd, deadline); diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManager.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManager.java index e0a4130021d1..6e37d3de262c 100644 --- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManager.java +++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManager.java @@ -1755,12 +1755,12 @@ public void testPendingOpExpiry() throws ContainerNotFoundException { ContainerReplicaOp delOp = new ContainerReplicaOp( ContainerReplicaOp.PendingOpType.DELETE, dn2, 1, command, commandDeadline); - replicationManager.opCompleted(addOp, new ContainerID(1L), false); - replicationManager.opCompleted(delOp, new ContainerID(1L), false); + replicationManager.opCompleted(addOp, ContainerID.valueOf(1L), false); + replicationManager.opCompleted(delOp, ContainerID.valueOf(1L), false); // No commands should be sent for either of the above ops. assertEquals(0, commandsSent.size()); - replicationManager.opCompleted(delOp, new ContainerID(1L), true); + replicationManager.opCompleted(delOp, ContainerID.valueOf(1L), true); assertEquals(1, commandsSent.size()); Pair> sentCommand = commandsSent.iterator().next(); // The target should be DN2 and the deadline should have been updated from the value set in commandDeadline above diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManagerScenarios.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManagerScenarios.java index ac529b08f7f2..6484fc3b976b 100644 --- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManagerScenarios.java +++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManagerScenarios.java @@ -452,7 +452,7 @@ public ContainerReplica buildContainerReplica() { ContainerReplica.ContainerReplicaBuilder builder = new ContainerReplica.ContainerReplicaBuilder(); return builder.setReplicaIndex(index) - .setContainerID(new ContainerID(containerId)) + .setContainerID(ContainerID.valueOf(containerId)) .setContainerState(state) .setSequenceId(sequenceId) .setDatanodeDetails(datanodeDetails) diff --git a/hadoop-hdds/tools/src/test/java/org/apache/hadoop/hdds/scm/cli/datanode/TestDecommissionStatusSubCommand.java b/hadoop-hdds/tools/src/test/java/org/apache/hadoop/hdds/scm/cli/datanode/TestDecommissionStatusSubCommand.java index d810df6722b8..66ced0132a4c 100644 --- a/hadoop-hdds/tools/src/test/java/org/apache/hadoop/hdds/scm/cli/datanode/TestDecommissionStatusSubCommand.java +++ b/hadoop-hdds/tools/src/test/java/org/apache/hadoop/hdds/scm/cli/datanode/TestDecommissionStatusSubCommand.java @@ -264,14 +264,14 @@ private List getNodeDetails(int n) { private Map> getContainersOnDecomNodes() { Map> containerMap = new HashMap<>(); List underReplicated = new ArrayList<>(); - underReplicated.add(new ContainerID(1L)); - underReplicated.add(new ContainerID(2L)); - underReplicated.add(new ContainerID(3L)); + underReplicated.add(ContainerID.valueOf(1L)); + underReplicated.add(ContainerID.valueOf(2L)); + underReplicated.add(ContainerID.valueOf(3L)); containerMap.put("UnderReplicated", underReplicated); List unclosed = new ArrayList<>(); - unclosed.add(new ContainerID(10L)); - unclosed.add(new ContainerID(11L)); - unclosed.add(new ContainerID(12L)); + unclosed.add(ContainerID.valueOf(10L)); + unclosed.add(ContainerID.valueOf(11L)); + unclosed.add(ContainerID.valueOf(12L)); containerMap.put("UnClosed", unclosed); return containerMap; } diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/container/TestScmApplyTransactionFailure.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/container/TestScmApplyTransactionFailure.java index 84c31f088d0a..2bb67e9a8842 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/container/TestScmApplyTransactionFailure.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/container/TestScmApplyTransactionFailure.java @@ -80,7 +80,7 @@ public void testAddContainerToClosedPipeline() throws Exception { InvalidPipelineStateException.class); assertThrows(ContainerNotFoundException.class, () -> containerManager.getContainer( - new ContainerID(containerInfo.getContainerID()))); + ContainerID.valueOf(containerInfo.getContainerID()))); // verify that SCMStateMachine is still functioning after the rejected // transaction. diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/storage/TestContainerCommandsEC.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/storage/TestContainerCommandsEC.java index e553d32eed10..d79c31266281 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/storage/TestContainerCommandsEC.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/storage/TestContainerCommandsEC.java @@ -268,7 +268,7 @@ public void testOrphanBlock() throws Exception { Token orphanContainerToken = containerTokenGenerator.generateToken( - ANY_USER, new ContainerID(orphanContainerID)); + ANY_USER, ContainerID.valueOf(orphanContainerID)); // Close the container by closing the pipeline scm.getPipelineManager().closePipeline(orphanPipeline, false); @@ -689,7 +689,7 @@ private void testECReconstructionCoordinator(List missingIndexes, OzoneKeyDetails key = bucket.getKey(keyString); long conID = key.getOzoneKeyLocations().get(0).getContainerID(); Token cToken = containerTokenGenerator - .generateToken(ANY_USER, new ContainerID(conID)); + .generateToken(ANY_USER, ContainerID.valueOf(conID)); //Close the container first. closeContainer(conID); @@ -876,7 +876,7 @@ public void testECReconstructionCoordinatorShouldCleanupContainersOnFailure() OzoneKeyDetails key = bucket.getKey(keyString); long conID = key.getOzoneKeyLocations().get(0).getContainerID(); Token cToken = - containerTokenGenerator.generateToken(ANY_USER, new ContainerID(conID)); + containerTokenGenerator.generateToken(ANY_USER, ContainerID.valueOf(conID)); closeContainer(conID); Pipeline containerPipeline = scm.getPipelineManager().getPipeline( @@ -1050,7 +1050,7 @@ public static void prepareData(int[][] ranges) throws Exception { blockTokenGenerator = new OzoneBlockTokenSecretManager( tokenLifetime, secretKeyClient); containerToken = containerTokenGenerator - .generateToken(ANY_USER, new ContainerID(containerID)); + .generateToken(ANY_USER, ContainerID.valueOf(containerID)); } public static void stopCluster() throws IOException { diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/dn/scanner/TestContainerScannerIntegrationAbstract.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/dn/scanner/TestContainerScannerIntegrationAbstract.java index e4d49af9e66a..b9710b45455d 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/dn/scanner/TestContainerScannerIntegrationAbstract.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/dn/scanner/TestContainerScannerIntegrationAbstract.java @@ -146,7 +146,7 @@ protected void waitForScmToCloseContainer(long containerID) throws Exception { ContainerManager cm = cluster.getStorageContainerManager() .getContainerManager(); LambdaTestUtils.await(5000, 500, - () -> cm.getContainer(new ContainerID(containerID)).getState() + () -> cm.getContainer(ContainerID.valueOf(containerID)).getState() != HddsProtos.LifeCycleState.OPEN); } diff --git a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestEndpoints.java b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestEndpoints.java index d7873b25a467..eb09cf3ca705 100644 --- a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestEndpoints.java +++ b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestEndpoints.java @@ -954,12 +954,12 @@ public void testGetFileCounts() throws Exception { public void testGetContainerCounts() throws Exception { // Mock container info objects with different sizes ContainerInfo omContainerInfo1 = mock(ContainerInfo.class); - given(omContainerInfo1.containerID()).willReturn(new ContainerID(1)); + given(omContainerInfo1.containerID()).willReturn(ContainerID.valueOf(1)); given(omContainerInfo1.getUsedBytes()).willReturn(1500000000L); // 1.5GB given(omContainerInfo1.getState()).willReturn(LifeCycleState.OPEN); ContainerInfo omContainerInfo2 = mock(ContainerInfo.class); - given(omContainerInfo2.containerID()).willReturn(new ContainerID(2)); + given(omContainerInfo2.containerID()).willReturn(ContainerID.valueOf(2)); given(omContainerInfo2.getUsedBytes()).willReturn(2500000000L); // 2.5GB given(omContainerInfo2.getState()).willReturn(LifeCycleState.OPEN); @@ -1437,14 +1437,14 @@ private List getNodeDetails(int n) { private Map> getContainersOnDecomNodes() { Map> containerMap = new HashMap<>(); List underReplicated = new ArrayList<>(); - underReplicated.add(new ContainerID(1L)); - underReplicated.add(new ContainerID(2L)); - underReplicated.add(new ContainerID(3L)); + underReplicated.add(ContainerID.valueOf(1L)); + underReplicated.add(ContainerID.valueOf(2L)); + underReplicated.add(ContainerID.valueOf(3L)); containerMap.put("UnderReplicated", underReplicated); List unclosed = new ArrayList<>(); - unclosed.add(new ContainerID(10L)); - unclosed.add(new ContainerID(11L)); - unclosed.add(new ContainerID(12L)); + unclosed.add(ContainerID.valueOf(10L)); + unclosed.add(ContainerID.valueOf(11L)); + unclosed.add(ContainerID.valueOf(12L)); containerMap.put("UnClosed", unclosed); return containerMap; } diff --git a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithFSO.java b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithFSO.java index d5ebf03a8e1c..30d786918b4b 100644 --- a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithFSO.java +++ b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithFSO.java @@ -1352,42 +1352,42 @@ private static ReconStorageContainerManagerFacade getMockReconSCM() ContainerManager containerManager = mock(ContainerManager.class); // Container 1 is 3-way replicated - ContainerID containerID1 = new ContainerID(CONTAINER_ONE_ID); + ContainerID containerID1 = ContainerID.valueOf(CONTAINER_ONE_ID); Set containerReplicas1 = generateMockContainerReplicas( CONTAINER_ONE_REPLICA_COUNT, containerID1); when(containerManager.getContainerReplicas(containerID1)) .thenReturn(containerReplicas1); // Container 2 is under replicated with 2 replica - ContainerID containerID2 = new ContainerID(CONTAINER_TWO_ID); + ContainerID containerID2 = ContainerID.valueOf(CONTAINER_TWO_ID); Set containerReplicas2 = generateMockContainerReplicas( CONTAINER_TWO_REPLICA_COUNT, containerID2); when(containerManager.getContainerReplicas(containerID2)) .thenReturn(containerReplicas2); // Container 3 is over replicated with 4 replica - ContainerID containerID3 = new ContainerID(CONTAINER_THREE_ID); + ContainerID containerID3 = ContainerID.valueOf(CONTAINER_THREE_ID); Set containerReplicas3 = generateMockContainerReplicas( CONTAINER_THREE_REPLICA_COUNT, containerID3); when(containerManager.getContainerReplicas(containerID3)) .thenReturn(containerReplicas3); // Container 4 is replicated with 5 replica - ContainerID containerID4 = new ContainerID(CONTAINER_FOUR_ID); + ContainerID containerID4 = ContainerID.valueOf(CONTAINER_FOUR_ID); Set containerReplicas4 = generateMockContainerReplicas( CONTAINER_FOUR_REPLICA_COUNT, containerID4); when(containerManager.getContainerReplicas(containerID4)) .thenReturn(containerReplicas4); // Container 5 is replicated with 2 replica - ContainerID containerID5 = new ContainerID(CONTAINER_FIVE_ID); + ContainerID containerID5 = ContainerID.valueOf(CONTAINER_FIVE_ID); Set containerReplicas5 = generateMockContainerReplicas( CONTAINER_FIVE_REPLICA_COUNT, containerID5); when(containerManager.getContainerReplicas(containerID5)) .thenReturn(containerReplicas5); // Container 6 is replicated with 3 replica - ContainerID containerID6 = new ContainerID(CONTAINER_SIX_ID); + ContainerID containerID6 = ContainerID.valueOf(CONTAINER_SIX_ID); Set containerReplicas6 = generateMockContainerReplicas( CONTAINER_SIX_REPLICA_COUNT, containerID6); when(containerManager.getContainerReplicas(containerID6)) diff --git a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithLegacy.java b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithLegacy.java index 1a01e125435e..3a37c45b5f3a 100644 --- a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithLegacy.java +++ b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithLegacy.java @@ -1277,42 +1277,42 @@ private static ReconStorageContainerManagerFacade getMockReconSCM() ContainerManager containerManager = mock(ContainerManager.class); // Container 1 is 3-way replicated - ContainerID containerID1 = new ContainerID(CONTAINER_ONE_ID); + ContainerID containerID1 = ContainerID.valueOf(CONTAINER_ONE_ID); Set containerReplicas1 = generateMockContainerReplicas( CONTAINER_ONE_REPLICA_COUNT, containerID1); when(containerManager.getContainerReplicas(containerID1)) .thenReturn(containerReplicas1); // Container 2 is under replicated with 2 replica - ContainerID containerID2 = new ContainerID(CONTAINER_TWO_ID); + ContainerID containerID2 = ContainerID.valueOf(CONTAINER_TWO_ID); Set containerReplicas2 = generateMockContainerReplicas( CONTAINER_TWO_REPLICA_COUNT, containerID2); when(containerManager.getContainerReplicas(containerID2)) .thenReturn(containerReplicas2); // Container 3 is over replicated with 4 replica - ContainerID containerID3 = new ContainerID(CONTAINER_THREE_ID); + ContainerID containerID3 = ContainerID.valueOf(CONTAINER_THREE_ID); Set containerReplicas3 = generateMockContainerReplicas( CONTAINER_THREE_REPLICA_COUNT, containerID3); when(containerManager.getContainerReplicas(containerID3)) .thenReturn(containerReplicas3); // Container 4 is replicated with 5 replica - ContainerID containerID4 = new ContainerID(CONTAINER_FOUR_ID); + ContainerID containerID4 = ContainerID.valueOf(CONTAINER_FOUR_ID); Set containerReplicas4 = generateMockContainerReplicas( CONTAINER_FOUR_REPLICA_COUNT, containerID4); when(containerManager.getContainerReplicas(containerID4)) .thenReturn(containerReplicas4); // Container 5 is replicated with 2 replica - ContainerID containerID5 = new ContainerID(CONTAINER_FIVE_ID); + ContainerID containerID5 = ContainerID.valueOf(CONTAINER_FIVE_ID); Set containerReplicas5 = generateMockContainerReplicas( CONTAINER_FIVE_REPLICA_COUNT, containerID5); when(containerManager.getContainerReplicas(containerID5)) .thenReturn(containerReplicas5); // Container 6 is replicated with 3 replica - ContainerID containerID6 = new ContainerID(CONTAINER_SIX_ID); + ContainerID containerID6 = ContainerID.valueOf(CONTAINER_SIX_ID); Set containerReplicas6 = generateMockContainerReplicas( CONTAINER_SIX_REPLICA_COUNT, containerID6); when(containerManager.getContainerReplicas(containerID6)) diff --git a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithOBSAndLegacy.java b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithOBSAndLegacy.java index 96fb41272f39..a4fa0e220d29 100644 --- a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithOBSAndLegacy.java +++ b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithOBSAndLegacy.java @@ -1396,42 +1396,42 @@ private static ReconStorageContainerManagerFacade getMockReconSCM() ContainerManager containerManager = mock(ContainerManager.class); // Container 1 is 3-way replicated - ContainerID containerID1 = new ContainerID(CONTAINER_ONE_ID); + ContainerID containerID1 = ContainerID.valueOf(CONTAINER_ONE_ID); Set containerReplicas1 = generateMockContainerReplicas( CONTAINER_ONE_REPLICA_COUNT, containerID1); when(containerManager.getContainerReplicas(containerID1)) .thenReturn(containerReplicas1); // Container 2 is under replicated with 2 replica - ContainerID containerID2 = new ContainerID(CONTAINER_TWO_ID); + ContainerID containerID2 = ContainerID.valueOf(CONTAINER_TWO_ID); Set containerReplicas2 = generateMockContainerReplicas( CONTAINER_TWO_REPLICA_COUNT, containerID2); when(containerManager.getContainerReplicas(containerID2)) .thenReturn(containerReplicas2); // Container 3 is over replicated with 4 replica - ContainerID containerID3 = new ContainerID(CONTAINER_THREE_ID); + ContainerID containerID3 = ContainerID.valueOf(CONTAINER_THREE_ID); Set containerReplicas3 = generateMockContainerReplicas( CONTAINER_THREE_REPLICA_COUNT, containerID3); when(containerManager.getContainerReplicas(containerID3)) .thenReturn(containerReplicas3); // Container 4 is replicated with 5 replica - ContainerID containerID4 = new ContainerID(CONTAINER_FOUR_ID); + ContainerID containerID4 = ContainerID.valueOf(CONTAINER_FOUR_ID); Set containerReplicas4 = generateMockContainerReplicas( CONTAINER_FOUR_REPLICA_COUNT, containerID4); when(containerManager.getContainerReplicas(containerID4)) .thenReturn(containerReplicas4); // Container 5 is replicated with 2 replica - ContainerID containerID5 = new ContainerID(CONTAINER_FIVE_ID); + ContainerID containerID5 = ContainerID.valueOf(CONTAINER_FIVE_ID); Set containerReplicas5 = generateMockContainerReplicas( CONTAINER_FIVE_REPLICA_COUNT, containerID5); when(containerManager.getContainerReplicas(containerID5)) .thenReturn(containerReplicas5); // Container 6 is replicated with 3 replica - ContainerID containerID6 = new ContainerID(CONTAINER_SIX_ID); + ContainerID containerID6 = ContainerID.valueOf(CONTAINER_SIX_ID); Set containerReplicas6 = generateMockContainerReplicas( CONTAINER_SIX_REPLICA_COUNT, containerID6); when(containerManager.getContainerReplicas(containerID6)) diff --git a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/tasks/TestContainerSizeCountTask.java b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/tasks/TestContainerSizeCountTask.java index 032b948233eb..6e444717b290 100644 --- a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/tasks/TestContainerSizeCountTask.java +++ b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/tasks/TestContainerSizeCountTask.java @@ -90,18 +90,18 @@ public void setUp() { public void testProcess() { // mock a container with invalid used bytes ContainerInfo omContainerInfo0 = mock(ContainerInfo.class); - given(omContainerInfo0.containerID()).willReturn(new ContainerID(0)); + given(omContainerInfo0.containerID()).willReturn(ContainerID.valueOf(0)); given(omContainerInfo0.getUsedBytes()).willReturn(-1L); given(omContainerInfo0.getState()).willReturn(OPEN); // Write 2 keys ContainerInfo omContainerInfo1 = mock(ContainerInfo.class); - given(omContainerInfo1.containerID()).willReturn(new ContainerID(1)); + given(omContainerInfo1.containerID()).willReturn(ContainerID.valueOf(1)); given(omContainerInfo1.getUsedBytes()).willReturn(1500000000L); // 1.5GB given(omContainerInfo1.getState()).willReturn(CLOSED); ContainerInfo omContainerInfo2 = mock(ContainerInfo.class); - given(omContainerInfo2.containerID()).willReturn(new ContainerID(2)); + given(omContainerInfo2.containerID()).willReturn(ContainerID.valueOf(2)); given(omContainerInfo2.getUsedBytes()).willReturn(2500000000L); // 2.5GB given(omContainerInfo2.getState()).willReturn(CLOSING); @@ -134,13 +134,13 @@ public void testProcess() { // Add a new container ContainerInfo omContainerInfo3 = mock(ContainerInfo.class); - given(omContainerInfo3.containerID()).willReturn(new ContainerID(3)); + given(omContainerInfo3.containerID()).willReturn(ContainerID.valueOf(3)); given(omContainerInfo3.getUsedBytes()).willReturn(1000000000L); // 1GB given(omContainerInfo3.getState()).willReturn(QUASI_CLOSED); containers.add(omContainerInfo3); // Update existing key. - given(omContainerInfo2.containerID()).willReturn(new ContainerID(2)); + given(omContainerInfo2.containerID()).willReturn(ContainerID.valueOf(2)); given(omContainerInfo2.getUsedBytes()).willReturn(50000L); // 50KB task.processContainers(containers); @@ -178,23 +178,23 @@ public void testProcess() { public void testProcessDeletedAndNegativeSizedContainers() { // Create a list of containers, including one that is deleted ContainerInfo omContainerInfo1 = mock(ContainerInfo.class); - given(omContainerInfo1.containerID()).willReturn(new ContainerID(1)); + given(omContainerInfo1.containerID()).willReturn(ContainerID.valueOf(1)); given(omContainerInfo1.getUsedBytes()).willReturn(1500000000L); // 1.5GB given(omContainerInfo1.getState()).willReturn(OPEN); ContainerInfo omContainerInfo2 = mock(ContainerInfo.class); - given(omContainerInfo2.containerID()).willReturn(new ContainerID(2)); + given(omContainerInfo2.containerID()).willReturn(ContainerID.valueOf(2)); given(omContainerInfo2.getUsedBytes()).willReturn(2500000000L); // 2.5GB given(omContainerInfo2.getState()).willReturn(CLOSED); ContainerInfo omContainerInfoDeleted = mock(ContainerInfo.class); - given(omContainerInfoDeleted.containerID()).willReturn(new ContainerID(3)); + given(omContainerInfoDeleted.containerID()).willReturn(ContainerID.valueOf(3)); given(omContainerInfoDeleted.getUsedBytes()).willReturn(1000000000L); given(omContainerInfoDeleted.getState()).willReturn(DELETED); // 1GB // Create a mock container with negative size final ContainerInfo negativeSizeContainer = mock(ContainerInfo.class); - given(negativeSizeContainer.containerID()).willReturn(new ContainerID(0)); + given(negativeSizeContainer.containerID()).willReturn(ContainerID.valueOf(0)); given(negativeSizeContainer.getUsedBytes()).willReturn(-1L); given(negativeSizeContainer.getState()).willReturn(OPEN); @@ -202,13 +202,13 @@ public void testProcessDeletedAndNegativeSizedContainers() { final ContainerInfo negativeSizeDeletedContainer = mock(ContainerInfo.class); given(negativeSizeDeletedContainer.containerID()).willReturn( - new ContainerID(0)); + ContainerID.valueOf(0)); given(negativeSizeDeletedContainer.getUsedBytes()).willReturn(-1L); given(negativeSizeDeletedContainer.getState()).willReturn(DELETED); // Create a mock container with id 1 and updated size of 1GB from 1.5GB final ContainerInfo validSizeContainer = mock(ContainerInfo.class); - given(validSizeContainer.containerID()).willReturn(new ContainerID(1)); + given(validSizeContainer.containerID()).willReturn(ContainerID.valueOf(1)); given(validSizeContainer.getUsedBytes()).willReturn(1000000000L); // 1GB given(validSizeContainer.getState()).willReturn(CLOSED); diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/ldb/DBScanner.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/ldb/DBScanner.java index bd74aca5bb99..acd3d978b783 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/ldb/DBScanner.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/ldb/DBScanner.java @@ -215,7 +215,7 @@ public byte[] getValueObject(DBColumnFamilyDefinition dbColumnFamilyDefinition, if (keyType.equals(String.class)) { return key.getBytes(UTF_8); } else if (keyType.equals(ContainerID.class)) { - return new ContainerID(Long.parseLong(key)).getBytes(); + return ContainerID.getBytes(Long.parseLong(key)); } else if (keyType.equals(Long.class)) { return LongCodec.get().toPersistedFormat(Long.parseLong(key)); } else if (keyType.equals(PipelineID.class)) { diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorScm.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorScm.java index f2766438f4c2..efce02d54f5c 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorScm.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorScm.java @@ -84,7 +84,7 @@ private void writeScmData(long index) throws Exception { .setOwner(getUserId()) .build(); - containerStore.put(new ContainerID(containerId), containerInfo); + containerStore.put(ContainerID.valueOf(containerId), containerInfo); return null; });