diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-09-22 12:43:10 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-09-22 12:43:10 +0000 |
commit | e7f7be2e596453f16d80896eb11f68895d275eb1 (patch) | |
tree | c2661a5d4f6d3b9d930fb036262a928f0d065119 /searchlib | |
parent | 2fc48b76ba4187b88c303f5fb7372c4df2a93f1e (diff) |
Remove unnecessary guard and move check for emptiness inside doCommit to ensure ordering also of empty chunks.
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/vespa/searchlib/transactionlog/domain.cpp | 19 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/transactionlog/domain.h | 2 |
2 files changed, 8 insertions, 13 deletions
diff --git a/searchlib/src/vespa/searchlib/transactionlog/domain.cpp b/searchlib/src/vespa/searchlib/transactionlog/domain.cpp index 6d251a2a30e..fdee9dc1a24 100644 --- a/searchlib/src/vespa/searchlib/transactionlog/domain.cpp +++ b/searchlib/src/vespa/searchlib/transactionlog/domain.cpp @@ -341,7 +341,6 @@ Domain::startCommit(DoneCallback onDone) { vespalib::MonitorGuard guard(_currentChunkMonitor); if ( !_currentChunk->empty() ) { auto completed = grabCurrentChunk(guard); - assert(completed); completed->setCommitDoneCallback(std::move(onDone)); CommitResult result(completed->createCommitResult()); commitChunk(std::move(completed), guard); @@ -355,9 +354,7 @@ 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()); - if (completed) { - commitChunk(std::move(completed), guard); - } + commitChunk(std::move(completed), guard); } } @@ -369,20 +366,18 @@ Domain::grabCurrentChunk(const vespalib::MonitorGuard & guard) { return chunk; } -bool +void Domain::commitChunk(std::unique_ptr<CommitChunk> chunk, const vespalib::MonitorGuard & chunkOrderGuard) { assert(chunkOrderGuard.monitors(_currentChunkMonitor)); - if ( ! chunk->getPacket().empty()) { - _singleCommitter->execute( makeLambdaTask([this, chunk = std::move(chunk)]() mutable { - doCommit(std::move(chunk)); - })); - return true; - } - return false; + _singleCommitter->execute( makeLambdaTask([this, chunk = std::move(chunk)]() mutable { + doCommit(std::move(chunk)); + })); } void Domain::doCommit(std::unique_ptr<CommitChunk> chunk) { + if (chunk->empty()) return; + const Packet & packet = chunk->getPacket(); vespalib::nbostream_longlivedbuf is(packet.getHandle().data(), packet.getHandle().size()); Packet::Entry entry; diff --git a/searchlib/src/vespa/searchlib/transactionlog/domain.h b/searchlib/src/vespa/searchlib/transactionlog/domain.h index 5bd11ea2bdf..041ec27cf23 100644 --- a/searchlib/src/vespa/searchlib/transactionlog/domain.h +++ b/searchlib/src/vespa/searchlib/transactionlog/domain.h @@ -59,7 +59,7 @@ private: void commitIfFull(const vespalib::MonitorGuard & guard); std::unique_ptr<CommitChunk> grabCurrentChunk(const vespalib::MonitorGuard & guard); - bool commitChunk(std::unique_ptr<CommitChunk> chunk, const vespalib::MonitorGuard & chunkOrderGuard); + void commitChunk(std::unique_ptr<CommitChunk> chunk, const vespalib::MonitorGuard & chunkOrderGuard); void doCommit(std::unique_ptr<CommitChunk> chunk); SerialNum begin(const vespalib::LockGuard & guard) const; SerialNum end(const vespalib::LockGuard & guard) const; |