-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Replication
-
None
-
None
-
None
-
None
-
None
-
None
-
None
What
Add `GUARDED_BY(_mutex)` to unprotected members in `TransactionCoordinator`, `TransactionCoordinatorService`, and `TransactionCoordinatorFuturesUtil`. Add `REQUIRES(_mutex)` to private helpers. Replace `readLock()` with `writeLock()` for all `SharedPromise::emplaceValue` / `setError` calls in `replication_coordinator_impl.h`.
Files: `transaction_coordinator.cpp` (lines 479, 533, 570), `transaction_coordinator_service.cpp` (lines 324, 328, 371), `transaction_coordinator_futures_util.h` (line 385), `transaction_coordinator_service.h` (line 169), `replication_coordinator_impl.h` (line 2083).
Resolves: SERVER-108434, SERVER-108438, SERVER-108620, SERVER-108880, SERVER-110694, SERVER-110876, SERVER-111619, SERVER-111636, SERVER-112391, SERVER-116204, SERVER-108524
Why
Two-phase commit state must be consistent throughout the coordinator lifecycle. Because Coverity cannot be run locally, `GUARDED_BY` annotations are the most practical way to confirm a fix is complete and to prevent these variables from being accessed without the lock again in the future — a clean build is the proof. The `SharedPromise` `readLock` issue allows concurrent fulfillments; replacing it with `writeLock` restores mutual exclusion at the fulfillment site.
- is related to
-
SERVER-116204 Coverity analysis defect 183912: Data race condition
-
- Open
-
-
SERVER-108434 Coverity analysis defect 166478: Double lock
-
- Backlog
-
-
SERVER-108438 Coverity analysis defect 163835: Data race condition
-
- Backlog
-
-
SERVER-108524 Coverity analysis defect 162876: Data race condition
-
- Backlog
-
-
SERVER-108620 Coverity analysis defect 156970: Data race condition
-
- Backlog
-
-
SERVER-108880 Coverity analysis defect 153700: Data race condition
-
- Backlog
-
-
SERVER-110608 Coverity analysis defect 175999: Thread deadlock
-
- Backlog
-
-
SERVER-110694 Coverity analysis defect 175257: Data race condition
-
- Backlog
-
-
SERVER-110876 Coverity analysis defect 175097: Data race condition
-
- Backlog
-
-
SERVER-111619 Coverity analysis defect 177292: Data race condition
-
- Backlog
-
-
SERVER-111636 Coverity analysis defect 143995: Data race condition
-
- Backlog
-
-
SERVER-112391 Coverity analysis defect 141039: Data race condition
-
- Backlog
-