-
Type: Task
-
Resolution: Unresolved
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Catalog and Routing
-
Sharding EMEA 2023-05-29, Sharding EMEA 2023-06-12, Sharding EMEA 2023-06-26, Sharding EMEA 2023-07-10, Sharding EMEA 2023-10-02, Sharding EMEA 2023-10-16, Sharding EMEA 2023-10-30, CAR Team 2023-11-13, CAR Team 2023-11-27, CAR Team 2023-12-11, CAR Team 2023-12-25, CAR Team 2024-01-08
-
3
The TransactionResources class is becoming the sole data structure which will hold all kinds of resources that can be acquired by an active transaction, where transaction is defined as per this description.
We will be moving in the way where the transaction resources is what gets moved between contexts rather than swapping each individual resource (listed below) independently.
This ticket is specifically to move the Txn identification, Locker, RecoveryUnit and WriteUnitOfWork state from OperationContext to TransactionResources and remove all traces of it from OperationContext. This will also resolve circular dependency between the service_context library and the rest of the server, leaving it to be a low-level library for building any service.
As part of this change, we should also revisit all the swap* and replace* methods and how they are used. My interpretation is that they are used to implement various types of sub-transactions as part of the active one. For example, there is a sub-transaction kind, where we only replace the RecoveryUnit, but maintain the locks, which we call "Side Transaction". There are probably others and all these should be replaced by proper RAII types that operate on TransactionResources.
- depends on
-
SERVER-77227 Layering violation between d_concurrency and lock_manager
- Closed
-
SERVER-77123 Make the read concern for TransactionResources come from the Prerequisites
- Closed
-
SERVER-77544 Don't register OpObservers on the ServiceContextTestFixture
- Closed
-
SERVER-77611 Add a static constructor/destructor for the TransactionResources decoration
- Closed
-
SERVER-78744 Access Locker through locker_api.h
- Closed
-
SERVER-83330 Access RecoveryUnit and Locker through transaction_resources.h
- Closed
-
SERVER-84229 Move LockManager::getLockerToClientMap out of the LockManager
- Closed
-
SERVER-77556 Get rid of service_context_devnull_test_fixture
- Closed
-
SERVER-87329 Move WUOW to be entirely under TransactionResources/ShardRole
- Backlog
-
SERVER-26879 Get rid of LockerNoop
- Closed
-
SERVER-47204 Get rid of OperationContextNoop
- Closed
-
SERVER-77224 Rename lock_state.h/.cpp to locker_impl.h/.cpp to better match the class name
- Closed
-
SERVER-77353 Get rid of the Locker implementation for MongoS
- Closed
-
SERVER-84481 Explicitly use RecoveryUnitNoop for storage engine initialisation
- Closed
-
SERVER-84753 Devirtualise Locker and get rid of LockerImpl
- Closed
-
SERVER-85434 Fold write_unit_of_work into shard_role_api
- Closed
- is depended on by
-
SERVER-77065 Figure out use cases and rules regarding acquisitions inside WUOWs
- Blocked
-
SERVER-78735 Introduce invariant in Locker::unlock that lock must have been previously acquired
- Blocked