aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-03-21 16:47:41 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-03-21 16:47:41 +0000
commitc6e780709d889852371f969e1bbe305215167920 (patch)
treec8e98b54f7b7f518bd88214aeba64f521fc486b4
parent4adf3b558c0293f0d715fdda8fc59eeba1469ca3 (diff)
Counting executed task should happen in bucket executor once task has been queued to master executor.
Since waiting for all to complete happens in master thread, countdown must happen in another thread.
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job_take2.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job_take2.cpp b/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job_take2.cpp
index 69bd743021a..8802003f849 100644
--- a/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job_take2.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/lid_space_compaction_job_take2.cpp
@@ -45,8 +45,8 @@ isSameDocument(const search::DocumentMetaData & a, const search::DocumentMetaDat
void
CompactionJob::failOperation() {
- _executedCount.fetch_add(1, std::memory_order_relaxed);
- _scanItr.reset();
+ IncOnDestruct countGuard(_executedCount);
+ _master.execute(makeLambdaTask([this] { _scanItr.reset(); }
}
bool
@@ -62,7 +62,7 @@ CompactionJob::scanDocuments(const LidUsageStats &stats)
assert(bucket.getBucketId() == meta.bucketId);
using DoneContext = vespalib::KeepAlive<std::pair<IDestructorCallback::SP, IDestructorCallback::SP>>;
moveDocument(meta, std::make_shared<DoneContext>(std::make_pair(std::move(opsTracker), std::move(onDone))));
- }, [this](const Bucket &) { _master.execute(makeLambdaTask([this] { failOperation(); } )); });
+ }, [this](const Bucket &) { failOperation(); });
_startedCount.fetch_add(1, std::memory_order_relaxed);
_bucketExecutor.execute(metaBucket, std::move(bucketTask));