summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Schwerin <schwerin@mongodb.com>2015-01-22 10:31:52 -0500
committerAndy Schwerin <schwerin@mongodb.com>2015-01-22 12:11:05 -0500
commitdc0a3a6cbcc91a410b07ad0e10c6ecc4ae2c92dc (patch)
tree6bdcd4706b6d0a8522d4eb1607a37ed3d7aa0ec5
parent44fd8e4e903d65dceb583c84cc5ec430c9350ad8 (diff)
downloadmongo-dc0a3a6cbcc91a410b07ad0e10c6ecc4ae2c92dc.tar.gz
SERVER-16867 Allow logOp() to throw before calling first non-rollback-safe logOp listener.
-rw-r--r--src/mongo/db/repl/oplog.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/mongo/db/repl/oplog.cpp b/src/mongo/db/repl/oplog.cpp
index f5f4e27b00c..b3e167e81b0 100644
--- a/src/mongo/db/repl/oplog.cpp
+++ b/src/mongo/db/repl/oplog.cpp
@@ -374,6 +374,10 @@ namespace {
BSONObj* patt,
bool* b,
bool fromMigrate) {
+ if ( getGlobalReplicationCoordinator()->isReplEnabled() ) {
+ _logOp(txn, opstr, ns, 0, obj, patt, b, fromMigrate);
+ }
+
try {
// TODO SERVER-15192 remove this once all listeners are rollback-safe.
class RollbackPreventer : public RecoveryUnit::Change {
@@ -384,11 +388,6 @@ namespace {
}
};
txn->recoveryUnit()->registerChange(new RollbackPreventer());
-
- if ( getGlobalReplicationCoordinator()->isReplEnabled() ) {
- _logOp(txn, opstr, ns, 0, obj, patt, b, fromMigrate);
- }
-
logOpForSharding(txn, opstr, ns, obj, patt, fromMigrate);
logOpForDbHash(ns);
getGlobalAuthorizationManager()->logOp(opstr, ns, obj, patt, b);