diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-03-21 16:47:41 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-03-21 16:47:41 +0000 |
commit | c6e780709d889852371f969e1bbe305215167920 (patch) | |
tree | c8e98b54f7b7f518bd88214aeba64f521fc486b4 | |
parent | 4adf3b558c0293f0d715fdda8fc59eeba1469ca3 (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.cpp | 6 |
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)); |