diff options
Diffstat (limited to 'src/mongo/db/auth/user_cache_invalidator_job.cpp')
-rw-r--r-- | src/mongo/db/auth/user_cache_invalidator_job.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/mongo/db/auth/user_cache_invalidator_job.cpp b/src/mongo/db/auth/user_cache_invalidator_job.cpp index 526f97500b0..682f288933f 100644 --- a/src/mongo/db/auth/user_cache_invalidator_job.cpp +++ b/src/mongo/db/auth/user_cache_invalidator_job.cpp @@ -149,7 +149,10 @@ void UserCacheInvalidator::run() { Date_t sleepUntil = lastInvalidationTime + Seconds(userCacheInvalidationIntervalSecs.load()); Date_t now = Date_t::now(); - while (now < sleepUntil) { + + // The second clause in the if statement is if we've jumped back in time due to an NTP + // sync; we should always trigger a cache refresh in that case. + while (now < sleepUntil && now >= lastInvalidationTime) { MONGO_IDLE_THREAD_BLOCK; invalidationIntervalChangedCondition.wait_until(lock, sleepUntil.toSystemTimePoint()); sleepUntil = lastInvalidationTime + Seconds(userCacheInvalidationIntervalSecs.load()); |