diff options
author | Geert Bosch <geert@mongodb.com> | 2017-04-07 11:37:14 -0400 |
---|---|---|
committer | Geert Bosch <geert@mongodb.com> | 2017-04-11 17:42:02 -0400 |
commit | 2206856999b0f9eb5a6b83f2da740efceeca1387 (patch) | |
tree | 8df76f1cc1e3a88f1c8509bb1fc509e986c98b9a | |
parent | 0f715bb978334314a0304b3d9aa629d297f2b313 (diff) | |
download | mongo-2206856999b0f9eb5a6b83f2da740efceeca1387.tar.gz |
SERVER-28646 Don't report ops as passed if logOps causes txn to fail
(cherry picked from commit d17d4907001cb02e3697148df4b3016ac232d0a1)
Conflicts:
src/mongo/db/catalog/apply_ops.cpp
-rw-r--r-- | src/mongo/db/catalog/apply_ops.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/mongo/db/catalog/apply_ops.cpp b/src/mongo/db/catalog/apply_ops.cpp index 7ddff58db32..672a37a10c7 100644 --- a/src/mongo/db/catalog/apply_ops.cpp +++ b/src/mongo/db/catalog/apply_ops.cpp @@ -331,10 +331,12 @@ Status applyOps(OperationContext* txn, // Perform write ops atomically try { MONGO_WRITE_CONFLICT_RETRY_LOOP_BEGIN { + BSONObjBuilder intermediateResult; WriteUnitOfWork wunit(txn); numApplied = 0; - uassertStatusOK(_applyOps(txn, dbName, applyOpCmd, result, &numApplied)); + uassertStatusOK(_applyOps(txn, dbName, applyOpCmd, &intermediateResult, &numApplied)); wunit.commit(); + result->appendElements(intermediateResult.obj()); } MONGO_WRITE_CONFLICT_RETRY_LOOP_END(txn, "applyOps", dbName); } catch (const DBException& ex) { |