summaryrefslogtreecommitdiff
path: root/src/mongo/db/ops/write_ops_exec.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/ops/write_ops_exec.cpp')
-rw-r--r--src/mongo/db/ops/write_ops_exec.cpp13
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;
}
}