Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
Need to perform writeIntent resolution by commit partition path if a coordinator path was not able to resolve the intent.
- A write intent contains a commit partition id {UUID tableId, int partId}.
- Need to create a PlacementDriver which contains a map of assignments {UUID tableId, int partId} -> Set<ClusterNode>
- Assignments are updated in TableManager#updateAssignmentInternal.
- PartitionReplicaListener contains placementDriver and replicaService.
- PartitionReplicaListener read a write intent, get a commit partition id, get assignments and send TxStateReq to first ClusterNode by ReplicaService.
- 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.
- If the node isn't a leader, then it send response with leader and PartitionReplicaListener resend TxStateReq to the leader.
- If leader is unknown then PartitionReplicaListener send TxStateReq to another ClusterNode
- If txState is found, validate a commit timestamp (only for committed state).
- Retry commit partition path until a success or timeout.
Attachments
Issue Links
- is blocked by
-
IGNITE-17627 Extend MvPartitionStorage read API with write intent resolution capabilities
- Resolved
- links to