Details

    • Sub-task
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • None
    • server
    • None

    Description

      In OM HA to support upgrades with out any additional steps like prepareUpgrade for express upgrade, a new proposal is coming up to change in the way request is processed and also in the future to support rolling upgrades. In the previous approach request logic is executed by the leader/follower OMs.

      In the new approach, only leader OM processes the request and submits only the information which needs to be persisted to DB to ratis. So, with this approach after isLeaderReady() check, we first need to check retry cache to see if this is a retry request before processing the request in OM for idempotency/correctness.

      This Jira is to propose to expose retry cache and also expose a method to just query retry cache. As current queryCacheResult, if not exists, adds a new entry to cache.

      Scenario:
      Leader processed the request and submitted to OM, leader adds to it log, and send to followers, just before applyTransaction leader change happened. In ratis all pending requests are responded with NotLeaderException. So, when the new OM before becoming ready, it should process all the requests, as the previous transaction is in majority this transaction will be applied by new leader OM and then becomes ready. So, when the client retries on new OM with same clientID and callID OM leader before processing it should detect is retry request for that it needs to check ratis retry cache.

      Attachments

        Issue Links

          Activity

            People

              szetszwo Tsz-wo Sze
              bharat Bharat Viswanadham
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 40m
                  40m