[SERVER-33573] Remove UninterruptibleLockGuards in storage code to allow interruptible lock acquisition Created: 01/Mar/18  Updated: 27/Oct/23  Resolved: 23/Aug/19

Status: Closed
Project: Core Server
Component/s: Storage
Affects Version/s: 3.7.3
Fix Version/s: None

Type: Improvement Priority: Major - P3
Reporter: Louis Williams Assignee: Backlog - Storage Execution Team
Resolution: Gone away Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Assigned Teams:
Storage Execution
Participants:

 Description   

Since SERVER-32638, global and database locks can be interrupted when an OperationContext is killed. This causes any LOCK_WAITING operation to throw an AssertionException with an Interrupted error code. This includes all AutoGet helpers for databases and collection.

The following places in the storage code have temporary UninterruptibleLockGuard s to prevent crashing due to inadequate exception handling:

src/mongo/db/catalog/drop_database.cpp:120
src/mongo/db/catalog/drop_database.cpp:201
src/mongo/db/catalog/drop_database.cpp:252
src/mongo/db/repl/storage_interface_impl.cpp:401
src/mongo/db/repl/storage_interface_impl.cpp:424
src/mongo/db/transaction_reaper.cpp:158


Generated at Thu Feb 08 04:33:52 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.