diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-06-11 10:36:45 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-06-11 10:36:45 +0000 |
commit | b8816865133cdecfe1f43f75e54cdfb365860dad (patch) | |
tree | 47c241f16a7ce9696216a0fac1b2411a00a5b016 /searchlib | |
parent | cf0e7731c73bbde4943e75e062189cdbe9fe583c (diff) |
Need to do a last enqueue, but the sync is not required.
Diffstat (limited to 'searchlib')
3 files changed, 13 insertions, 6 deletions
diff --git a/searchlib/src/vespa/searchlib/docstore/logdatastore.h b/searchlib/src/vespa/searchlib/docstore/logdatastore.h index c4d1e8bbdb4..4ab747d115d 100644 --- a/searchlib/src/vespa/searchlib/docstore/logdatastore.h +++ b/searchlib/src/vespa/searchlib/docstore/logdatastore.h @@ -89,7 +89,7 @@ public: const search::common::FileHeaderContext &fileHeaderContext, transactionlog::SyncProxy &tlSyncer, const IBucketizer::SP & bucketizer, bool readOnly = false); - ~LogDataStore(); + ~LogDataStore() override; // Implements IDataStore API ssize_t read(uint32_t lid, vespalib::DataBuffer & buffer) const override; @@ -220,7 +220,7 @@ private: const FileChunk * getPrevActive(const LockGuard & guard) const { assert(guard.locks(_updateLock)); (void) guard; - return ( !_prevActive.isActive() ) ? _fileChunks[_prevActive.getId()].get() : NULL; + return ( !_prevActive.isActive() ) ? _fileChunks[_prevActive.getId()].get() : nullptr; } void setActive(const LockGuard & guard, FileId fileId) { assert(guard.locks(_updateLock)); diff --git a/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.cpp b/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.cpp index 1c782be9f0e..50517cf09e2 100644 --- a/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.cpp +++ b/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.cpp @@ -74,7 +74,7 @@ private: }; WriteableFileChunk:: -WriteableFileChunk(vespalib::ThreadExecutor &executor, +WriteableFileChunk(vespalib::Executor &executor, FileId fileId, NameId nameId, const vespalib::string &baseName, SerialNum initialSerialNum, @@ -536,6 +536,13 @@ WriteableFileChunk::freeze() { if (!frozen()) { waitForAllChunksFlushedToDisk(); + enque(ProcessedChunkUP()); + { + MonitorGuard guard(_writeMonitor); + while (_writeTaskIsRunning) { + guard.wait(10); + } + } assert(_writeQ.empty()); assert(_chunkMap.empty()); { diff --git a/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.h b/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.h index 4a2ebfc42df..2c300bc9035 100644 --- a/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.h +++ b/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.h @@ -3,7 +3,7 @@ #pragma once #include "filechunk.h" -#include <vespa/vespalib/util/threadexecutor.h> +#include <vespa/vespalib/util/executor.h> #include <vespa/searchlib/transactionlog/syncproxy.h> #include <vespa/fastos/file.h> #include <map> @@ -42,7 +42,7 @@ public: public: typedef std::unique_ptr<WriteableFileChunk> UP; - WriteableFileChunk(vespalib::ThreadExecutor & executor, FileId fileId, NameId nameId, + WriteableFileChunk(vespalib::Executor & executor, FileId fileId, NameId nameId, const vespalib::string & baseName, uint64_t initialSerialNum, uint32_t docIdLimit, const Config & config, const TuneFileSummary &tune, const common::FileHeaderContext &fileHeaderContext, @@ -128,7 +128,7 @@ private: bool _writeTaskIsRunning; vespalib::Monitor _writeMonitor; ProcessedChunkQ _writeQ; - vespalib::ThreadExecutor & _executor; + vespalib::Executor & _executor; ProcessedChunkMap _orderedChunks; BucketDensityComputer _bucketMap; }; |