diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-09-29 11:20:19 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-09-29 11:20:19 +0000 |
commit | 49b4fe09df28949208ff78ee98c582ce2d7fd99c (patch) | |
tree | ba91ce3c89d295740c7e1fc13b6ad5e891295f47 /searchlib | |
parent | 628a9a9dd57d9eadd3ad786c5cde40ccfec1ba63 (diff) |
Commit last chunk prior to sync.
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/vespa/searchlib/transactionlog/domain.cpp | 15 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/transactionlog/domain.h | 1 |
2 files changed, 13 insertions, 3 deletions
diff --git a/searchlib/src/vespa/searchlib/transactionlog/domain.cpp b/searchlib/src/vespa/searchlib/transactionlog/domain.cpp index bd7feec0598..126a7afed4d 100644 --- a/searchlib/src/vespa/searchlib/transactionlog/domain.cpp +++ b/searchlib/src/vespa/searchlib/transactionlog/domain.cpp @@ -209,6 +209,10 @@ Domain::getSynced() const void Domain::triggerSyncNow() { + { + vespalib::MonitorGuard guard(_currentChunkMonitor); + commitAndTransferResponses(guard); + } MonitorGuard guard(_syncMonitor); if (!_pendingSync) { _pendingSync = true; @@ -352,12 +356,17 @@ Domain::startCommit(DoneCallback onDone) { void Domain::commitIfFull(const vespalib::MonitorGuard &guard) { if (_currentChunk->sizeBytes() > _config.getChunkSizeLimit()) { - auto completed = std::move(_currentChunk); - _currentChunk = std::make_unique<CommitChunk>(_config.getChunkSizeLimit(), completed->stealCallbacks()); - commitChunk(std::move(completed), guard); + commitAndTransferResponses(guard); } } +void +Domain::commitAndTransferResponses(const vespalib::MonitorGuard &guard) { + auto completed = std::move(_currentChunk); + _currentChunk = std::make_unique<CommitChunk>(_config.getChunkSizeLimit(), completed->stealCallbacks()); + commitChunk(std::move(completed), guard); +} + std::unique_ptr<CommitChunk> Domain::grabCurrentChunk(const vespalib::MonitorGuard & guard) { assert(guard.monitors(_currentChunkMonitor)); diff --git a/searchlib/src/vespa/searchlib/transactionlog/domain.h b/searchlib/src/vespa/searchlib/transactionlog/domain.h index 041ec27cf23..e41ad930840 100644 --- a/searchlib/src/vespa/searchlib/transactionlog/domain.h +++ b/searchlib/src/vespa/searchlib/transactionlog/domain.h @@ -57,6 +57,7 @@ public: Domain & setConfig(const DomainConfig & cfg); private: void commitIfFull(const vespalib::MonitorGuard & guard); + void commitAndTransferResponses(const vespalib::MonitorGuard & guard); std::unique_ptr<CommitChunk> grabCurrentChunk(const vespalib::MonitorGuard & guard); void commitChunk(std::unique_ptr<CommitChunk> chunk, const vespalib::MonitorGuard & chunkOrderGuard); |