diff --git a/hadoop-hdds/client/src/main/java/org/apache/hadoop/ozone/client/io/ECBlockInputStream.java b/hadoop-hdds/client/src/main/java/org/apache/hadoop/ozone/client/io/ECBlockInputStream.java index 8ad8f8851e81..ea4f3d743f92 100644 --- a/hadoop-hdds/client/src/main/java/org/apache/hadoop/ozone/client/io/ECBlockInputStream.java +++ b/hadoop-hdds/client/src/main/java/org/apache/hadoop/ozone/client/io/ECBlockInputStream.java @@ -181,12 +181,13 @@ protected BlockExtendedInputStream getOrOpenStream(int locationIndex) { // single location for the block index we want to read. The EC blocks are // indexed from 1 to N, however the data locations are stored in the // dataLocations array indexed from zero. + DatanodeDetails dataLocation = dataLocations[locationIndex]; Pipeline pipeline = Pipeline.newBuilder() .setReplicationConfig(StandaloneReplicationConfig.getInstance( HddsProtos.ReplicationFactor.ONE)) - .setNodes(Arrays.asList(dataLocations[locationIndex])) - .setId(PipelineID.randomId()).setReplicaIndexes( - ImmutableMap.of(dataLocations[locationIndex], locationIndex + 1)) + .setNodes(Arrays.asList(dataLocation)) + .setId(PipelineID.valueOf(dataLocation.getUuid())).setReplicaIndexes( + ImmutableMap.of(dataLocation, locationIndex + 1)) .setState(Pipeline.PipelineState.CLOSED) .build();