aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-12-07 10:52:40 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-12-07 10:58:02 +0000
commit5b5eb1e96f05675f5defeaf39252cff6729fbf81 (patch)
treef8bc8ab9f1796ea9e0af57536d1c7b3237d12a4d /searchlib
parent290255929457149590206c74f36b824bb7258225 (diff)
Use GateCallback over local atomic counting.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/transactionlog/translogclient_test.cpp48
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/domain.cpp4
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