summaryrefslogtreecommitdiff
path: root/src/mongo/db/commands/dbhash.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/commands/dbhash.cpp')
-rw-r--r--src/mongo/db/commands/dbhash.cpp21
1 files changed, 6 insertions, 15 deletions
diff --git a/src/mongo/db/commands/dbhash.cpp b/src/mongo/db/commands/dbhash.cpp
index b428514fc29..fe42aea4124 100644
--- a/src/mongo/db/commands/dbhash.cpp
+++ b/src/mongo/db/commands/dbhash.cpp
@@ -218,24 +218,15 @@ bool DBHashCmd::run(OperationContext* txn,
return 1;
}
-class DBHashCmd::DBHashLogOpHandler : public RecoveryUnit::Change {
-public:
- DBHashLogOpHandler(DBHashCmd* dCmd, StringData ns) : _dCmd(dCmd), _ns(ns.toString()) {}
- void commit() {
- stdx::lock_guard<stdx::mutex> lk(_dCmd->_cachedHashedMutex);
- _dCmd->_cachedHashed.erase(_ns);
- }
- void rollback() {}
-
-private:
- DBHashCmd* _dCmd;
- const std::string _ns;
-};
-
void DBHashCmd::wipeCacheForCollection(OperationContext* txn, StringData ns) {
if (!isCachable(ns))
return;
- txn->recoveryUnit()->registerChange(new DBHashLogOpHandler(this, ns));
+
+ std::string nsOwned = ns.toString();
+ txn->recoveryUnit()->onCommit([this, txn, nsOwned] {
+ stdx::lock_guard<stdx::mutex> lk(_cachedHashedMutex);
+ _cachedHashed.erase(nsOwned);
+ });
}
bool DBHashCmd::isCachable(StringData ns) const {