summaryrefslogtreecommitdiff
path: root/src/mongo/db/auth/authz_manager_external_state_mock.cpp
diff options
context:
space:
mode:
authoralabid <alabidan@gmail.com>2015-02-12 16:10:14 -0500
committeralabid <alabidan@gmail.com>2015-02-13 11:27:07 -0500
commit45aba2114c18968422b285ce87709043a9455b3c (patch)
treeee90dbbd6a0ad1cadf4697cda83d9c8fa9d5355e /src/mongo/db/auth/authz_manager_external_state_mock.cpp
parent00fe4ffaf00a68a91e8dd6232984d5b80a1ddacb (diff)
downloadmongo-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.cpp9
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();