bshashikant commented on a change in pull request #2704:
URL: https://github.com/apache/ozone/pull/2704#discussion_r759187676



##########
File path: 
hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/ContainerStateMachine.java
##########
@@ -736,23 +744,48 @@ public void notifyTermIndexUpdated(long term, long index) 
{
     return f;
   }
 
+  // Removes the stateMachine data from cache once both followers catch up
+  // to the particular index.
+  private void removeStateMachineDataIfNeeded(long index) {
+    if (waitOnBothFollowers) {
+      LOG.info("Removing data corresponding to log index {} from cache",
+          index);
+      try {
+        RaftServer.Division division = 
ratisServer.getServer().getDivision(gid);
+        if (division.getInfo().isLeader() && Arrays
+            .stream(division.getInfo().getFollowerNextIndices())
+            .allMatch(i -> i >= index)) {

Review comment:
       In case of a slow follower, stateMachine cache will be full and then 
will block the client. This is what is expected with this change. After that, 
the pipeline will be teared down. The idea is to make sure the slow follower 
catch up and if that doesn't work out, stall the pipeline and close the 
pipeline. Client will also exclude the slow datanodes.




-- 
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