diff options
author | Lingzhi Deng <lingzhi.deng@mongodb.com> | 2020-06-11 21:44:26 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-07-07 14:12:51 +0000 |
commit | 95ee10210b3b92b166410e70b33a5fce39ec0958 (patch) | |
tree | 57b02c652ab76e7ba2606d675e648868d99f37c7 /src/mongo/util | |
parent | e87f6f53c58a75229b40fff7b32de202f2dcccc7 (diff) | |
download | mongo-95ee10210b3b92b166410e70b33a5fce39ec0958.tar.gz |
SERVER-48734: Fix db_repl_test in TSAN
Diffstat (limited to 'src/mongo/util')
-rw-r--r-- | src/mongo/util/elapsed_tracker.cpp | 16 | ||||
-rw-r--r-- | src/mongo/util/elapsed_tracker.h | 5 |
2 files changed, 11 insertions, 10 deletions
diff --git a/src/mongo/util/elapsed_tracker.cpp b/src/mongo/util/elapsed_tracker.cpp index 791d377bcdc..0e0e807deca 100644 --- a/src/mongo/util/elapsed_tracker.cpp +++ b/src/mongo/util/elapsed_tracker.cpp @@ -45,16 +45,16 @@ ElapsedTracker::ElapsedTracker(ClockSource* cs, _last(cs->now()) {} bool ElapsedTracker::intervalHasElapsed() { - if (++_pings >= _hitsBetweenMarks) { - _pings = 0; - _last = _clock->now(); + if (_pings.addAndFetch(1) >= _hitsBetweenMarks) { + _pings.store(0); + _last.store(_clock->now()); return true; } const auto now = _clock->now(); - if (now - _last > _msBetweenMarks) { - _pings = 0; - _last = now; + if (now - _last.load() > _msBetweenMarks) { + _pings.store(0); + _last.store(now); return true; } @@ -62,8 +62,8 @@ bool ElapsedTracker::intervalHasElapsed() { } void ElapsedTracker::resetLastTime() { - _pings = 0; - _last = _clock->now(); + _pings.store(0); + _last.store(_clock->now()); } } // namespace mongo diff --git a/src/mongo/util/elapsed_tracker.h b/src/mongo/util/elapsed_tracker.h index f8779f168dc..5a05d5ea31d 100644 --- a/src/mongo/util/elapsed_tracker.h +++ b/src/mongo/util/elapsed_tracker.h @@ -31,6 +31,7 @@ #include <cstdint> +#include "mongo/platform/atomic_word.h" #include "mongo/util/time_support.h" namespace mongo { @@ -55,9 +56,9 @@ private: const int32_t _hitsBetweenMarks; const Milliseconds _msBetweenMarks; - int32_t _pings; + AtomicWord<int32_t> _pings; - Date_t _last; + AtomicWord<Date_t> _last; }; } // namespace mongo |