diff options
author | Mathias Stearn <mathias@10gen.com> | 2015-09-02 19:17:32 -0400 |
---|---|---|
committer | Mathias Stearn <mathias@10gen.com> | 2015-09-11 18:40:59 -0400 |
commit | 2dabe550f780dcd365de15ddd7644a50fe78cc20 (patch) | |
tree | d2d05c9fedcd7d98b48c10b87869b775b82c8629 /src/mongo/db/commands/dbhash.cpp | |
parent | 2ecdf932339eef92906b1925298ec6bf2ecfe46d (diff) | |
download | mongo-2dabe550f780dcd365de15ddd7644a50fe78cc20.tar.gz |
SERVER-20384 Add simplified interface to perform an action on commit or rollback
Diffstat (limited to 'src/mongo/db/commands/dbhash.cpp')
-rw-r--r-- | src/mongo/db/commands/dbhash.cpp | 21 |
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 { |