diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-12-07 10:52:40 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-12-07 10:58:02 +0000 |
commit | 5b5eb1e96f05675f5defeaf39252cff6729fbf81 (patch) | |
tree | f8bc8ab9f1796ea9e0af57536d1c7b3237d12a4d /searchlib | |
parent | 290255929457149590206c74f36b824bb7258225 (diff) |
Use GateCallback over local atomic counting.
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/tests/transactionlog/translogclient_test.cpp | 48 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/transactionlog/domain.cpp | 4 |
2 files changed, 21 insertions, 31 deletions
diff --git a/searchlib/src/tests/transactionlog/translogclient_test.cpp b/searchlib/src/tests/transactionlog/translogclient_test.cpp index a6474f9a320..d3c3af3a9ca 100644 --- a/searchlib/src/tests/transactionlog/translogclient_test.cpp +++ b/searchlib/src/tests/transactionlog/translogclient_test.cpp @@ -317,43 +317,33 @@ fillDomainTest(Session * s1, size_t numPackets, size_t numEntries) } } -using Counter = std::atomic<size_t>; - -class CountDone : public IDestructorCallback { -public: - explicit CountDone(Counter & inFlight) noexcept : _inFlight(inFlight) { ++_inFlight; } - ~CountDone() override { --_inFlight; } -private: - Counter & _inFlight; -}; - void -fillDomainTest(TransLogServer & s1, const vespalib::string & domain, size_t numPackets, size_t numEntries) +fillDomainTest(IDestructorCallback::SP onDone, TransLogServer & tls, const vespalib::string & domain, size_t numPackets, size_t numEntries) { size_t value(0); - Counter inFlight(0); - auto domainWriter = s1.getWriter(domain); - vespalib::Gate gate; - { - auto onDone = std::make_shared<vespalib::GateCallback>(gate); - for (size_t i = 0; i < numPackets; i++) { - auto p = std::make_unique<Packet>(DEFAULT_PACKET_SIZE); - for (size_t j = 0; j < numEntries; j++, value++) { - Packet::Entry e(value + 1, j + 1, vespalib::ConstBufferRef((const char *) &value, sizeof(value))); - p->add(e); - if (p->sizeBytes() > DEFAULT_PACKET_SIZE) { - domainWriter->append(*p, std::make_shared<CountDone>(inFlight)); - p = std::make_unique<Packet>(DEFAULT_PACKET_SIZE); - } + auto domainWriter = tls.getWriter(domain); + + for (size_t i = 0; i < numPackets; i++) { + auto p = std::make_unique<Packet>(DEFAULT_PACKET_SIZE); + for (size_t j = 0; j < numEntries; j++, value++) { + Packet::Entry e(value + 1, j + 1, vespalib::ConstBufferRef((const char *) &value, sizeof(value))); + p->add(e); + if (p->sizeBytes() > DEFAULT_PACKET_SIZE) { + domainWriter->append(*p, onDone); + p = std::make_unique<Packet>(DEFAULT_PACKET_SIZE); } - domainWriter->append(*p, std::make_shared<CountDone>(inFlight)); - auto keep = domainWriter->startCommit(onDone); } + domainWriter->append(*p, onDone); + auto keep = domainWriter->startCommit(onDone); } - gate.await(); - } +void +fillDomainTest(TransLogServer & tls, const vespalib::string & domain, size_t numPackets, size_t numEntries) { + vespalib::Gate gate; + fillDomainTest(std::make_shared<vespalib::GateCallback>(gate), tls, domain, numPackets, numEntries); + gate.await(); +} void fillDomainTest(Session * s1, size_t numPackets, size_t numEntries, size_t entrySize) diff --git a/searchlib/src/vespa/searchlib/transactionlog/domain.cpp b/searchlib/src/vespa/searchlib/transactionlog/domain.cpp index 7a6356fb076..96b94955570 100644 --- a/searchlib/src/vespa/searchlib/transactionlog/domain.cpp +++ b/searchlib/src/vespa/searchlib/transactionlog/domain.cpp @@ -419,8 +419,8 @@ Domain::doCommit(const SerializedChunk & serialized) { dp->sync(); } cleanSessions(); - LOG(debug, "Releasing unknown acks and %zu entries and %zu bytes.", - /*chunk->getNumCallBacks(),*/ serialized.getNumEntries(), serialized.getData().size()); + LOG(debug, "Releasing %zu acks and %zu entries and %zu bytes.", + serialized.commitChunk().getNumCallBacks(), serialized.getNumEntries(), serialized.getData().size()); } bool |