-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
Storage Execution
-
Fully Compatible
-
Execution Team 2024-10-14, Execution Team 2024-10-28, Execution Team 2024-11-11, Execution Team 2024-11-25
There has been a pattern of DBException to Status conversions that leave TemporarilyUnavailable and TransactionTooLargeForCache errors unhandled. See SERVER-81978 and SERVER-80461.
We should audit locations where this conversion happens. The following lists places that compare the status with ErrorCodes::WriteConflict, so they're potentially susceptible to missing checks for TemporarilyUnavailable and TransactionTooLargeForCache.
- KeyStringIndexConsistency::traverseIndex (2 locations)
- IndexBuildsCoordinator::_completeExternalAbort
- src/mongo/db/ops/write_ops_exec.cpp (3 locations, related to timeseries)
- OplogApplierUtils::applyOplogEntryOrGroupedInsertsCommon
- ReshardingOplogApplicationRules::ReshardingOplogApplicationRules
- timeseries::attemptInsertIntoBucket
- related to
-
SERVER-80461 Handle TemporarilyUnavailable and TransactionTooLargeForCache on _applyPrepareTransaction
- Closed
-
SERVER-81978 repl::applyCommand_inlock does not handle TemporarilyUnavailable and TransactionTooLargeForCache exceptions
- Closed