diff options
Diffstat (limited to 'src/mongo/db/ops/write_ops_exec.cpp')
| -rw-r--r-- | src/mongo/db/ops/write_ops_exec.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/mongo/db/ops/write_ops_exec.cpp b/src/mongo/db/ops/write_ops_exec.cpp index bf91f342d01..1b1b138fbc3 100644 --- a/src/mongo/db/ops/write_ops_exec.cpp +++ b/src/mongo/db/ops/write_ops_exec.cpp @@ -2906,10 +2906,21 @@ std::vector<size_t> performUnorderedTimeseriesWrites( bool canContinue = true; std::vector<size_t> docsToRetry; + stdx::unordered_set<timeseries::bucket_catalog::WriteBatch*> handledHere; + int64_t handledElsewhere = 0; + auto guard = ScopeGuard([&handledElsewhere, &request, opCtx]() { + if (handledElsewhere > 0) { + auto& bucketCatalog = timeseries::bucket_catalog::BucketCatalog::get(opCtx); + timeseries::bucket_catalog::reportMeasurementsGroupCommitted( + bucketCatalog, request.getNamespace(), handledElsewhere); + } + }); + size_t itr = 0; for (; itr < batches.size(); ++itr) { auto& [batch, index] = batches[itr]; if (timeseries::bucket_catalog::claimWriteBatchCommitRights(*batch)) { + handledHere.insert(batch.get()); auto stmtIds = isTimeseriesWriteRetryable(opCtx) ? std::move(bucketStmtIds[batch->bucketHandle.bucketId.oid]) : std::vector<StmtId>{}; @@ -2929,6 +2940,8 @@ std::vector<size_t> performUnorderedTimeseriesWrites( if (!canContinue) { break; } + } else if (!handledHere.contains(batch.get())) { + ++handledElsewhere; } } |
