aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-11-14 22:21:37 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2019-11-14 22:21:37 +0000
commit37754e26c8f04eb5a0d130f65e44946726fa5490 (patch)
treecc5cc48c3e7c26cd4881c93909fb14ef256b9b09 /searchlib/src
parent52a5a424000cb4a1bcc61e601c6f4a183103e3d1 (diff)
Use steady clock to ensure monotonically increasing clock.
Diffstat (limited to 'searchlib/src')
-rw-r--r--searchlib/src/vespa/searchlib/engine/docsumrequest.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/engine/proto_rpc_adapter.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/engine/searchrequest.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/engine/trace.cpp6
-rw-r--r--searchlib/src/vespa/searchlib/engine/trace.h5
5 files changed, 15 insertions, 4 deletions
diff --git a/searchlib/src/vespa/searchlib/engine/docsumrequest.cpp b/searchlib/src/vespa/searchlib/engine/docsumrequest.cpp
index 33a2c437a80..0fc258363e5 100644
--- a/searchlib/src/vespa/searchlib/engine/docsumrequest.cpp
+++ b/searchlib/src/vespa/searchlib/engine/docsumrequest.cpp
@@ -9,7 +9,7 @@ DocsumRequest::DocsumRequest()
{}
DocsumRequest::DocsumRequest(bool useRootSlime_)
- : DocsumRequest(RelativeTime(std::make_unique<FastosClock>()), useRootSlime_)
+ : DocsumRequest(RelativeTime(std::make_unique<SteadyClock>()), useRootSlime_)
{}
DocsumRequest::DocsumRequest(RelativeTime relativeTime, bool useRootSlime_)
diff --git a/searchlib/src/vespa/searchlib/engine/proto_rpc_adapter.cpp b/searchlib/src/vespa/searchlib/engine/proto_rpc_adapter.cpp
index 46f3ae0b4c7..4fa7079fe46 100644
--- a/searchlib/src/vespa/searchlib/engine/proto_rpc_adapter.cpp
+++ b/searchlib/src/vespa/searchlib/engine/proto_rpc_adapter.cpp
@@ -84,7 +84,7 @@ struct SearchRequestDecoder : SearchRequest::Source::Decoder {
QueryStats &stats;
RelativeTime relative_time;
SearchRequestDecoder(FRT_RPCRequest &rpc_in, QueryStats &stats_in)
- : rpc(rpc_in), stats(stats_in), relative_time(std::make_unique<FastosClock>()) {}
+ : rpc(rpc_in), stats(stats_in), relative_time(std::make_unique<SteadyClock>()) {}
std::unique_ptr<SearchRequest> decode() override {
ProtoSearchRequest msg;
stats.request_size = (*rpc.GetParams())[2]._data._len;
@@ -129,7 +129,7 @@ struct DocsumRequestDecoder : DocsumRequest::Source::Decoder {
DocsumStats &stats;
RelativeTime relative_time;
DocsumRequestDecoder(FRT_RPCRequest &rpc_in, DocsumStats &stats_in)
- : rpc(rpc_in), stats(stats_in), relative_time(std::make_unique<FastosClock>()) {}
+ : rpc(rpc_in), stats(stats_in), relative_time(std::make_unique<SteadyClock>()) {}
std::unique_ptr<DocsumRequest> decode() override {
ProtoDocsumRequest msg;
stats.request_size = (*rpc.GetParams())[2]._data._len;
diff --git a/searchlib/src/vespa/searchlib/engine/searchrequest.cpp b/searchlib/src/vespa/searchlib/engine/searchrequest.cpp
index 9ca89a8636f..b9f3e62afd7 100644
--- a/searchlib/src/vespa/searchlib/engine/searchrequest.cpp
+++ b/searchlib/src/vespa/searchlib/engine/searchrequest.cpp
@@ -5,7 +5,7 @@
namespace search::engine {
SearchRequest::SearchRequest()
- : SearchRequest(RelativeTime(std::make_unique<FastosClock>())) {}
+ : SearchRequest(RelativeTime(std::make_unique<SteadyClock>())) {}
SearchRequest::SearchRequest(RelativeTime relativeTime)
: Request(std::move(relativeTime)),
diff --git a/searchlib/src/vespa/searchlib/engine/trace.cpp b/searchlib/src/vespa/searchlib/engine/trace.cpp
index f9564846104..d95d07e0e98 100644
--- a/searchlib/src/vespa/searchlib/engine/trace.cpp
+++ b/searchlib/src/vespa/searchlib/engine/trace.cpp
@@ -3,8 +3,14 @@
#include "trace.h"
#include <vespa/vespalib/data/slime/slime.h>
+using namespace std::chrono;
+
namespace search::engine {
+fastos::TimeStamp SteadyClock::now() const {
+ return duration_cast<nanoseconds>(steady_clock::now().time_since_epoch()).count();
+}
+
RelativeTime::RelativeTime(std::unique_ptr<Clock> clock)
: _start(clock->now()),
_clock(std::move(clock))
diff --git a/searchlib/src/vespa/searchlib/engine/trace.h b/searchlib/src/vespa/searchlib/engine/trace.h
index 518485f8775..962cac8c49d 100644
--- a/searchlib/src/vespa/searchlib/engine/trace.h
+++ b/searchlib/src/vespa/searchlib/engine/trace.h
@@ -21,6 +21,11 @@ public:
fastos::TimeStamp now() const override { return fastos::ClockSystem::now(); }
};
+class SteadyClock : public Clock {
+public:
+ fastos::TimeStamp now() const override;
+};
+
class CountingClock : public Clock {
public:
CountingClock(int64_t start, int64_t increment) : _increment(increment), _nextTime(start) { }