Ivan Andika created HDDS-10932:
----------------------------------

             Summary: Reduce number of watch requests by using CommitInfoProto 
from NotReplicatedException 
                 Key: HDDS-10932
                 URL: https://issues.apache.org/jira/browse/HDDS-10932
             Project: Apache Ozone
          Issue Type: Improvement
            Reporter: Ivan Andika
            Assignee: Ivan Andika


See RATIS-2089 for the context.
{quote}In Ozone's XceiverClientRatis#watchForCommit, there are two watch 
commits request with different ReplicationLevel
 # Watch for ALL_COMMITTED 
 # Watch for MAJORITY_COMMITTED (If the previous watch threw an exception)

Based on the second watch request, the client will remove some failed datanode 
UUID from the commitInfoMap.

The second watch might not be necessary since the entries in 
AbstractCommitWatcher.commitIndexMap implies that the PutBlock request has been 
committed to the majority of the servers. Therefore, another MAJORITY_COMMITTED 
watch might not be necessary. From my understanding, the second 
MAJORITY_COMMITTED only serves to gain information to remove entries from 
commitInfoMap.

If the first watch failed with NotReplicatedException, we might be able to 
remove the need to a second watch request. Since NotReplicatedException is a 
Raft server exception, we can include the CommitInfoProtos in the 
NotReplicatedException. The client can use this CommitInfoProtos to remove the 
entry from commitInfoMap without sending another WATCH request. 
{quote}
We can CommitInfoProto in NotReplicatedException introduced in RATIS-2089 to 
remove the need for watch MAJORITY_COMMITTED calls if NotReplicatedException is 
thrown from the DN Ratis leader.

This also requires DN Ratis server watch timeout configuration change 
hdds.ratis.raft.server.watch.timeout to be lower than the client watch timeout 
hdds.ratis.raft.client.rpc.watch.request.timeout so that NotReplicatedException 
will be thrown instead of TimeoutException.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to