[SERVER-51610] Support retrying write statements within a transaction Created: 14/Oct/20  Updated: 27/Oct/23  Resolved: 15/Jun/22

Status: Closed
Project: Core Server
Component/s: Replication, Sharding
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: Jack Mulrow Assignee: [DO NOT USE] Backlog - Sharding NYC
Resolution: Gone away Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
Assigned Teams:
Sharding NYC
Sprint: Sharding 2020-11-02, Sharding 2020-11-16
Participants:

 Description   

As part of this ticket (or spun off tickets):

  • Extend TransactionParticipant to track optional statement ids for transaction commands and return the response a write would have returned originally if a previously executed statement id is received
    • Optional because drivers will not include them, only a router
    • Should support all retryable writes commands, i.e. insert, update, delete, and findAndModify
  • Extend TransactionRouter to send statement ids to shards
    • This is only needed for internal transactions used to execute a retryable write, so this does not need to be default behavior
  • Extend chunk migration session history migration to migrate history for committed transactions to enable reconstructing statement responses for retries across migrations

Generated at Thu Feb 08 05:25:57 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.