summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-01-14 12:43:41 +0100
committerGitHub <noreply@github.com>2021-01-14 12:43:41 +0100
commit6564d646f807bb23e725ffe9310e030259eeedc6 (patch)
tree7c84fd64a6ace5616f1d796b80e02c2e2f67ca04
parentc1084399767a5aaf504229ac9c485c696a0832d3 (diff)
parenta870ba17003bb5c4b950fb3f2bee88fb2af80146 (diff)
Merge pull request #16045 from vespa-engine/balder/sync-executor-to-guarantee-progress
Sync the executor to ensure progress is made when syncing to
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/domain.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/searchlib/src/vespa/searchlib/transactionlog/domain.cpp b/searchlib/src/vespa/searchlib/transactionlog/domain.cpp
index 8dcca2c7b89..1fd84305d4b 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/domain.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/domain.cpp
@@ -213,6 +213,11 @@ Domain::triggerSyncNow(std::unique_ptr<vespalib::Executor::Task> done_sync_task)
std::unique_lock guard(_currentChunkMonitor);
commitAndTransferResponses(guard);
}
+ if (done_sync_task) {
+ // Need to protect against being called from the _singleCommitter as that will cause a deadlock
+ // That is done from Domain::commitChunk.lamdba->Domain::doCommit()->optionallyRotateFile->triggerSyncNow({})
+ _singleCommitter->sync();
+ }
std::unique_lock guard(_syncMonitor);
if (done_sync_task) {
_done_sync_tasks.push_back(std::move(done_sync_task));