Uploaded image for project: 'Apache Ozone'
  1. Apache Ozone
  2. HDDS-10932

Reduce number of watch requests by using CommitInfoProto from NotReplicatedException

    XMLWordPrintableJSON

Details

    Description

      See RATIS-2089 for the context.

      In Ozone's XceiverClientRatis#watchForCommit, there are two watch commits request with different ReplicationLevel

      1. Watch for ALL_COMMITTED 
      2. 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. 

      We can use 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.

      Attachments

        1. idea_1.patch
          4 kB
          Ivan Andika

        Issue Links

          Activity

            People

              ivanandika Ivan Andika
              ivanandika Ivan Andika
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: