Currently, updating any user will invalidate its entry in the user cache. The next time that user attempts to perform an operation, the AuthorizationManager will pull the canonical document from disk, taking a shared lock on the system's user collection. If a long running operation has taken an exclusive lock on the whole system, the AuthorizationManager may block until it finishes. Attempting to run administrative operations such as killOp or currentOp may cause the AuthorizationManager to perform this update.
We should have a mechanism to ensure that at least some users are always held in memory. Authentication or authorization, and by extension running killOp, would never need to block.
- is duplicated by
-
SERVER-35637 DDL operations blocked by transactions also block authentication
- Closed
- is related to
-
SERVER-13586 Remove user cache invalidation from user management commands
- Backlog
- related to
-
SERVER-33648 Attempting to perform user- and role-management commands in db.eval() with nolock=false can lead to deadlock
- Closed
-
SERVER-35890 Make Authorization user cache a general purpose lifetime manager
- Closed