diff options
author | Andy Schwerin <schwerin@mongodb.com> | 2015-01-22 10:31:52 -0500 |
---|---|---|
committer | Andy Schwerin <schwerin@mongodb.com> | 2015-01-22 12:11:05 -0500 |
commit | dc0a3a6cbcc91a410b07ad0e10c6ecc4ae2c92dc (patch) | |
tree | 6bdcd4706b6d0a8522d4eb1607a37ed3d7aa0ec5 | |
parent | 44fd8e4e903d65dceb583c84cc5ec430c9350ad8 (diff) | |
download | mongo-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.cpp | 9 |
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); |