[SERVER-71610] [StorEx] Remove or document instances of UninterruptibleLockGuard Created: 24/Nov/22  Updated: 29/Oct/23  Resolved: 25/May/23

Status: Closed
Project: Core Server
Component/s: None
Affects Version/s: None
Fix Version/s: 7.1.0-rc0

Type: Bug Priority: Major - P3
Reporter: Yujin Kang Park Assignee: Yujin Kang Park
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
is depended on by SERVER-68868 Remove all instances of Uninterruptib... Blocked
Assigned Teams:
Storage Execution
Backwards Compatibility: Fully Compatible
Operating System: ALL
Sprint: Execution Team 2023-03-20, Execution Team 2023-05-15, Execution Team 2023-05-29
Participants:

 Description   

SERVER-68868 intends to remove UninterruptipleLockGuard uses where possible, from its description:

Uses of UninterruptibleLockGuard indicate places in the code that do not comply with MongoDB's requirement that all operations be interruptible at places where they block to wait for resources. Every one of them is a potential future deadlock, and adds complexity to other parts of the codebase. We should reimplement codepaths that depend on UninterruptibleLockGuard so as to be interruptible.

The work has been split for the different teams in server, this one being for Storage Execution.

SERVER-68867 introduced a linter rule to add friction when adding new UninterruptipleLockGuard instances, and commented existing ones with NOLINT, while also adding a TODO with the corresponding server team ticket if an instance was found to not have a comment explaining why its use is warranted.

We should either add a comment justifying the use of UninterruptibleLockGuard or fix the code to remove its use.
Search for "TODO (SERVER-71610)" in the code base:

https://github.com/10gen/mongo/blob/34ac49477b87e183637f68cda828ecff8b393c64/src/mongo/db/repair.cpp#L173
https://github.com/10gen/mongo/blob/34ac49477b87e183637f68cda828ecff8b393c64/src/mongo/db/catalog/drop_database.cpp#L192
https://github.com/10gen/mongo/blob/34ac49477b87e183637f68cda828ecff8b393c64/src/mongo/db/catalog/drop_database.cpp#L309
https://github.com/10gen/mongo/blob/34ac49477b87e183637f68cda828ecff8b393c64/src/mongo/db/catalog/multi_index_block.cpp#L1027
https://github.com/10gen/mongo/blob/34ac49477b87e183637f68cda828ecff8b393c64/src/mongo/embedded/embedded.cpp#L169



 Comments   
Comment by Githook User [ 24/May/23 ]

Author:

{'name': 'Yu Jin Kang Park', 'email': 'yujin.kang@mongodb.com', 'username': 'ykangpark'}

Message: SERVER-71610 Remove or document instances of UninterruptibleLockGuard
Branch: master
https://github.com/mongodb/mongo/commit/4009ed0e87c0e76879047aab7b6a54207683ea47

Comment by Gregory Noma [ 31/Jan/23 ]

We should split this up into smaller tasks

Comment by Yujin Kang Park [ 29/Nov/22 ]

Moving the transaction_participant instances to the Replication ticket.

https://github.com/10gen/mongo/blob/34ac49477b87e183637f68cda828ecff8b393c64/src/mongo/db/transaction/transaction_participant.cpp#L1603
https://github.com/10gen/mongo/blob/34ac49477b87e183637f68cda828ecff8b393c64/src/mongo/db/transaction/transaction_participant.cpp#L1891

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