The problem is coming from a waitForDurableConfigTime call after shutdown initiated.
After shutdown initiation the ThreadPoolTaskExecutor won't accept more async requests, it will run everything on the same thread.
Since the VectorClockMongoD relies on the assumption that the futures created in the context of waitForDurableConfigTime will run asynchronously, it locks the same mutex that will be locked in the future as well. Since on shutdown everything run on a single thread, it causes a deadlock (double locking the same mutex on the same thread)
This behavior never happened before, because earlier the mongod crashed at this point. The fix of the crash revealed the deadlock.
- is caused by
-
SERVER-87323 Future continuations must capture vector clock as shared pointer
- Closed