diff options
author | alabid <alabidan@gmail.com> | 2015-02-12 16:10:14 -0500 |
---|---|---|
committer | alabid <alabidan@gmail.com> | 2015-02-13 11:27:07 -0500 |
commit | 45aba2114c18968422b285ce87709043a9455b3c (patch) | |
tree | ee90dbbd6a0ad1cadf4697cda83d9c8fa9d5355e /src/mongo/db/auth/authz_manager_external_state_mock.cpp | |
parent | 00fe4ffaf00a68a91e8dd6232984d5b80a1ddacb (diff) | |
download | mongo-45aba2114c18968422b285ce87709043a9455b3c.tar.gz |
SERVER-15192 Make AuthzManager logOp listener rollback-safe
The initial version of this commit was initially reverted because
boost::optional<bool> gives spurious warnings due to a GCC bug that
should have been fixed in GCC 4.8.5. This commit makes no
use of boost::optional.
Diffstat (limited to 'src/mongo/db/auth/authz_manager_external_state_mock.cpp')
-rw-r--r-- | src/mongo/db/auth/authz_manager_external_state_mock.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/mongo/db/auth/authz_manager_external_state_mock.cpp b/src/mongo/db/auth/authz_manager_external_state_mock.cpp index bcf2c7847c8..c031cbc52cc 100644 --- a/src/mongo/db/auth/authz_manager_external_state_mock.cpp +++ b/src/mongo/db/auth/authz_manager_external_state_mock.cpp @@ -152,14 +152,17 @@ namespace { toInsert = document.copy(); } _documents[collectionName].push_back(toInsert); + if (_authzManager) { _authzManager->logOp( + txn, "i", collectionName.ns().c_str(), toInsert, NULL, NULL); } + return Status::OK(); } @@ -190,14 +193,17 @@ namespace { BSONObj newObj = document.getObject().copy(); *iter = newObj; BSONObj idQuery = driver.makeOplogEntryQuery(newObj, false); + if (_authzManager) { _authzManager->logOp( + txn, "u", collectionName.ns().c_str(), logObj, &idQuery, NULL); } + return Status::OK(); } else if (status == ErrorCodes::NoMatchingDocument && upsert) { @@ -243,14 +249,17 @@ namespace { BSONObj idQuery = (*iter)["_id"].wrap(); _documents[collectionName].erase(iter); ++n; + if (_authzManager) { _authzManager->logOp( + txn, "d", collectionName.ns().c_str(), idQuery, NULL, NULL); } + } *numRemoved = n; return Status::OK(); |