diff --git a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientGrpc.java b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientGrpc.java index 3b774c6dfdf0..394117e0ac45 100644 --- a/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientGrpc.java +++ b/hadoop-hdds/client/src/main/java/org/apache/hadoop/hdds/scm/XceiverClientGrpc.java @@ -327,9 +327,12 @@ private ContainerCommandRequestProto reconstructRequestIfNeeded( ContainerCommandRequestProto request, DatanodeDetails dn) { boolean isEcRequest = pipeline.getReplicationConfig() .getReplicationType() == HddsProtos.ReplicationType.EC; + if (request.hasReadContainer() && isEcRequest) { + request = request.toBuilder().setDatanodeUuid(dn.getUuidString()).build(); + } if (request.hasGetBlock() && isEcRequest) { ContainerProtos.GetBlockRequestProto gbr = request.getGetBlock(); - request = request.toBuilder().setGetBlock(gbr.toBuilder().setBlockID( + request = request.toBuilder().setDatanodeUuid(dn.getUuidString()).setGetBlock(gbr.toBuilder().setBlockID( gbr.getBlockID().toBuilder().setReplicaIndex( pipeline.getReplicaIndex(dn)).build()).build()).build(); }