diff options
author | Haley Connelly <haley.connelly@10gen.com> | 2019-09-30 21:59:39 +0000 |
---|---|---|
committer | evergreen <evergreen@mongodb.com> | 2019-09-30 21:59:39 +0000 |
commit | ae95a4f31b75590635db3eb80ec6bf19cccffebf (patch) | |
tree | ebbd6ecfa37bb14da12da361b90f1f85d004622c /src/mongo/db | |
parent | f14c26dfc3975f0c98af26573ab91b5d9c09ee71 (diff) | |
download | mongo-ae95a4f31b75590635db3eb80ec6bf19cccffebf.tar.gz |
SERVER-43696 Ensure _prepareConflictStartTime, _prepareConflictDuration and curTimeMicros64() have consistent types in PrepareConflictTracker
Diffstat (limited to 'src/mongo/db')
-rw-r--r-- | src/mongo/db/curop.cpp | 4 | ||||
-rw-r--r-- | src/mongo/db/curop.h | 2 | ||||
-rw-r--r-- | src/mongo/db/prepare_conflict_tracker.cpp | 11 | ||||
-rw-r--r-- | src/mongo/db/prepare_conflict_tracker.h | 6 |
4 files changed, 13 insertions, 10 deletions
diff --git a/src/mongo/db/curop.cpp b/src/mongo/db/curop.cpp index cf08c38548d..fd325678ae7 100644 --- a/src/mongo/db/curop.cpp +++ b/src/mongo/db/curop.cpp @@ -456,8 +456,8 @@ bool CurOp::completeAndLogOperation(OperationContext* opCtx, } // Gets the time spent blocked on prepare conflicts. - _debug.prepareConflictDurationMicros = durationCount<Microseconds>( - PrepareConflictTracker::get(opCtx).getPrepareConflictDuration()); + _debug.prepareConflictDurationMicros = + PrepareConflictTracker::get(opCtx).getPrepareConflictDuration(); log(component) << _debug.report(opCtx, (lockerInfo ? &lockerInfo->stats : nullptr)); } diff --git a/src/mongo/db/curop.h b/src/mongo/db/curop.h index 7cb2395df5f..b262898e7e7 100644 --- a/src/mongo/db/curop.h +++ b/src/mongo/db/curop.h @@ -227,7 +227,7 @@ public: int nShards{-1}; // Stores the duration of time spent blocked on prepare conflicts. - long long prepareConflictDurationMicros{0}; + unsigned long long prepareConflictDurationMicros{0}; // Stores additive metrics. AdditiveMetrics additiveMetrics; diff --git a/src/mongo/db/prepare_conflict_tracker.cpp b/src/mongo/db/prepare_conflict_tracker.cpp index 1ec1bb9c89a..1a52dbf728f 100644 --- a/src/mongo/db/prepare_conflict_tracker.cpp +++ b/src/mongo/db/prepare_conflict_tracker.cpp @@ -50,9 +50,12 @@ void PrepareConflictTracker::beginPrepareConflict() { void PrepareConflictTracker::endPrepareConflict() { // This function is called regardless whether there was a prepare conflict. if (_prepareConflictStartTime > 0) { - invariant(_prepareConflictStartTime <= static_cast<long long>(curTimeMicros64())); - _prepareConflictDuration += - Microseconds{static_cast<long long>(curTimeMicros64()) - _prepareConflictStartTime}; + auto curTimeMicros = curTimeMicros64(); + invariant(_prepareConflictStartTime <= curTimeMicros, + str::stream() << "Prepare conflict start time (" << _prepareConflictStartTime + << ") is somehow greater than current time (" << curTimeMicros + << ")"); + _prepareConflictDuration += curTimeMicros - _prepareConflictStartTime; } _prepareConflictStartTime = 0; @@ -60,7 +63,7 @@ void PrepareConflictTracker::endPrepareConflict() { _waitOnPrepareConflict.store(false); } -Microseconds PrepareConflictTracker::getPrepareConflictDuration() { +unsigned long long PrepareConflictTracker::getPrepareConflictDuration() { return _prepareConflictDuration; } diff --git a/src/mongo/db/prepare_conflict_tracker.h b/src/mongo/db/prepare_conflict_tracker.h index e488af59fe0..7b2298f239c 100644 --- a/src/mongo/db/prepare_conflict_tracker.h +++ b/src/mongo/db/prepare_conflict_tracker.h @@ -68,15 +68,15 @@ public: /** * Returns the total duration of time spent blocked on prepare conflicts. */ - Microseconds getPrepareConflictDuration(); + unsigned long long getPrepareConflictDuration(); private: /** * Set to true when a read operation is currently blocked on a prepare conflict. */ AtomicWord<bool> _waitOnPrepareConflict{false}; - long long _prepareConflictStartTime{0}; - Microseconds _prepareConflictDuration{0}; + unsigned long long _prepareConflictStartTime{0}; + unsigned long long _prepareConflictDuration{0}; }; } // namespace mongo |