summaryrefslogtreecommitdiff
path: root/src/mongo/util
diff options
context:
space:
mode:
authorLingzhi Deng <lingzhi.deng@mongodb.com>2020-06-11 21:44:26 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-07-07 14:12:51 +0000
commit95ee10210b3b92b166410e70b33a5fce39ec0958 (patch)
tree57b02c652ab76e7ba2606d675e648868d99f37c7 /src/mongo/util
parente87f6f53c58a75229b40fff7b32de202f2dcccc7 (diff)
downloadmongo-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.cpp16
-rw-r--r--src/mongo/util/elapsed_tracker.h5
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