-
Type:
Task
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Replication
-
Fully Compatible
-
Repl 2026-08-17, Repl 2026-08-31
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Summary
Add test-only coverage that enforces the executor contract AsyncWorkScheduler relies on: the handle-returning scheduling methods must return ShutdownInProgress without running their callback when the executor is shut down.
Background
AsyncWorkScheduler (transaction_coordinator_futures_util.h) schedules executor work whileholding its own _mutex, and the scheduled callback re-acquires _mutex on the cancellation path. This is only safe because ThreadPoolTaskExecutor::scheduleWork / scheduleWorkAt /
scheduleRemoteCommand return ShutdownInProgress without storing or running the callback when shut down (via _registerCallbackState). If they ran the callback inline instead, it would re-lock _mutex on the same thread and self-deadlock..
This contract was relied on but not covered by tests.