There is a potential dead lock between the step down command and the noop writer. The step down command takes the global exclusive lock in S mode and then blocks on destroying the noop writer.
The noop writer takes the global exclusive lock in IX mode when it does writes. The destructor calls join which won't return until the noop writer finishes its write.
To fix this we can:
1. stop the noop writer's write in killAllUserOperations before we try to shut it down.
2. Stop the noop writer before we take the global lock and start it back up again if we fail to step down.
3. mark the operation context as killed in the noop writer destructor so that it stops trying to take the lock.