diff options
author | Adam Midvidy <amidvidy@gmail.com> | 2016-03-04 13:41:39 -0500 |
---|---|---|
committer | Adam Midvidy <amidvidy@gmail.com> | 2016-03-04 15:27:08 -0500 |
commit | 703c1f823eea9df285ed0fd2d167730664490286 (patch) | |
tree | f0ef40a98ee9a229cbf4d51833b7ea6c6ac049a4 | |
parent | 8dd3f43ef314c25efbec3003046c0d93d6e9075b (diff) | |
download | mongo-703c1f823eea9df285ed0fd2d167730664490286.tar.gz |
SERVER-22967 ensure UserCacheInvalidator stops before we destroy its state
-rw-r--r-- | src/mongo/db/auth/user_cache_invalidator_job.cpp | 6 | ||||
-rw-r--r-- | src/mongo/db/auth/user_cache_invalidator_job.h | 1 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/mongo/db/auth/user_cache_invalidator_job.cpp b/src/mongo/db/auth/user_cache_invalidator_job.cpp index a62b69370e2..9d8bf0ad3ca 100644 --- a/src/mongo/db/auth/user_cache_invalidator_job.cpp +++ b/src/mongo/db/auth/user_cache_invalidator_job.cpp @@ -110,6 +110,12 @@ StatusWith<OID> getCurrentCacheGeneration(OperationContext* txn) { UserCacheInvalidator::UserCacheInvalidator(AuthorizationManager* authzManager) : _authzManager(authzManager) {} +UserCacheInvalidator::~UserCacheInvalidator() { + invariant(inShutdown()); + // Wait to stop running. + wait(); +} + void UserCacheInvalidator::initialize(OperationContext* txn) { StatusWith<OID> currentGeneration = getCurrentCacheGeneration(txn); if (currentGeneration.isOK()) { diff --git a/src/mongo/db/auth/user_cache_invalidator_job.h b/src/mongo/db/auth/user_cache_invalidator_job.h index 3b1c2544939..e32c7f662a3 100644 --- a/src/mongo/db/auth/user_cache_invalidator_job.h +++ b/src/mongo/db/auth/user_cache_invalidator_job.h @@ -44,6 +44,7 @@ class OperationContext; class UserCacheInvalidator : public BackgroundJob { public: UserCacheInvalidator(AuthorizationManager* authzManager); + ~UserCacheInvalidator(); void initialize(OperationContext* txn); |