diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-09-14 09:24:02 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-09-14 09:24:02 +0000 |
commit | e07397569ebe62ef3ecb62f2f2698d4cb798893f (patch) | |
tree | 4bbbc406bd9877d8de70e0844208070aaa8e9a70 | |
parent | 7619197c924289a83dda3066e7fc0f9fb06821ad (diff) |
Add commit chunk
-rw-r--r-- | searchlib/src/vespa/searchlib/transactionlog/common.cpp | 25 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/transactionlog/common.h | 16 |
2 files changed, 41 insertions, 0 deletions
diff --git a/searchlib/src/vespa/searchlib/transactionlog/common.cpp b/searchlib/src/vespa/searchlib/transactionlog/common.cpp index afaaa349b64..209616614f7 100644 --- a/searchlib/src/vespa/searchlib/transactionlog/common.cpp +++ b/searchlib/src/vespa/searchlib/transactionlog/common.cpp @@ -121,4 +121,29 @@ Packet::add(const Packet::Entry & e) _range.to(e.serial()); } +CommitChunk::CommitChunk() + : _data(size_t(-1)), + _callBacks(), + _firstArrivalTime() +{} + +CommitChunk::~CommitChunk() = default; + +void +CommitChunk::add(const Packet &packet, Writer::DoneCallback onDone) { + if (_callBacks.empty()) { + _firstArrivalTime = vespalib::steady_clock::now(); + } + _data.merge(packet); + _callBacks.emplace_back(std::move(onDone)); +} + +vespalib::duration +CommitChunk::age() const { + if (_callBacks.empty()) { + return 0ms; + } + return (vespalib::steady_clock::now() - _firstArrivalTime); +} + } diff --git a/searchlib/src/vespa/searchlib/transactionlog/common.h b/searchlib/src/vespa/searchlib/transactionlog/common.h index 5cb1d67d525..ae2f6f1a962 100644 --- a/searchlib/src/vespa/searchlib/transactionlog/common.h +++ b/searchlib/src/vespa/searchlib/transactionlog/common.h @@ -5,6 +5,7 @@ #include <vespa/searchlib/common/idestructorcallback.h> #include <vespa/vespalib/objects/nbostream.h> #include <vespa/vespalib/util/buffer.h> +#include <vespa/vespalib/util/time.h> namespace search::transactionlog { @@ -103,4 +104,19 @@ public: virtual bool ok() const = 0; }; +class CommitChunk { +public: + CommitChunk(); + ~CommitChunk(); + void add(const Packet & packet, Writer::DoneCallback onDone); + size_t sizeBytes() const { return _data.sizeBytes(); } + const Packet & getPacket() const { return _data; } + vespalib::duration age() const; + size_t getNumCallBacks() const { return _callBacks.size(); } +private: + Packet _data; + std::vector<Writer::DoneCallback> _callBacks; + vespalib::steady_time _firstArrivalTime; +}; + } |