diff options
Diffstat (limited to 'src/mongo/db/ops/delete_executor.cpp')
-rw-r--r-- | src/mongo/db/ops/delete_executor.cpp | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/mongo/db/ops/delete_executor.cpp b/src/mongo/db/ops/delete_executor.cpp index e7eb2a9546c..d2c36f3ba3c 100644 --- a/src/mongo/db/ops/delete_executor.cpp +++ b/src/mongo/db/ops/delete_executor.cpp @@ -66,7 +66,8 @@ namespace mongo { } CanonicalQuery* cqRaw; - const WhereCallbackReal whereCallback(_request->getNamespaceString().db()); + const WhereCallbackReal whereCallback( + _request->getOpCtx(), _request->getNamespaceString().db()); Status status = CanonicalQuery::canonicalize(_request->getNamespaceString().ns(), _request->getQuery(), @@ -80,7 +81,7 @@ namespace mongo { return status; } - long long DeleteExecutor::execute(OperationContext* txn, Database* db) { + long long DeleteExecutor::execute(Database* db) { uassertStatusOK(prepare()); uassert(17417, mongoutils::str::stream() << @@ -100,7 +101,7 @@ namespace mongo { } } - Collection* collection = db->getCollection(txn, ns.ns()); + Collection* collection = db->getCollection(_request->getOpCtx(), ns.ns()); if (NULL == collection) { return 0; } @@ -118,11 +119,14 @@ namespace mongo { Runner* rawRunner; if (_canonicalQuery.get()) { - uassertStatusOK(getRunner(txn, collection, _canonicalQuery.release(), &rawRunner)); + uassertStatusOK(getRunner(_request->getOpCtx(), + collection, + _canonicalQuery.release(), + &rawRunner)); } else { CanonicalQuery* ignored; - uassertStatusOK(getRunner(txn, + uassertStatusOK(getRunner(_request->getOpCtx(), collection, ns.ns(), _request->getQuery(), @@ -135,7 +139,7 @@ namespace mongo { DiskLoc rloc; Runner::RunnerState state; - CurOp* curOp = txn->getCurOp(); + CurOp* curOp = _request->getOpCtx()->getCurOp(); int oldYieldCount = curOp->numYields(); while (Runner::RUNNER_ADVANCED == (state = runner->getNext(NULL, &rloc))) { if (oldYieldCount != curOp->numYields()) { @@ -151,8 +155,9 @@ namespace mongo { // TODO: do we want to buffer docs and delete them in a group rather than // saving/restoring state repeatedly? runner->saveState(); - collection->deleteDocument(txn, rloc, false, false, logop ? &toDelete : NULL ); - runner->restoreState(txn); + collection->deleteDocument( + _request->getOpCtx(), rloc, false, false, logop ? &toDelete : NULL); + runner->restoreState(_request->getOpCtx()); nDeleted++; @@ -163,7 +168,8 @@ namespace mongo { } else { bool replJustOne = true; - repl::logOp(txn, "d", ns.ns().c_str(), toDelete, 0, &replJustOne); + repl::logOp( + _request->getOpCtx(), "d", ns.ns().c_str(), toDelete, 0, &replJustOne); } } @@ -172,7 +178,7 @@ namespace mongo { } if (!_request->isGod()) { - txn->recoveryUnit()->commitIfNeeded(); + _request->getOpCtx()->recoveryUnit()->commitIfNeeded(); } if (debug && _request->isGod() && nDeleted == 100) { |