Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-17637

Implement a commit partition path write intent resolution logic for RO reads

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 3.0.0-beta1
    • None

    Description

      Need to perform writeIntent resolution by commit partition path if a coordinator path was not able to resolve the intent.

      1. A write intent contains a commit partition id {UUID tableId, int partId}.
      2. Need to create a PlacementDriver which contains a map of assignments {UUID tableId, int partId} -> Set<ClusterNode>
      3. Assignments are updated in TableManager#updateAssignmentInternal.
      4. PartitionReplicaListener contains placementDriver and replicaService.
      5. PartitionReplicaListener read a write intent, get a commit partition id, get assignments and send TxStateReq to first ClusterNode by ReplicaService.
        1. On receiving a cluster node check that it is a leader, read the txn state from the persistent storage and send response with tx state. If txState not found, return NULL outcome in a TxStateResp.
        2. If the node isn't a leader, then it send response with leader and PartitionReplicaListener resend TxStateReq to the leader.
        3. If leader is unknown then PartitionReplicaListener send TxStateReq to another ClusterNode
      6. If txState is found, validate a commit timestamp (only for committed state).
      7. Retry commit partition path until a success or timeout.

       

      Attachments

        Issue Links

          Activity

            People

              v.pyatkov Vladislav Pyatkov
              Sergey Uttsel Sergey Uttsel
              Votes:
              0 Vote for this issue
              Watchers:
              2 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 - 1h 50m
                  1h 50m