Details
Description
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.
Attachments
Issue Links
- 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
-
- Backlog
-