diff options
author | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2017-06-07 13:56:30 +0300 |
---|---|---|
committer | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2017-07-06 18:05:57 -0400 |
commit | e09a21c0d849878792e647d2326d6fde865ac458 (patch) | |
tree | b3cd6c002db115e73fa8151609467a4ec7ce3d0d /src/mongo/s/write_ops/batch_write_op.cpp | |
parent | 1447d3db59804752e6c2882a6a8a4a14d7ae71ad (diff) | |
download | mongo-e09a21c0d849878792e647d2326d6fde865ac458.tar.gz |
SERVER-28752 Use IDL for write commands parsing
Diffstat (limited to 'src/mongo/s/write_ops/batch_write_op.cpp')
-rw-r--r-- | src/mongo/s/write_ops/batch_write_op.cpp | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/mongo/s/write_ops/batch_write_op.cpp b/src/mongo/s/write_ops/batch_write_op.cpp index 440f4a4b40b..cece9d771d6 100644 --- a/src/mongo/s/write_ops/batch_write_op.cpp +++ b/src/mongo/s/write_ops/batch_write_op.cpp @@ -213,8 +213,8 @@ void trackErrors(const ShardEndpoint& endpoint, } // namespace -BatchWriteOp::BatchWriteOp(const BatchedCommandRequest& clientRequest) - : _clientRequest(clientRequest) { +BatchWriteOp::BatchWriteOp(OperationContext* opCtx, const BatchedCommandRequest& clientRequest) + : _opCtx(opCtx), _clientRequest(clientRequest) { _writeOps.reserve(_clientRequest.sizeWriteOps()); for (size_t i = 0; i < _clientRequest.sizeWriteOps(); ++i) { @@ -227,8 +227,7 @@ BatchWriteOp::~BatchWriteOp() { invariant(_targeted.empty()); } -Status BatchWriteOp::targetBatch(OperationContext* opCtx, - const NSTargeter& targeter, +Status BatchWriteOp::targetBatch(const NSTargeter& targeter, bool recordTargetErrors, std::map<ShardId, TargetedWriteBatch*>* targetedBatches) { // @@ -288,7 +287,7 @@ Status BatchWriteOp::targetBatch(OperationContext* opCtx, OwnedPointerVector<TargetedWrite> writesOwned; vector<TargetedWrite*>& writes = writesOwned.mutableVector(); - Status targetStatus = writeOp.targetWrites(opCtx, targeter, &writes); + Status targetStatus = writeOp.targetWrites(_opCtx, targeter, &writes); if (!targetStatus.isOK()) { WriteErrorDetail targetError; @@ -406,7 +405,7 @@ void BatchWriteOp::buildBatchRequest(const TargetedWriteBatch& targetedBatch, request->setShouldBypassValidation(_clientRequest.shouldBypassValidation()); const auto batchType = _clientRequest.getBatchType(); - const auto batchTxnNum = _clientRequest.getTxnNum(); + const auto batchTxnNum = _opCtx->getTxnNumber(); boost::optional<std::vector<int32_t>> stmtIdsForOp; if (batchTxnNum) { @@ -437,7 +436,8 @@ void BatchWriteOp::buildBatchRequest(const TargetedWriteBatch& targetedBatch, } if (stmtIdsForOp) { - stmtIdsForOp->push_back(_clientRequest.getStmtIdForWriteAt(writeOpRef.first)); + stmtIdsForOp->push_back(write_ops::getStmtIdForWriteAt( + _clientRequest.getWriteCommandBase(), writeOpRef.first)); } // TODO: We can add logic here to allow aborting individual ops @@ -457,14 +457,10 @@ void BatchWriteOp::buildBatchRequest(const TargetedWriteBatch& targetedBatch, } } - if (!request->isOrderedSet()) { - request->setOrdered(_clientRequest.getOrdered()); - } - + request->setOrdered(_clientRequest.getOrdered()); request->setShardVersion(targetedBatch.getEndpoint().shardVersion); if (batchTxnNum) { - request->setTxnNum(batchTxnNum); request->setStmtIds(std::move(stmtIdsForOp)); } } |