-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
Cluster Scalability
-
Fully Compatible
-
ALL
-
v8.0
-
Cluster Scalability 2024-07-08, Cluster Scalability 2024-07-22
-
200
-
5
Currently, we allow changing the placementConflictTime on the TransactionRouter if the stmtId that the time was chosen is the same as the currentStmtId. This is because generally, we expect that we'd only retry on some retryable error on the first statement that caused us to reset the TransactionRouter state (including clearing any participants). However, if an individual statement that was the first statement in the transaction is retried without clearing the participants, we will currently still allow changing the placementConflictTime (because latestStatementId will not have been bumped), but any tracked participants would have the original value for placementConflictTime - if mongos's logical clock has been bumped between the original attempt and retry, the values will differ. We shouldn't allow changing the placementConflictTime at all, and instead should only reset the placementConflictTime on allowable retryable errors, so upon a retry we can reset the value. If a retry is ever attempted without having hit one of the allowable retryable errors, we should just use the original placementConflictTime value.
- is related to
-
SERVER-87662 Disable testing retrying individual statement in retryable_writes_statement_validation.js
- Closed