diff options
author | Geir Storli <geirst@oath.com> | 2017-10-25 14:31:43 +0000 |
---|---|---|
committer | Geir Storli <geirst@oath.com> | 2017-10-25 14:31:43 +0000 |
commit | 7a9147a435476c1e985f120eb8c10a155f3d7b4b (patch) | |
tree | 9994a810c7048a7b18f265839ffcc99400969542 /searchlib | |
parent | d5ff1d39ec4e1aeff417fb20d9b997390b91887b (diff) |
Avoid race conditions by taking updateLock when iterating file chunks.
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/vespa/searchlib/docstore/logdatastore.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp b/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp index 4e3178fcdb1..1850db7b02b 100644 --- a/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp +++ b/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp @@ -356,6 +356,7 @@ double LogDataStore::getMaxBucketSpread() const { double maxSpread(1.0); + LockGuard guard(_updateLock); for (const FileChunk::UP & fc : _fileChunks) { if (fc) { if (_bucketizer && fc->frozen()) { @@ -1000,6 +1001,7 @@ LogDataStore::computeNumberOfSignificantBucketIdBits(const IBucketizer & bucketi void LogDataStore::verify(bool reportOnly) const { + LockGuard guard(_updateLock); for (const FileChunk::UP & fc : _fileChunks) { if (fc) { fc->verify(reportOnly); @@ -1107,6 +1109,7 @@ double LogDataStore::getVisitCost() const { uint32_t totalChunks = 0; + LockGuard guard(_updateLock); for (auto &fc : _fileChunks) { totalChunks += fc->getNumChunks(); } |