Currently step down kills all conflicting user operations and some internal operations that are marked killable using setSystemOperationKillable.
- Write operation that takes global lock in IX and X mode.
- Read operations that takes global lock in S mode.
- Operations(read/write) that are blocked on prepare conflict.
Step down hangs due to below three way deadlock
- Chunk splitter thread (_runAutosplit) performs read by holding RSTL in IX mode and is blocked by a prepared txn due to prepare conflict. ChunkSplitter internal threads are not marked killable. So, step down won't be able to kill/interrupt those internal read operations.
- Step down enqueues RSTL lock in X mode. And blocked behind chunk splitter internal thread.
- CommitTransaction cmd is waiting for RSTL lock to acquire in IX mode but blocked behind the step down thread.