-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Storage Execution
-
Fully Compatible
-
ALL
-
v7.1, v7.0, v6.0
-
Execution EMEA Team 2023-06-26, Execution EMEA Team 2023-07-10, Execution EMEA Team 2023-07-24, Execution EMEA Team 2023-09-04
-
120
Unlike user operations which transparently handle both WriteConflictException (WCE) and (TemprorarilyUnavailableException) TUE via the writeConflictRetry helper, internal operations tend to use custom code that handles WCE's only; oplog truncation is an example. Excerpt from an internal stress test:
{"t":{"$date":"2023-05-12T18:06:13.149+00:00"},"s":"F", "c":"STORAGE", "id":6761100, "ctx":"OplogCapMaintainerThread-local.oplog.rs","msg":"Error in OplogCapMaintainerThread","attr":{"error":{"code":365,"codeName":"TemporarilyUnavailable","errmsg":"-31800: oldest pinned transaction ID rolled back for eviction"}}}
We should audit the code for missing TUE handling and consider adopting the writeConflictRetry helper or implementing an equivalent one for internal operations.
- is related to
-
SERVER-78702 Consolidate WriteConflictException and related exceptions into an error category
- Open
- related to
-
SERVER-80461 Handle TemporarilyUnavailable and TransactionTooLargeForCache on _applyPrepareTransaction
- Closed
-
SERVER-63620 Evaluate locations that throw WriteConflictExceptions without a real write conflict
- Open