aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHÃ¥vard Pettersen <3535158+havardpe@users.noreply.github.com>2022-05-02 15:39:16 +0200
committerGitHub <noreply@github.com>2022-05-02 15:39:16 +0200
commit54e81e6be977137249bed9486ccc2841d2de194c (patch)
tree0b59b08468a3ef1ce732bf40250e58f2b8b1d174 /searchlib
parenta7c46fdf61ea4af911b174d855afb91b5759006d (diff)
parenta2e8017775c2f9e82a01adf1175e04157c60080f (diff)
Merge pull request #22388 from vespa-engine/toregge/make-domainpart-sz-atomic
Make search::transactionlog::DomainPart::_sz member variable atomic.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/domainpart.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/domainpart.h5
2 files changed, 5 insertions, 4 deletions
diff --git a/searchlib/src/vespa/searchlib/transactionlog/domainpart.cpp b/searchlib/src/vespa/searchlib/transactionlog/domainpart.cpp
index eea9610c7ab..38b463d6bc2 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/domainpart.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/domainpart.cpp
@@ -232,7 +232,7 @@ DomainPart::buildPacketMapping(bool allowTruncate)
const int64_t firstPos(currPos);
Packet packet = readPacket(transLog, all, TARGET_PACKET_SIZE, allowTruncate);
if (!packet.empty()) {
- _sz += packet.size();
+ set_size(size() + packet.size());
const SerialNum firstSerial = packet.range().from();
if (currPos == _headerLen) {
_range.from(firstSerial);
@@ -384,7 +384,7 @@ DomainPart::commit(const SerializedChunk & serialized)
int64_t firstPos(byteSize());
assert(_range.to() < range.to());
- _sz += serialized.getNumEntries();
+ set_size(size() + serialized.getNumEntries());
_range.to(range.to());
if (_range.from() == 0) {
_range.from(range.from());
diff --git a/searchlib/src/vespa/searchlib/transactionlog/domainpart.h b/searchlib/src/vespa/searchlib/transactionlog/domainpart.h
index ea5290c433b..fd84040228d 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/domainpart.h
+++ b/searchlib/src/vespa/searchlib/transactionlog/domainpart.h
@@ -37,7 +37,7 @@ public:
return _syncedSerial;
}
- size_t size() const { return _sz; }
+ size_t size() const noexcept { return _sz.load(std::memory_order_relaxed); }
size_t byteSize() const {
return _byteSize.load(std::memory_order_acquire);
}
@@ -51,6 +51,7 @@ private:
void write(FastOS_FileInterface &file, SerialNumRange range, vespalib::ConstBufferRef buf);
void writeHeader(const common::FileHeaderContext &fileHeaderContext);
+ void set_size(size_t sz) noexcept { _sz.store(sz, std::memory_order_relaxed); }
class SkipInfo
{
@@ -72,7 +73,7 @@ private:
std::mutex _lock;
std::mutex _fileLock;
SerialNumRange _range;
- size_t _sz;
+ std::atomic<size_t> _sz;
std::atomic<uint64_t> _byteSize;
vespalib::string _fileName;
std::unique_ptr<FastOS_FileInterface> _transLog;