diff --git a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/ContainerClientMetrics.java b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/ContainerClientMetrics.java index f30b869d866a..64cfb32ddcce 100644 --- a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/ContainerClientMetrics.java +++ b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/ContainerClientMetrics.java @@ -19,8 +19,8 @@ import com.google.common.annotations.VisibleForTesting; import java.util.Map; -import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; +import org.apache.hadoop.hdds.protocol.DatanodeID; import org.apache.hadoop.hdds.scm.pipeline.Pipeline; import org.apache.hadoop.hdds.scm.pipeline.PipelineID; import org.apache.hadoop.metrics2.annotation.Metric; @@ -76,7 +76,7 @@ public final class ContainerClientMetrics { private MutableQuantiles[] datanodeHsyncLatencyNs; private final Map writeChunkCallsByPipeline; private final Map writeChunkBytesByPipeline; - private final Map writeChunksCallsByLeaders; + private final Map writeChunksCallsByLeaders; private final MetricsRegistry registry; public static synchronized ContainerClientMetrics acquire() { @@ -272,7 +272,7 @@ Map getWriteChunkCallsByPipeline() { return writeChunkCallsByPipeline; } - Map getWriteChunksCallsByLeaders() { + Map getWriteChunksCallsByLeaders() { return writeChunksCallsByLeaders; } diff --git a/hadoop-hdds/client/src/test/java/org/apache/hadoop/hdds/scm/TestContainerClientMetrics.java b/hadoop-hdds/client/src/test/java/org/apache/hadoop/hdds/scm/TestContainerClientMetrics.java index d0fb7c177250..02150a51460b 100644 --- a/hadoop-hdds/client/src/test/java/org/apache/hadoop/hdds/scm/TestContainerClientMetrics.java +++ b/hadoop-hdds/client/src/test/java/org/apache/hadoop/hdds/scm/TestContainerClientMetrics.java @@ -23,8 +23,8 @@ import static org.mockito.Mockito.mock; import java.util.Collections; -import java.util.UUID; import org.apache.hadoop.hdds.client.ReplicationConfig; +import org.apache.hadoop.hdds.protocol.DatanodeID; import org.apache.hadoop.hdds.scm.pipeline.Pipeline; import org.apache.hadoop.hdds.scm.pipeline.PipelineID; import org.junit.jupiter.api.BeforeEach; @@ -45,9 +45,9 @@ public void setup() { public void testRecordChunkMetrics() { ContainerClientMetrics metrics = ContainerClientMetrics.acquire(); PipelineID pipelineId1 = PipelineID.randomId(); - UUID leaderId1 = UUID.randomUUID(); + DatanodeID leaderId1 = DatanodeID.randomID(); PipelineID pipelineId2 = PipelineID.randomId(); - UUID leaderId2 = UUID.randomUUID(); + DatanodeID leaderId2 = DatanodeID.randomID(); PipelineID pipelineId3 = PipelineID.randomId(); metrics.recordWriteChunk(createPipeline(pipelineId1, leaderId1), 10); @@ -103,7 +103,7 @@ public void testAcquireAndRelease() { assertNotNull(ContainerClientMetrics.acquire()); } - private Pipeline createPipeline(PipelineID piplineId, UUID leaderId) { + private Pipeline createPipeline(PipelineID piplineId, DatanodeID leaderId) { return Pipeline.newBuilder() .setId(piplineId) .setReplicationConfig(mock(ReplicationConfig.class)) diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/protocol/DatanodeID.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/protocol/DatanodeID.java index 10c1a872d08d..ba6b685fbad1 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/protocol/DatanodeID.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/protocol/DatanodeID.java @@ -94,6 +94,10 @@ public static DatanodeID of(final UUID id) { return CACHE.computeIfAbsent(id, DatanodeID::new); } + public static DatanodeID of(final HddsProtos.UUID uuid) { + return of(new UUID(uuid.getMostSigBits(), uuid.getLeastSigBits())); + } + /** * Returns a random DatanodeID. */ diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/pipeline/Pipeline.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/pipeline/Pipeline.java index ccf7b308d41c..991d89e222f3 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/pipeline/Pipeline.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/pipeline/Pipeline.java @@ -33,7 +33,6 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; -import java.util.UUID; import java.util.function.Function; import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; @@ -42,6 +41,7 @@ import org.apache.hadoop.hdds.client.ECReplicationConfig; import org.apache.hadoop.hdds.client.ReplicationConfig; import org.apache.hadoop.hdds.protocol.DatanodeDetails; +import org.apache.hadoop.hdds.protocol.DatanodeID; import org.apache.hadoop.hdds.protocol.proto.HddsProtos; import org.apache.hadoop.hdds.protocol.proto.HddsProtos.DatanodeDetailsProto; import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ReplicationType; @@ -78,11 +78,11 @@ public final class Pipeline { // nodes with ordered distance to client private final ImmutableList nodesInOrder; // Current reported Leader for the pipeline - private UUID leaderId; + private DatanodeID leaderId; // Timestamp for pipeline upon creation private Instant creationTimestamp; // suggested leader id with high priority - private final UUID suggestedLeaderId; + private final DatanodeID suggestedLeaderId; private final Instant stateEnterTime; @@ -163,7 +163,7 @@ public Instant getStateEnterTime() { * * @return Suggested LeaderId */ - public UUID getSuggestedLeaderId() { + public DatanodeID getSuggestedLeaderId() { return suggestedLeaderId; } @@ -175,18 +175,18 @@ public void setCreationTimestamp(Instant creationTimestamp) { } /** - * Return the pipeline leader's UUID. + * Return the pipeline leader's DatanodeID. * - * @return DatanodeDetails.UUID. + * @return DatanodeDetails.DatanodeID. */ - public UUID getLeaderId() { + public DatanodeID getLeaderId() { return leaderId; } /** * Pipeline object, outside of letting leader id to be set, is immutable. */ - void setLeaderId(UUID leaderId) { + void setLeaderId(DatanodeID leaderId) { this.leaderId = leaderId; } @@ -256,7 +256,7 @@ public DatanodeDetails getLeaderNode() throws IOException { } Optional datanodeDetails = nodeStatus.keySet().stream().filter(d -> - d.getUuid().equals(leaderId)).findFirst(); + d.getID().equals(leaderId)).findFirst(); if (datanodeDetails.isPresent()) { return datanodeDetails.get(); } else { @@ -389,19 +389,11 @@ public HddsProtos.Pipeline getProtobufMessage(int clientVersion, Set nodeStatus = null; private List nodeOrder = null; private List nodesInOrder = null; - private UUID leaderId = null; + private DatanodeID leaderId = null; private Instant creationTimestamp = null; - private UUID suggestedLeaderId = null; + private DatanodeID suggestedLeaderId = null; private Map replicaIndexes = ImmutableMap.of(); public Builder() { } @@ -593,7 +588,7 @@ public Builder setState(PipelineState state1) { return this; } - public Builder setLeaderId(UUID leaderId1) { + public Builder setLeaderId(DatanodeID leaderId1) { this.leaderId = leaderId1; return this; } @@ -631,8 +626,8 @@ public Builder setCreateTimestamp(long createTimestamp) { return this; } - public Builder setSuggestedLeaderId(UUID uuid) { - this.suggestedLeaderId = uuid; + public Builder setSuggestedLeaderId(DatanodeID dnId) { + this.suggestedLeaderId = dnId; return this; } diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineID.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineID.java index 02b8cf463bde..fdf4dca51935 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineID.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineID.java @@ -52,6 +52,10 @@ public static PipelineID valueOf(UUID id) { return new PipelineID(id); } + public static PipelineID valueOf(String id) { + return valueOf(UUID.fromString(id)); + } + public UUID getId() { return id; } diff --git a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/pipeline/MockPipeline.java b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/pipeline/MockPipeline.java index 1134631eafe9..bf7245d0dfb8 100644 --- a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/pipeline/MockPipeline.java +++ b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/pipeline/MockPipeline.java @@ -24,11 +24,11 @@ import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.UUID; import org.apache.hadoop.hdds.client.ECReplicationConfig; import org.apache.hadoop.hdds.client.RatisReplicationConfig; import org.apache.hadoop.hdds.client.StandaloneReplicationConfig; import org.apache.hadoop.hdds.protocol.DatanodeDetails; +import org.apache.hadoop.hdds.protocol.DatanodeID; import org.apache.hadoop.hdds.protocol.MockDatanodeDetails; import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ReplicationFactor; @@ -86,7 +86,7 @@ public static Pipeline createRatisPipeline() { .setReplicationConfig( RatisReplicationConfig.getInstance(ReplicationFactor.THREE)) .setNodes(nodes) - .setLeaderId(UUID.randomUUID()) + .setLeaderId(DatanodeID.randomID()) .build(); } diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineReportHandler.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineReportHandler.java index dc3b01682331..7e3bf8d5b166 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineReportHandler.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineReportHandler.java @@ -153,7 +153,7 @@ protected void setPipelineLeaderId(PipelineReport report, if (report.getIsLeader() || RatisReplicationConfig.hasFactor(pipeline.getReplicationConfig(), ReplicationFactor.ONE)) { - pipeline.setLeaderId(dn.getUuid()); + pipeline.setLeaderId(dn.getID()); metrics.incNumPipelineBytesWritten(pipeline, report.getBytesWritten()); } } diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/RatisPipelineProvider.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/RatisPipelineProvider.java index a7c09238b4cf..5b80743eb954 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/RatisPipelineProvider.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/RatisPipelineProvider.java @@ -192,7 +192,7 @@ public synchronized Pipeline create(RatisReplicationConfig replicationConfig, .setReplicationConfig(RatisReplicationConfig.getInstance(factor)) .setNodes(dns) .setSuggestedLeaderId( - suggestedLeader != null ? suggestedLeader.getUuid() : null) + suggestedLeader != null ? suggestedLeader.getID() : null) .build(); // Send command to datanodes to create pipeline diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/leader/choose/algorithms/MinLeaderCountChoosePolicy.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/leader/choose/algorithms/MinLeaderCountChoosePolicy.java index acd14f45c32a..440c02c6c00a 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/leader/choose/algorithms/MinLeaderCountChoosePolicy.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/leader/choose/algorithms/MinLeaderCountChoosePolicy.java @@ -75,7 +75,7 @@ private Map getSuggestedLeaderCount( try { Pipeline pipeline = pipelineStateManager.getPipeline(pipelineID); if (!pipeline.isClosed() - && dn.getUuid().equals(pipeline.getSuggestedLeaderId())) { + && dn.getID().equals(pipeline.getSuggestedLeaderId())) { suggestedLeaderCount.put(dn, suggestedLeaderCount.get(dn) + 1); } } catch (PipelineNotFoundException e) { diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestCloseContainerEventHandler.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestCloseContainerEventHandler.java index 7da006cff7b1..fd8115519904 100644 --- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestCloseContainerEventHandler.java +++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/TestCloseContainerEventHandler.java @@ -228,7 +228,7 @@ private Pipeline createPipeline(ReplicationConfig repConfig, int nodes) { dns.add(MockDatanodeDetails.randomDatanodeDetails()); } builder.setNodes(dns); - builder.setLeaderId(dns.get(0).getUuid()); + builder.setLeaderId(dns.get(0).getID()); return builder.build(); } diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/pipeline/MockRatisPipelineProvider.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/pipeline/MockRatisPipelineProvider.java index 4e83bb7b03de..82c661210c60 100644 --- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/pipeline/MockRatisPipelineProvider.java +++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/pipeline/MockRatisPipelineProvider.java @@ -88,7 +88,7 @@ public static void markPipelineHealthy(Pipeline pipeline) for (DatanodeDetails datanodeDetails : pipeline.getNodes()) { pipeline.reportDatanode(datanodeDetails); } - pipeline.setLeaderId(pipeline.getFirstNode().getUuid()); + pipeline.setLeaderId(pipeline.getFirstNode().getID()); } @Override diff --git a/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/ListInfoSubcommand.java b/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/ListInfoSubcommand.java index 90e678f28155..c7b65d5ba2a3 100644 --- a/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/ListInfoSubcommand.java +++ b/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/ListInfoSubcommand.java @@ -148,7 +148,7 @@ private void printDatanodeInfo(DatanodeWithAttributes dna) { .append('/').append(p.getReplicationConfig().toString()) .append('/').append(p.getType().toString()) .append('/').append(p.getPipelineState().toString()).append('/') - .append(datanode.getUuid().equals(p.getLeaderId()) ? + .append(datanode.getID().equals(p.getLeaderId()) ? "Leader" : "Follower") .append(System.getProperty("line.separator"))); } diff --git a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/LeaderAppendLogEntryGenerator.java b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/LeaderAppendLogEntryGenerator.java index 64156205e7a8..37b6af06bf71 100644 --- a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/LeaderAppendLogEntryGenerator.java +++ b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/LeaderAppendLogEntryGenerator.java @@ -32,6 +32,7 @@ import org.apache.hadoop.hdds.conf.OzoneConfiguration; import org.apache.hadoop.hdds.protocol.DatanodeDetails; import org.apache.hadoop.hdds.protocol.DatanodeDetails.Port.Name; +import org.apache.hadoop.hdds.protocol.DatanodeID; import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos.ChecksumData; import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos.ChecksumType; import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos.ChunkInfo; @@ -184,18 +185,18 @@ private XceiverClientRatis createXceiverClient(OzoneConfiguration conf) { List datanodes = new ArrayList<>(); datanodes.add(DatanodeDetails.newBuilder() - .setUuid(UUID.fromString(serverId)) + .setID(DatanodeID.fromUuidString(serverId)) .setHostName("localhost") .setIpAddress("127.0.0.1") .addPort(DatanodeDetails.newPort(Name.RATIS, 9858)) .build()); Pipeline pipeline = Pipeline.newBuilder() - .setId(PipelineID.valueOf(UUID.fromString(pipelineId))) + .setId(PipelineID.valueOf(pipelineId)) .setState(PipelineState.OPEN) .setReplicationConfig( RatisReplicationConfig.getInstance(ReplicationFactor.THREE)) - .setLeaderId(UUID.fromString(serverId)) + .setLeaderId(DatanodeID.fromUuidString(serverId)) .setNodes(datanodes) .build(); diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/TestRatisPipelineLeader.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/TestRatisPipelineLeader.java index dc54838d8514..a60a8f3f4ecd 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/TestRatisPipelineLeader.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/TestRatisPipelineLeader.java @@ -123,7 +123,7 @@ public void testLeaderIdAfterLeaderChange() throws Exception { Pipeline ratisPipeline = optional.get(); Optional dnToStop = cluster.getHddsDatanodes().stream().filter(s -> - !s.getDatanodeStateMachine().getDatanodeDetails().getUuid().equals( + !s.getDatanodeStateMachine().getDatanodeDetails().getID().equals( ratisPipeline.getLeaderId())).findAny(); assertTrue(dnToStop.isPresent()); dnToStop.get().stop(); @@ -145,7 +145,7 @@ public void testLeaderIdAfterLeaderChange() throws Exception { private boolean verifyLeaderInfo(Pipeline ratisPipeline) throws Exception { Optional hddsDatanodeService = cluster.getHddsDatanodes().stream().filter(s -> - s.getDatanodeStateMachine().getDatanodeDetails().getUuid() + s.getDatanodeStateMachine().getDatanodeDetails().getID() .equals(ratisPipeline.getLeaderId())).findFirst(); assertTrue(hddsDatanodeService.isPresent()); diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestLeaderChoosePolicy.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestLeaderChoosePolicy.java index d9acd8cbad1e..636f66f37c45 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestLeaderChoosePolicy.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestLeaderChoosePolicy.java @@ -29,12 +29,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.UUID; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import org.apache.commons.lang3.RandomUtils; import org.apache.hadoop.hdds.client.RatisReplicationConfig; import org.apache.hadoop.hdds.conf.OzoneConfiguration; +import org.apache.hadoop.hdds.protocol.DatanodeID; import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ReplicationFactor; import org.apache.hadoop.hdds.scm.server.StorageContainerManager; import org.apache.hadoop.ozone.MiniOzoneCluster; @@ -85,9 +85,9 @@ private void checkLeaderBalance(int dnNum, int leaderNumOfEachDn) pipeline.getLeaderId().equals(pipeline.getSuggestedLeaderId())); } - Map leaderCount = new HashMap<>(); + Map leaderCount = new HashMap<>(); for (Pipeline pipeline : pipelines) { - UUID leader = pipeline.getLeaderId(); + DatanodeID leader = pipeline.getLeaderId(); if (!leaderCount.containsKey(leader)) { leaderCount.put(leader, 0); } @@ -96,7 +96,7 @@ private void checkLeaderBalance(int dnNum, int leaderNumOfEachDn) } assertEquals(dnNum, leaderCount.size()); - for (Map.Entry entry: leaderCount.entrySet()) { + for (Map.Entry entry: leaderCount.entrySet()) { assertEquals(leaderNumOfEachDn, leaderCount.get(entry.getKey())); } } diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestContainerStateMachineFailures.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestContainerStateMachineFailures.java index 63eaf0d9680d..979516e9caaa 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestContainerStateMachineFailures.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestContainerStateMachineFailures.java @@ -61,6 +61,7 @@ import org.apache.hadoop.hdds.conf.DatanodeRatisServerConfig; import org.apache.hadoop.hdds.conf.OzoneConfiguration; import org.apache.hadoop.hdds.protocol.DatanodeDetails; +import org.apache.hadoop.hdds.protocol.DatanodeID; import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos; import org.apache.hadoop.hdds.protocol.proto.HddsProtos; import org.apache.hadoop.hdds.ratis.conf.RatisClientConfig; @@ -815,14 +816,14 @@ void testContainerStateMachineDualFailureRetry() private void induceFollowerFailure(OmKeyLocationInfo omKeyLocationInfo, int failureCount) { - UUID leader = omKeyLocationInfo.getPipeline().getLeaderId(); + DatanodeID leader = omKeyLocationInfo.getPipeline().getLeaderId(); Set datanodeSet = TestHelper.getDatanodeServices(cluster, omKeyLocationInfo.getPipeline()); int count = 0; for (HddsDatanodeService dn : datanodeSet) { - UUID dnUuid = dn.getDatanodeDetails().getUuid(); - if (!dnUuid.equals(leader)) { + DatanodeID dnId = dn.getDatanodeDetails().getID(); + if (!dnId.equals(leader)) { count++; long containerID = omKeyLocationInfo.getContainerID(); Container container = dn diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerUnit.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerUnit.java index 6b0b710a839e..60200cf1c716 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerUnit.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerUnit.java @@ -498,7 +498,7 @@ public void testGetKeyInfo() throws IOException { .setReplicationConfig( RatisReplicationConfig.getInstance(ReplicationFactor.THREE)) .setState(Pipeline.PipelineState.OPEN) - .setLeaderId(dn1.getUuid()) + .setLeaderId(dn1.getID()) .setNodes(Arrays.asList(dn1, dn2, dn3)) .build(); @@ -507,7 +507,7 @@ public void testGetKeyInfo() throws IOException { .setReplicationConfig( RatisReplicationConfig.getInstance(ReplicationFactor.THREE)) .setState(Pipeline.PipelineState.OPEN) - .setLeaderId(dn1.getUuid()) + .setLeaderId(dn1.getID()) .setNodes(Arrays.asList(dn2, dn3, dn4)) .build(); @@ -602,7 +602,7 @@ public void testLookupFileWithDnFailure() throws IOException { .setReplicationConfig( RatisReplicationConfig.getInstance(ReplicationFactor.THREE)) .setState(Pipeline.PipelineState.OPEN) - .setLeaderId(dnOne.getUuid()) + .setLeaderId(dnOne.getID()) .setNodes(Arrays.asList(dnOne, dnTwo, dnThree)) .build(); @@ -611,7 +611,7 @@ public void testLookupFileWithDnFailure() throws IOException { .setReplicationConfig( RatisReplicationConfig.getInstance(ReplicationFactor.THREE)) .setState(Pipeline.PipelineState.OPEN) - .setLeaderId(dnFour.getUuid()) + .setLeaderId(dnFour.getID()) .setNodes(Arrays.asList(dnFour, dnFive, dnSix)) .build(); diff --git a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/NodeEndpoint.java b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/NodeEndpoint.java index 82acb4756504..c4df5a2b5294 100644 --- a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/NodeEndpoint.java +++ b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/NodeEndpoint.java @@ -134,7 +134,7 @@ public Response getDatanodes() { new DatanodePipeline(pipelineID.getId(), pipeline.getReplicationConfig(), leaderNode); pipelines.add(datanodePipeline); - if (datanode.getUuid().equals(pipeline.getLeaderId())) { + if (datanode.getID().equals(pipeline.getLeaderId())) { leaderCount.getAndIncrement(); } int openContainerPerPipeline = diff --git a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/PipelineEndpoint.java b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/PipelineEndpoint.java index 30f63286246d..96badcb95485 100644 --- a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/PipelineEndpoint.java +++ b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/PipelineEndpoint.java @@ -22,7 +22,6 @@ import java.util.ArrayList; import java.util.List; import java.util.TreeMap; -import java.util.UUID; import javax.inject.Inject; import javax.ws.rs.GET; import javax.ws.rs.Path; @@ -30,7 +29,9 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.apache.hadoop.hdds.protocol.DatanodeDetails; +import org.apache.hadoop.hdds.protocol.DatanodeID; import org.apache.hadoop.hdds.scm.pipeline.Pipeline; +import org.apache.hadoop.hdds.scm.pipeline.PipelineID; import org.apache.hadoop.hdds.scm.server.OzoneStorageContainerManager; import org.apache.hadoop.ozone.recon.MetricsServiceProviderFactory; import org.apache.hadoop.ozone.recon.api.types.PipelineMetadata; @@ -73,7 +74,7 @@ public Response getPipelines() { List pipelines = pipelineManager.getPipelines(); pipelines.forEach(pipeline -> { - UUID pipelineId = pipeline.getId().getId(); + final PipelineID pipelineId = pipeline.getId(); List datanodes = new ArrayList<>(); PipelineMetadata.Builder builder = PipelineMetadata.newBuilder(); pipeline.getNodes().forEach(node -> datanodes.add(node)); @@ -98,7 +99,7 @@ public Response getPipelines() { } PipelineMetadata.Builder pipelineBuilder = - builder.setPipelineId(pipelineId) + builder.setPipelineId(pipelineId.getId()) .setDatanodes(datanodes) .setDuration(duration) .setStatus(pipeline.getPipelineState()) @@ -110,7 +111,7 @@ public Response getPipelines() { // Extract last part of pipelineId to get its group Id. // ex. group id of 48981bf7-8bea-4fbd-9857-79df51ee872d // is group-79DF51EE872D - String[] splits = pipelineId.toString().split("-"); + String[] splits = pipelineId.getId().toString().split("-"); String groupId = "group-" + splits[splits.length - 1].toUpperCase(); Long leaderElectionCount = getElectionCountMetricValue(groupId); pipelineBuilder.setLeaderElections(leaderElectionCount); @@ -154,11 +155,10 @@ private Long getElectionCountMetricValue(String groupId) { } private Long getLastLeaderElectionElapsedTimeMetricValue(String groupId, - UUID uuid) { + DatanodeID dnId) { String metricsQuery = String.format( "query=ratis_leader_election_lastLeaderElectionElapsedTime{group=" + - "\"%s\",exported_instance=\"%s\"}", groupId, - uuid.toString()); + "\"%s\",exported_instance=\"%s\"}", groupId, dnId); try { List metrics = metricsServiceProvider.getMetricsInstant( metricsQuery);