ivandika3 commented on code in PR #5725:
URL: https://github.com/apache/ozone/pull/5725#discussion_r1431156206


##########
hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/XceiverServerRatis.java:
##########
@@ -703,11 +703,11 @@ private void handlePipelineFailure(RaftGroupId groupId,
     }
 
     triggerPipelineClose(groupId, msg,
-        ClosePipelineInfo.Reason.PIPELINE_FAILED, false);
+        ClosePipelineInfo.Reason.PIPELINE_FAILED);

Review Comment:
   Thanks @DaveTeng0 for checking this out, I was previously thinking of 
another concurrent set, similar to `raftGids` that will contain the 
`RaftGroupId`s of the inflight pipelines pending to be closed, i.e. the 
datanode has triggered the heartbeat containing DN close pipeline action to the 
SCM, but the DN has not received the close pipeline command from SCM yet.
   
   The idea is to prevent excessive heartbeat triggers since the 
`ContainerStateMachine#notifyFollowerSlowness` hook will get triggered for 
every leader's follower health check (see 
https://github.com/apache/ratis/blob/05db67929a5b06ce964eda6627d44cd153cc2bce/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderStateImpl.java#L1285),
 which might happen every heartbeat (< 150ms).
   
   We can change the `raftGids` to store extra information about whether the 
pipeline for the `RaftGroupId` is pending to be closed.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to