[SERVER-81979] Audit conversion of DBException to Status for correct handling of StorageUnavailableException Created: 09/Oct/23  Updated: 06/Feb/24

Status: Open
Project: Core Server
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: Josef Ahmad Assignee: Backlog - Storage Execution Team
Resolution: Unresolved Votes: 0
Labels: storex-ranked
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
related to SERVER-80461 Handle TemporarilyUnavailable and Tra... Closed
related to SERVER-81978 repl::applyCommand_inlock does not ha... Closed
Assigned Teams:
Storage Execution
Participants:

 Description   

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

Generated at Thu Feb 08 06:47:54 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.