summaryrefslogtreecommitdiff
path: root/src/mongo/db/concurrency
diff options
context:
space:
mode:
authorSulabh Mahajan <sulabh.mahajan@mongodb.com>2019-03-21 16:19:12 +1100
committerSulabh Mahajan <sulabh.mahajan@mongodb.com>2019-03-21 16:19:12 +1100
commit23ca771f76f85638f23bca2a4a6ac196a81fdc21 (patch)
treec880d98ac10a9dc60d6999a6d2a7c33f146e7242 /src/mongo/db/concurrency
parent9614d52c9e83afdde0ae22e16de97f290a08c206 (diff)
downloadmongo-23ca771f76f85638f23bca2a4a6ac196a81fdc21.tar.gz
SERVER-39934 Fix locking for slow ops storage stats
SERVER-39654 Make slow ops storage stats work with transactions
Diffstat (limited to 'src/mongo/db/concurrency')
-rw-r--r--src/mongo/db/concurrency/global_lock_acquisition_tracker.cpp4
-rw-r--r--src/mongo/db/concurrency/global_lock_acquisition_tracker.h5
2 files changed, 9 insertions, 0 deletions
diff --git a/src/mongo/db/concurrency/global_lock_acquisition_tracker.cpp b/src/mongo/db/concurrency/global_lock_acquisition_tracker.cpp
index c28bfb643aa..eeec12f3c1a 100644
--- a/src/mongo/db/concurrency/global_lock_acquisition_tracker.cpp
+++ b/src/mongo/db/concurrency/global_lock_acquisition_tracker.cpp
@@ -44,6 +44,10 @@ bool GlobalLockAcquisitionTracker::getGlobalSharedLockTaken() const {
return _globalLockMode & (1 << MODE_S);
}
+bool GlobalLockAcquisitionTracker::getGlobalLockTaken() const {
+ return _globalLockMode & ((1 << MODE_IX) | (1 << MODE_X) | (1 << MODE_IS) | (1 << MODE_S));
+}
+
void GlobalLockAcquisitionTracker::setGlobalLockModeBit(LockMode mode) {
_globalLockMode |= (1 << mode);
}
diff --git a/src/mongo/db/concurrency/global_lock_acquisition_tracker.h b/src/mongo/db/concurrency/global_lock_acquisition_tracker.h
index 4e3e5f8bcc5..dae19eb537f 100644
--- a/src/mongo/db/concurrency/global_lock_acquisition_tracker.h
+++ b/src/mongo/db/concurrency/global_lock_acquisition_tracker.h
@@ -58,6 +58,11 @@ public:
bool getGlobalSharedLockTaken() const;
/**
+ * Returns whether we have ever taken a global lock in this operation.
+ */
+ bool getGlobalLockTaken() const;
+
+ /**
* Sets the mode bit in _globalLockMode. Once a mode bit is set, we won't clear it.
*/
void setGlobalLockModeBit(LockMode mode);