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 b91e7f371758..06950f7f69fc 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 @@ -26,6 +26,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Optional; @@ -541,6 +542,12 @@ public Builder setLeaderId(UUID leaderId1) { public Builder setNodes(List nodes) { this.nodeStatus = new LinkedHashMap<>(); nodes.forEach(node -> nodeStatus.put(node, -1L)); + if (nodesInOrder != null) { + // nodesInOrder may belong to another pipeline, avoid overwriting it + nodesInOrder = new LinkedList<>(nodesInOrder); + // drop nodes no longer part of the pipeline + nodesInOrder.retainAll(nodes); + } return this; } diff --git a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/checksum/ECFileChecksumHelper.java b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/checksum/ECFileChecksumHelper.java index fdcfa830086b..fb3ae5d287a9 100644 --- a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/checksum/ECFileChecksumHelper.java +++ b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/checksum/ECFileChecksumHelper.java @@ -173,16 +173,12 @@ private List getChunkInfos(OmKeyLocationInfo nodes.add(dn); } } - List nodesInOrder = - new ArrayList<>(pipeline.getNodesInOrder()); - nodesInOrder.retainAll(nodes); pipeline = Pipeline.newBuilder(pipeline) .setReplicationConfig(StandaloneReplicationConfig .getInstance(HddsProtos.ReplicationFactor.THREE)) .setNodes(nodes) .build(); - pipeline.setNodesInOrder(nodesInOrder); List chunks; XceiverClientSpi xceiverClientSpi = null; diff --git a/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug.robot b/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug.robot index 49ac47117e2c..ce9b749750f5 100644 --- a/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug.robot +++ b/hadoop-ozone/dist/src/main/smoketest/debug/ozone-debug.robot @@ -20,7 +20,7 @@ Resource ../lib/os.robot *** Keywords *** Execute read-replicas CLI tool - Execute ozone debug read-replicas o3://om/${VOLUME}/${BUCKET}/${TESTFILE} + Execute ozone debug -Dozone.network.topology.aware.read=true read-replicas o3://om/${VOLUME}/${BUCKET}/${TESTFILE} ${directory} = Execute ls -d /opt/hadoop/${VOLUME}_${BUCKET}_${TESTFILE}_*/ | tail -n 1 Directory Should Exist ${directory} File Should Exist ${directory}/${TESTFILE}_manifest