summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathias Stearn <redbeard0531@gmail.com>2016-01-14 15:41:25 -0500
committerMathias Stearn <redbeard0531@gmail.com>2016-01-18 13:33:40 -0500
commit930e47f1864d0319b7d9033ad2c2bf99f02014c1 (patch)
tree6c5639ed23132b62c5ff563a03032a8d53c83746
parented3471a81dec950f863ca6f9c73ea5e90f866875 (diff)
downloadmongo-930e47f1864d0319b7d9033ad2c2bf99f02014c1.tar.gz
SERVER-22191 Don't register CurOp on Client until done with construction
-rw-r--r--src/mongo/db/curop.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/mongo/db/curop.cpp b/src/mongo/db/curop.cpp
index 4305987f7b1..5b1b2bdad75 100644
--- a/src/mongo/db/curop.cpp
+++ b/src/mongo/db/curop.cpp
@@ -61,14 +61,17 @@ MONGO_FP_DECLARE(maxTimeNeverTimeOut);
// todo : move more here
CurOp::CurOp(Client* client, CurOp* wrapped) : _client(client), _wrapped(wrapped) {
- if (_wrapped)
- _client->_curOp = this;
_start = 0;
_active = false;
_reset();
_op = 0;
_opNum = _nextOpNum.fetchAndAdd(1);
_command = NULL;
+
+ if (_wrapped) {
+ boost::mutex::scoped_lock clientLock(Client::clientsMutex);
+ _client->_curOp = this;
+ }
}
void CurOp::_reset() {