summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-09-22 12:43:10 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-09-22 12:43:10 +0000
commite7f7be2e596453f16d80896eb11f68895d275eb1 (patch)
treec2661a5d4f6d3b9d930fb036262a928f0d065119 /searchlib
parent2fc48b76ba4187b88c303f5fb7372c4df2a93f1e (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.cpp19
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/domain.h2
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;