diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-11-14 22:21:37 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-11-14 22:21:37 +0000 |
commit | 37754e26c8f04eb5a0d130f65e44946726fa5490 (patch) | |
tree | cc5cc48c3e7c26cd4881c93909fb14ef256b9b09 /searchlib/src | |
parent | 52a5a424000cb4a1bcc61e601c6f4a183103e3d1 (diff) |
Use steady clock to ensure monotonically increasing clock.
Diffstat (limited to 'searchlib/src')
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) { } |