aboutsummaryrefslogtreecommitdiffstats
path: root/storage
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-02-07 11:54:46 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-02-07 11:54:46 +0000
commit06a0ecf6d2ce9346f6a229d89d0af7ca349700df (patch)
tree6224785b9ec3b11f7e38f6c55b56e5ef89911407 /storage
parent3ba555fe6f2abe29ba1057492e12617dcc7e86b1 (diff)
Use vespalib::duration all the way in PendingMessageTracker.
Diffstat (limited to 'storage')
-rw-r--r--storage/src/tests/distributor/pendingmessagetrackertest.cpp57
-rw-r--r--storage/src/vespa/storage/distributor/pendingmessagetracker.cpp7
-rw-r--r--storage/src/vespa/storage/distributor/pendingmessagetracker.h16
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