-
Type: Bug
-
Resolution: Unresolved
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Cluster Scalability
-
ALL
-
Cluster Scalability 2025-02-03
-
0
To make a retryable internal transaction on the donor shard retryable on the recipient shard after a chunk migration, we wrap the oplog entries for the retryable transaction on the donor inside a noop oplog entry and send them to recipient who would then write the noop oplog entries to its oplog and update the config.transactions doc accordingly.
Consider a retryable transaction with both the donor (shard0) and recipient (shard1) as the participants.
- The retryable transaction commits on shard0 before it does on shard1. That is, on shard0 the transaction is in the "committed" state but on shard1 the transaction is in the "prepared" state.
- The noop oplog entry for the writes on shard0 arrives on shard1. This SessionCatalogMigrationDestination then hits RetryableTransactionInProgress error when calling beginOrContinue while processing this oplog entry.
- This causes the chunk migration to fail.
- related to
-
SERVER-66296 ReshardingOplogBatchApplier and ReshardingTxnCloner should wait for conflicting transaction to complete upon hitting RetryableTransactionInProgress
- Closed