diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-02-07 11:54:46 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-02-07 11:54:46 +0000 |
commit | 06a0ecf6d2ce9346f6a229d89d0af7ca349700df (patch) | |
tree | 6224785b9ec3b11f7e38f6c55b56e5ef89911407 /storage | |
parent | 3ba555fe6f2abe29ba1057492e12617dcc7e86b1 (diff) |
Use vespalib::duration all the way in PendingMessageTracker.
Diffstat (limited to 'storage')
3 files changed, 26 insertions, 54 deletions
diff --git a/storage/src/tests/distributor/pendingmessagetrackertest.cpp b/storage/src/tests/distributor/pendingmessagetrackertest.cpp index 0ba374f7190..3bfa1027a82 100644 --- a/storage/src/tests/distributor/pendingmessagetrackertest.cpp +++ b/storage/src/tests/distributor/pendingmessagetrackertest.cpp @@ -175,7 +175,7 @@ TEST_F(PendingMessageTrackerTest, simple) { EXPECT_THAT(ost.str(), HasSubstr( "<b>Bucket(BucketSpace(0x0000000000000001), BucketId(0x40000000000004d2))</b>\n" "<ul>\n" - "<li><i>Node 0</i>: <b>1970-01-01 00:00:01</b> " + "<li><i>Node 0</i>: <b>1970-01-01 00:00:01.000 UTC</b> " "Remove(BucketId(0x40000000000004d2), priority=127)</li>\n" "</ul>\n")); } @@ -248,17 +248,17 @@ TEST_F(PendingMessageTrackerTest, multiple_messages) { EXPECT_THAT(ost.str(), HasSubstr( "<b>Bucket(BucketSpace(0x0000000000000001), BucketId(0x40000000000004d2))</b>\n" "<ul>\n" - "<li><i>Node 0</i>: <b>1970-01-01 00:00:01</b> Remove(BucketId(0x40000000000004d2), priority=127)</li>\n" - "<li><i>Node 0</i>: <b>1970-01-01 00:00:01</b> Remove(BucketId(0x40000000000004d2), priority=127)</li>\n" - "<li><i>Node 1</i>: <b>1970-01-01 00:00:01</b> Remove(BucketId(0x40000000000004d2), priority=127)</li>\n" - "<li><i>Node 1</i>: <b>1970-01-01 00:00:01</b> Remove(BucketId(0x40000000000004d2), priority=127)</li>\n" + "<li><i>Node 0</i>: <b>1970-01-01 00:00:01.000 UTC</b> Remove(BucketId(0x40000000000004d2), priority=127)</li>\n" + "<li><i>Node 0</i>: <b>1970-01-01 00:00:01.000 UTC</b> Remove(BucketId(0x40000000000004d2), priority=127)</li>\n" + "<li><i>Node 1</i>: <b>1970-01-01 00:00:01.000 UTC</b> Remove(BucketId(0x40000000000004d2), priority=127)</li>\n" + "<li><i>Node 1</i>: <b>1970-01-01 00:00:01.000 UTC</b> Remove(BucketId(0x40000000000004d2), priority=127)</li>\n" "</ul>\n" "<b>Bucket(BucketSpace(0x0000000000000001), BucketId(0x40000000000011d7))</b>\n" "<ul>\n" - "<li><i>Node 0</i>: <b>1970-01-01 00:00:01</b> Remove(BucketId(0x40000000000011d7), priority=127)</li>\n" - "<li><i>Node 0</i>: <b>1970-01-01 00:00:01</b> Remove(BucketId(0x40000000000011d7), priority=127)</li>\n" - "<li><i>Node 1</i>: <b>1970-01-01 00:00:01</b> Remove(BucketId(0x40000000000011d7), priority=127)</li>\n" - "<li><i>Node 1</i>: <b>1970-01-01 00:00:01</b> Remove(BucketId(0x40000000000011d7), priority=127)</li>\n" + "<li><i>Node 0</i>: <b>1970-01-01 00:00:01.000 UTC</b> Remove(BucketId(0x40000000000011d7), priority=127)</li>\n" + "<li><i>Node 0</i>: <b>1970-01-01 00:00:01.000 UTC</b> Remove(BucketId(0x40000000000011d7), priority=127)</li>\n" + "<li><i>Node 1</i>: <b>1970-01-01 00:00:01.000 UTC</b> Remove(BucketId(0x40000000000011d7), priority=127)</li>\n" + "<li><i>Node 1</i>: <b>1970-01-01 00:00:01.000 UTC</b> Remove(BucketId(0x40000000000011d7), priority=127)</li>\n" "</ul>\n")); } { @@ -268,44 +268,23 @@ TEST_F(PendingMessageTrackerTest, multiple_messages) { EXPECT_THAT(ost.str(), HasSubstr( "<b>Node 0 (pending count: 4)</b>\n" "<ul>\n" - "<li><i>Node 0</i>: <b>1970-01-01 00:00:01</b> Remove(BucketId(0x40000000000004d2), priority=127)</li>\n" - "<li><i>Node 0</i>: <b>1970-01-01 00:00:01</b> Remove(BucketId(0x40000000000004d2), priority=127)</li>\n" - "<li><i>Node 0</i>: <b>1970-01-01 00:00:01</b> Remove(BucketId(0x40000000000011d7), priority=127)</li>\n" - "<li><i>Node 0</i>: <b>1970-01-01 00:00:01</b> Remove(BucketId(0x40000000000011d7), priority=127)</li>\n" + "<li><i>Node 0</i>: <b>1970-01-01 00:00:01.000 UTC</b> Remove(BucketId(0x40000000000004d2), priority=127)</li>\n" + "<li><i>Node 0</i>: <b>1970-01-01 00:00:01.000 UTC</b> Remove(BucketId(0x40000000000004d2), priority=127)</li>\n" + "<li><i>Node 0</i>: <b>1970-01-01 00:00:01.000 UTC</b> Remove(BucketId(0x40000000000011d7), priority=127)</li>\n" + "<li><i>Node 0</i>: <b>1970-01-01 00:00:01.000 UTC</b> Remove(BucketId(0x40000000000011d7), priority=127)</li>\n" "</ul>\n" "<b>Node 1 (pending count: 4)</b>\n" "<ul>\n" - "<li><i>Node 1</i>: <b>1970-01-01 00:00:01</b> Remove(BucketId(0x40000000000004d2), priority=127)</li>\n" - "<li><i>Node 1</i>: <b>1970-01-01 00:00:01</b> Remove(BucketId(0x40000000000004d2), priority=127)</li>\n" - "<li><i>Node 1</i>: <b>1970-01-01 00:00:01</b> Remove(BucketId(0x40000000000011d7), priority=127)</li>\n" - "<li><i>Node 1</i>: <b>1970-01-01 00:00:01</b> Remove(BucketId(0x40000000000011d7), priority=127)</li>\n" + "<li><i>Node 1</i>: <b>1970-01-01 00:00:01.000 UTC</b> Remove(BucketId(0x40000000000004d2), priority=127)</li>\n" + "<li><i>Node 1</i>: <b>1970-01-01 00:00:01.000 UTC</b> Remove(BucketId(0x40000000000004d2), priority=127)</li>\n" + "<li><i>Node 1</i>: <b>1970-01-01 00:00:01.000 UTC</b> Remove(BucketId(0x40000000000011d7), priority=127)</li>\n" + "<li><i>Node 1</i>: <b>1970-01-01 00:00:01.000 UTC</b> Remove(BucketId(0x40000000000011d7), priority=127)</li>\n" "</ul>\n")); } } namespace { -template <typename T> -std::string setToString(const std::set<T>& s) -{ - std::ostringstream ost; - ost << '{'; - for (typename std::set<T>::const_iterator i(s.begin()), e(s.end()); - i != e; ++i) - { - if (i != s.begin()) { - ost << ','; - } - ost << *i; - } - ost << '}'; - return ost.str(); -} - -} - -namespace { - class TestChecker : public PendingMessageTracker::Checker { public: @@ -443,7 +422,7 @@ TEST_F(PendingMessageTrackerTest, busy_reply_marks_node_as_busy) { TEST_F(PendingMessageTrackerTest, busy_node_duration_can_be_adjusted) { Fixture f; auto cmd = f.sendPut(RequestBuilder().toNode(0)); - f.tracker().setNodeBusyDuration(std::chrono::seconds(10)); + f.tracker().setNodeBusyDuration(10s); f.sendPutReply(*cmd, RequestBuilder(), api::ReturnCode(api::ReturnCode::BUSY)); EXPECT_TRUE(f.tracker().getNodeInfo().isBusy(0)); f.clock().addSecondsToTime(11); diff --git a/storage/src/vespa/storage/distributor/pendingmessagetracker.cpp b/storage/src/vespa/storage/distributor/pendingmessagetracker.cpp index 533493a79a2..8618d570685 100644 --- a/storage/src/vespa/storage/distributor/pendingmessagetracker.cpp +++ b/storage/src/vespa/storage/distributor/pendingmessagetracker.cpp @@ -3,7 +3,6 @@ #include <vespa/vespalib/stllike/asciistream.h> #include <vespa/vespalib/util/stringfmt.h> #include <map> -#include <algorithm> #include <vespa/log/log.h> LOG_SETUP(".pendingmessages"); @@ -15,7 +14,7 @@ PendingMessageTracker::PendingMessageTracker(framework::ComponentRegister& cr, u vespalib::make_string("Pending messages to storage nodes (stripe %u)", stripe_index)), _component(cr, "pendingmessagetracker"), _nodeInfo(_component.getClock()), - _nodeBusyDuration(60), + _nodeBusyDuration(60s), _deferred_read_tasks(), _lock() { @@ -38,7 +37,7 @@ vespalib::string PendingMessageTracker::MessageEntry::toHtml() const { vespalib::asciistream ss; ss << "<li><i>Node " << nodeIdx << "</i>: " - << "<b>" << framework::MilliSecTime(timeStamp.count()).toString() << "</b> " + << "<b>" << vespalib::to_string(timeStamp) << "</b> " << api::MessageType::get(api::MessageType::Id(msgType)).getName() << "(" << bucket.getBucketId() << ", priority=" << priority << ")</li>\n"; return ss.str(); } @@ -46,7 +45,7 @@ PendingMessageTracker::MessageEntry::toHtml() const { PendingMessageTracker::TimePoint PendingMessageTracker::currentTime() const { - return TimePoint(_component.getClock().getTimeInMillis().getTime()); + return _component.getClock().getSystemTime(); } namespace { diff --git a/storage/src/vespa/storage/distributor/pendingmessagetracker.h b/storage/src/vespa/storage/distributor/pendingmessagetracker.h index 93238b5a83f..fb672d5ee31 100644 --- a/storage/src/vespa/storage/distributor/pendingmessagetracker.h +++ b/storage/src/vespa/storage/distributor/pendingmessagetracker.h @@ -68,13 +68,7 @@ public: virtual bool check(uint32_t messageType, uint16_t node, uint8_t priority) = 0; }; - /** - * Time point represented as the millisecond interval from the framework - * clock's epoch to a given point in time. Note that it'd be more - * semantically correct to use std::chrono::time_point, but it is bound - * to specific chrono clock types, their epochs and duration resolution. - */ - using TimePoint = std::chrono::milliseconds; + using TimePoint = vespalib::system_time; PendingMessageTracker(framework::ComponentRegister&, uint32_t stripe_index); ~PendingMessageTracker() override; @@ -119,8 +113,8 @@ public: */ std::vector<uint64_t> clearMessagesForNode(uint16_t node); - void setNodeBusyDuration(std::chrono::seconds secs) noexcept { - _nodeBusyDuration = secs; + void setNodeBusyDuration(vespalib::duration duration) noexcept { + _nodeBusyDuration = duration; } void run_once_no_pending_for_bucket(const document::Bucket& bucket, std::unique_ptr<DeferredTask> task); @@ -136,7 +130,7 @@ private: MessageEntry(TimePoint timeStamp, uint32_t msgType, uint32_t priority, uint64_t msgId, document::Bucket bucket, uint16_t nodeIdx) noexcept; - vespalib::string toHtml() const; + [[nodiscard]] vespalib::string toHtml() const; }; struct MessageIdKey : boost::multi_index::member<MessageEntry, uint64_t, &MessageEntry::msgId> {}; @@ -187,7 +181,7 @@ private: Messages _messages; framework::Component _component; NodeInfo _nodeInfo; - std::chrono::seconds _nodeBusyDuration; + vespalib::duration _nodeBusyDuration; DeferredBucketTaskMap _deferred_read_tasks; // Since distributor is currently single-threaded, this will only |