diff options
14 files changed, 64 insertions, 58 deletions
diff --git a/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp b/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp index 069541eea91..1ad6b6cdc43 100644 --- a/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp +++ b/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp @@ -127,7 +127,7 @@ ViewSet::ViewSet() _dmsc(), _gidToLidChangeHandler(), _lidReuseDelayer(), - _commitTimeTracker(TimeStamp()), + _commitTimeTracker(vespalib::duration::zero()), searchView(), feedView(), _hwInfo() @@ -256,7 +256,7 @@ struct MyFastAccessFeedView _dmsc(), _gidToLidChangeHandler(make_shared<DummyGidToLidChangeHandler>()), _lidReuseDelayer(), - _commitTimeTracker(TimeStamp()), + _commitTimeTracker(vespalib::duration::zero()), _feedView() { init(); diff --git a/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp b/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp index 839228b79b8..ca513cb1cfb 100644 --- a/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp +++ b/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp @@ -707,7 +707,7 @@ FixtureBase::FixtureBase(vespalib::duration visibilityDelay) _writeServiceReal(_sharedExecutor), _writeService(_writeServiceReal), _lidReuseDelayer(_writeService, _dmsc->get()), - _commitTimeTracker(vespalib::count_ns(visibilityDelay)), + _commitTimeTracker(visibilityDelay), serial(0), _gidToLidChangeHandler(std::make_shared<MyGidToLidChangeHandler>()) { diff --git a/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp b/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp index 2d5f86fbc58..7c9df8d3e47 100644 --- a/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp +++ b/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp @@ -94,8 +94,7 @@ struct MyMinimalFeedView : public MyMinimalFeedViewBase, public StoreOnlyFeedVie MyMinimalFeedViewBase(), StoreOnlyFeedView(StoreOnlyFeedView::Context(summaryAdapter, search::index::Schema::SP(), - DocumentMetaStoreContext::SP( - new DocumentMetaStoreContext(metaStore)), + std::make_shared<DocumentMetaStoreContext>(metaStore), *gidToLidChangeHandler, myGetDocumentTypeRepo(), writeService, @@ -109,23 +108,19 @@ struct MyMinimalFeedView : public MyMinimalFeedViewBase, public StoreOnlyFeedVie outstandingMoveOps(outstandingMoveOps_) { } - virtual void removeAttributes(SerialNum s, const LidVector &l, - bool immediateCommit, OnWriteDoneType onWriteDone) override { + void removeAttributes(SerialNum s, const LidVector &l, bool immediateCommit, OnWriteDoneType onWriteDone) override { StoreOnlyFeedView::removeAttributes(s, l, immediateCommit, onWriteDone); ++removeMultiAttributesCount; } - virtual void removeIndexedFields(SerialNum s, const LidVector &l, - bool immediateCommit, - OnWriteDoneType onWriteDone) override { - StoreOnlyFeedView::removeIndexedFields(s, l, - immediateCommit, onWriteDone); + void removeIndexedFields(SerialNum s, const LidVector &l, bool immediateCommit, OnWriteDoneType onWriteDone) override { + StoreOnlyFeedView::removeIndexedFields(s, l, immediateCommit, onWriteDone); ++removeMultiIndexFieldsCount; } - virtual void heartBeatIndexedFields(SerialNum s) override { + void heartBeatIndexedFields(SerialNum s) override { StoreOnlyFeedView::heartBeatIndexedFields(s); ++heartBeatIndexedFieldsCount; } - virtual void heartBeatAttributes(SerialNum s) override { + void heartBeatAttributes(SerialNum s) override { StoreOnlyFeedView::heartBeatAttributes(s); ++heartBeatAttributesCount; } @@ -154,26 +149,23 @@ struct MoveOperationFeedView : public MyMinimalFeedView { removeIndexFieldsCount(0), onWriteDoneContexts() {} - virtual void putAttributes(SerialNum, search::DocumentIdT, const document::Document &, - bool, OnPutDoneType onWriteDone) override { + void putAttributes(SerialNum, search::DocumentIdT, const document::Document &, bool, OnPutDoneType onWriteDone) override { ++putAttributesCount; EXPECT_EQUAL(1, outstandingMoveOps); onWriteDoneContexts.push_back(onWriteDone); } - virtual void putIndexedFields(SerialNum, search::DocumentIdT, const document::Document::SP &, - bool, OnOperationDoneType onWriteDone) override { + void putIndexedFields(SerialNum, search::DocumentIdT, const document::Document::SP &, + bool, OnOperationDoneType onWriteDone) override { ++putIndexFieldsCount; EXPECT_EQUAL(1, outstandingMoveOps); onWriteDoneContexts.push_back(onWriteDone); } - virtual void removeAttributes(SerialNum, search::DocumentIdT, - bool, OnRemoveDoneType onWriteDone) override { + void removeAttributes(SerialNum, search::DocumentIdT, bool, OnRemoveDoneType onWriteDone) override { ++removeAttributesCount; EXPECT_EQUAL(1, outstandingMoveOps); onWriteDoneContexts.push_back(onWriteDone); } - virtual void removeIndexedFields(SerialNum, search::DocumentIdT, - bool, OnRemoveDoneType onWriteDone) override { + void removeIndexedFields(SerialNum, search::DocumentIdT, bool, OnRemoveDoneType onWriteDone) override { ++removeIndexFieldsCount; EXPECT_EQUAL(1, outstandingMoveOps); onWriteDoneContexts.push_back(onWriteDone); @@ -186,7 +178,7 @@ struct MoveOperationCallback : public IDestructorCallback { MoveOperationCallback(int &outstandingMoveOps_) : outstandingMoveOps(outstandingMoveOps_) { ++outstandingMoveOps; } - virtual ~MoveOperationCallback() { + ~MoveOperationCallback() override { ASSERT_GREATER(outstandingMoveOps, 0); --outstandingMoveOps; } @@ -220,7 +212,7 @@ struct FixtureBase { sharedExecutor(1, 0x10000), writeService(sharedExecutor), lidReuseDelayer(writeService, *metaStore), - commitTimeTracker(fastos::TimeStamp()), + commitTimeTracker(vespalib::duration::zero()), feedview() { StoreOnlyFeedView::PersistentParams params(0, 0, DocTypeName("foo"), subdb_id, subDbType); diff --git a/searchcore/src/vespa/searchcore/proton/common/commit_time_tracker.cpp b/searchcore/src/vespa/searchcore/proton/common/commit_time_tracker.cpp index c9db3d23979..eaf515d4fa5 100644 --- a/searchcore/src/vespa/searchcore/proton/common/commit_time_tracker.cpp +++ b/searchcore/src/vespa/searchcore/proton/common/commit_time_tracker.cpp @@ -4,9 +4,9 @@ namespace proton { -CommitTimeTracker::CommitTimeTracker(fastos::TimeStamp visibilityDelay) +CommitTimeTracker::CommitTimeTracker(vespalib::duration visibilityDelay) : _visibilityDelay(visibilityDelay), - _nextCommit(fastos::ClockSteady::now()), + _nextCommit(vespalib::steady_clock::now()), _replayDone(false) { _nextCommit = _nextCommit + visibilityDelay; @@ -15,11 +15,11 @@ CommitTimeTracker::CommitTimeTracker(fastos::TimeStamp visibilityDelay) bool CommitTimeTracker::needCommit() const { - if (_visibilityDelay > 0) { + if (hasVisibilityDelay()) { if (_replayDone) { return false; // maintenance job will do forced commits now } - fastos::SteadyTimeStamp now(fastos::ClockSteady::now()); + vespalib::steady_time now(vespalib::steady_clock::now()); if (now > _nextCommit) { _nextCommit = now + _visibilityDelay; return true; @@ -30,13 +30,13 @@ CommitTimeTracker::needCommit() const } void -CommitTimeTracker::setVisibilityDelay(fastos::TimeStamp visibilityDelay) +CommitTimeTracker::setVisibilityDelay(vespalib::duration visibilityDelay) { - fastos::SteadyTimeStamp nextCommit = fastos::ClockSteady::now() + visibilityDelay; + vespalib::steady_time nextCommit = vespalib::steady_clock::now() + visibilityDelay; if (nextCommit < _nextCommit) { _nextCommit = nextCommit; } _visibilityDelay = visibilityDelay; } -} // namespace proton +} diff --git a/searchcore/src/vespa/searchcore/proton/common/commit_time_tracker.h b/searchcore/src/vespa/searchcore/proton/common/commit_time_tracker.h index d00152cf372..02bf87f0a08 100644 --- a/searchcore/src/vespa/searchcore/proton/common/commit_time_tracker.h +++ b/searchcore/src/vespa/searchcore/proton/common/commit_time_tracker.h @@ -1,7 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/fastos/timestamp.h> +#include <vespa/vespalib/util/time.h> namespace proton { @@ -11,18 +11,18 @@ namespace proton { class CommitTimeTracker { private: - fastos::TimeStamp _visibilityDelay; - mutable fastos::SteadyTimeStamp _nextCommit; - bool _replayDone; + vespalib::duration _visibilityDelay; + mutable vespalib::steady_time _nextCommit; + bool _replayDone; public: - CommitTimeTracker(fastos::TimeStamp visibilityDelay); + CommitTimeTracker(vespalib::duration visibilityDelay); bool needCommit() const; - void setVisibilityDelay(fastos::TimeStamp visibilityDelay); + void setVisibilityDelay(vespalib::duration visibilityDelay); - bool hasVisibilityDelay() const { return _visibilityDelay != 0; } + bool hasVisibilityDelay() const { return _visibilityDelay != vespalib::duration::zero(); } void setReplayDone() { _replayDone = true; } }; diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp index 609982a46d5..44d3e618b93 100644 --- a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp @@ -125,7 +125,7 @@ StoreOnlyDocSubDB::StoreOnlyDocSubDB(const Config &cfg, const Context &ctx) _subDbType(cfg._subDbType), _fileHeaderContext(*this, ctx._fileHeaderContext, _docTypeName, _baseDir), _lidReuseDelayer(), - _commitTimeTracker(TimeStamp::Seconds(3600.0)), + _commitTimeTracker(vespalib::from_s(3600)), _gidToLidChangeHandler(std::make_shared<DummyGidToLidChangeHandler>()) { vespalib::mkdir(_baseDir, false); // Assume parent is created. @@ -401,7 +401,7 @@ StoreOnlyDocSubDB::updateLidReuseDelayer(const LidReuseDelayerConfig &config) * feed view before applying the new config to the sub dbs. */ _lidReuseDelayer->setImmediateCommit(immediateCommit); - _commitTimeTracker.setVisibilityDelay(config.visibilityDelay()); + _commitTimeTracker.setVisibilityDelay(vespalib::from_s(config.visibilityDelay())); } IReprocessingTask::List diff --git a/searchlib/src/tests/groupingengine/groupingengine_benchmark.cpp b/searchlib/src/tests/groupingengine/groupingengine_benchmark.cpp index 8f22ab87c97..36a567e5675 100644 --- a/searchlib/src/tests/groupingengine/groupingengine_benchmark.cpp +++ b/searchlib/src/tests/groupingengine/groupingengine_benchmark.cpp @@ -277,7 +277,7 @@ Test::Main() LOG(info, "sizeof(CountAggregationResult) = %ld", sizeof(CountAggregationResult)); LOG(info, "sizeof(Int64ResultNode) = %ld", sizeof(Int64ResultNode)); - fastos::SteadyTimeStamp start(fastos::ClockSteady::now()); + vespalib::steady_time start(vespalib::steady_clock::now()); if (idType == "int") { if (aggrType == "sum") { benchmarkIntegerSum(useEngine, numDocs, numQueries, maxGroups); diff --git a/staging_vespalib/src/tests/array/allocinarray_benchmark.cpp b/staging_vespalib/src/tests/array/allocinarray_benchmark.cpp index a9e1499f014..db468044e48 100644 --- a/staging_vespalib/src/tests/array/allocinarray_benchmark.cpp +++ b/staging_vespalib/src/tests/array/allocinarray_benchmark.cpp @@ -111,7 +111,7 @@ Test::Main() count = strtol(_argv[2], NULL, 0); } TEST_INIT("allocinarray_benchmark"); - fastos::SteadyTimeStamp start(fastos::ClockSteady::now()); + steady_time start(steady_clock::now()); if (type == "direct") { benchmarkTree(count); } else { diff --git a/staging_vespalib/src/tests/array/sort_benchmark.cpp b/staging_vespalib/src/tests/array/sort_benchmark.cpp index 03a99aa044f..3fd900503c4 100644 --- a/staging_vespalib/src/tests/array/sort_benchmark.cpp +++ b/staging_vespalib/src/tests/array/sort_benchmark.cpp @@ -100,7 +100,7 @@ Test::Main() payLoad = strtol(_argv[3], NULL, 0); } TEST_INIT("sort_benchmark"); - fastos::SteadyTimeStamp start(fastos::ClockSteady::now()); + steady_time start(steady_clock::now()); if (payLoad < 8) { typedef TT<8> T; if (type == "sortdirect") { diff --git a/staging_vespalib/src/tests/rusage/rusage_test.cpp b/staging_vespalib/src/tests/rusage/rusage_test.cpp index 23b9d4072b1..942140086d6 100644 --- a/staging_vespalib/src/tests/rusage/rusage_test.cpp +++ b/staging_vespalib/src/tests/rusage/rusage_test.cpp @@ -30,12 +30,12 @@ Test::testRUsage() RUsage diff = r2-r1; EXPECT_EQUAL(diff.toString(), r2.toString()); { - RUsage then = RUsage::createSelf(fastos::SteadyTimeStamp(7)); + RUsage then = RUsage::createSelf(steady_time(duration(7))); RUsage now = RUsage::createSelf(); EXPECT_NOT_EQUAL(now.toString(), then.toString()); } { - RUsage then = RUsage::createChildren(fastos::SteadyTimeStamp(1337583)); + RUsage then = RUsage::createChildren(steady_time(duration(1337583))); RUsage now = RUsage::createChildren(); EXPECT_NOT_EQUAL(now.toString(), then.toString()); } diff --git a/staging_vespalib/src/vespa/vespalib/util/rusage.cpp b/staging_vespalib/src/vespa/vespalib/util/rusage.cpp index 32f76775586..d5910148c79 100644 --- a/staging_vespalib/src/vespa/vespalib/util/rusage.cpp +++ b/staging_vespalib/src/vespa/vespalib/util/rusage.cpp @@ -33,20 +33,20 @@ RUsage::RUsage() : RUsage RUsage::createSelf() { - return createSelf(fastos::SteadyTimeStamp()); + return createSelf(vespalib::steady_time()); } RUsage RUsage::createChildren() { - return createChildren(fastos::SteadyTimeStamp()); + return createChildren(vespalib::steady_time()); } RUsage -RUsage::createSelf(fastos::SteadyTimeStamp since) +RUsage::createSelf(vespalib::steady_time since) { RUsage r; - r._time = fastos::ClockSteady::now() - since; + r._time = vespalib::steady_clock::now() - since; if (getrusage(RUSAGE_SELF, &r) != 0) { throw std::runtime_error(vespalib::make_string("getrusage failed with errno = %d", errno).c_str()); } @@ -54,10 +54,10 @@ RUsage::createSelf(fastos::SteadyTimeStamp since) } RUsage -RUsage::createChildren(fastos::SteadyTimeStamp since) +RUsage::createChildren(vespalib::steady_time since) { RUsage r; - r._time = fastos::ClockSteady::now() - since; + r._time = vespalib::steady_clock::now() - since; if (getrusage(RUSAGE_CHILDREN, &r) != 0) { throw std::runtime_error(vespalib::make_string("getrusage failed with errno = %d", errno).c_str()); } @@ -68,9 +68,9 @@ vespalib::string RUsage::toString() { vespalib::string s; - if (_time.sec() != 0.0) s += make_string("duration = %1.6f\n", _time.sec()); - if (fastos::TimeStamp(ru_utime).sec() != 0.0) s += make_string("user time = %1.6f\n", fastos::TimeStamp(ru_utime).sec()); - if (fastos::TimeStamp(ru_stime).sec() != 0.0) s += make_string("system time = %1.6f\n", fastos::TimeStamp(ru_stime).sec()); + if (_time != duration::zero()) s += make_string("duration = %1.6f\n", vespalib::to_s(_time)); + if (from_timeval(ru_utime) > duration::zero()) s += make_string("user time = %1.6f\n", to_s(from_timeval(ru_utime))); + if (from_timeval(ru_stime) > duration::zero()) s += make_string("system time = %1.6f\n", to_s(from_timeval(ru_stime))); if (ru_maxrss != 0) s += make_string("ru_maxrss = %ld\n", ru_maxrss); if (ru_ixrss != 0) s += make_string("ru_ixrss = %ld\n", ru_ixrss); if (ru_idrss != 0) s += make_string("ru_idrss = %ld\n", ru_idrss); diff --git a/staging_vespalib/src/vespa/vespalib/util/rusage.h b/staging_vespalib/src/vespa/vespalib/util/rusage.h index 381d4d764e7..f2cea3ba0ab 100644 --- a/staging_vespalib/src/vespa/vespalib/util/rusage.h +++ b/staging_vespalib/src/vespa/vespalib/util/rusage.h @@ -2,7 +2,7 @@ #pragma once #include <vespa/vespalib/stllike/string.h> -#include <vespa/fastos/timestamp.h> +#include <vespa/vespalib/util/time.h> #include <sys/resource.h> namespace vespalib { @@ -17,19 +17,19 @@ public: * Will create an RUsage and initialize member with RUSAGE_SELF **/ static RUsage createSelf(); - static RUsage createSelf(fastos::SteadyTimeStamp since); + static RUsage createSelf(vespalib::steady_time since); /** * Will create an RUsage and initialize member with RUSAGE_CHILDREN **/ static RUsage createChildren(); - static RUsage createChildren(fastos::SteadyTimeStamp since); + static RUsage createChildren(vespalib::steady_time since); /** * Will create an RUsage and initialize member with RUSAGE_CHILDREN **/ vespalib::string toString(); RUsage & operator -= (const RUsage & rhs); private: - fastos::TimeStamp _time; + vespalib::duration _time; }; RUsage operator -(const RUsage & a, const RUsage & b); diff --git a/vespalib/src/tests/time/time_test.cpp b/vespalib/src/tests/time/time_test.cpp index 667511f6a94..40542b6ca62 100644 --- a/vespalib/src/tests/time/time_test.cpp +++ b/vespalib/src/tests/time/time_test.cpp @@ -29,6 +29,16 @@ TEST(TimeTest, double_conversion_works_as_expected) { EXPECT_EQ(10ms, from_s(0.010)); } +TEST(TimeTest, timeval_conversion_works_as_expected) { + timeval tv1; + tv1.tv_sec = 7; + tv1.tv_usec = 342356; + EXPECT_EQ(from_timeval(tv1), 7342356us); + tv1.tv_sec = 7; + tv1.tv_usec = 1342356; + EXPECT_EQ(from_timeval(tv1), 8342356us); +} + TEST(TimeTest, unit_counting_works_as_expected) { auto d = 3ms + 5us + 7ns; EXPECT_EQ(count_ns(d), 3005007); diff --git a/vespalib/src/vespa/vespalib/util/time.h b/vespalib/src/vespa/vespalib/util/time.h index 2f8ae0ae016..a3390114bb1 100644 --- a/vespalib/src/vespa/vespalib/util/time.h +++ b/vespalib/src/vespa/vespalib/util/time.h @@ -55,6 +55,10 @@ constexpr int64_t count_ns(duration d) { return std::chrono::duration_cast<std::chrono::nanoseconds>(d).count(); } +constexpr duration from_timeval(const timeval & tv) { + return duration(tv.tv_sec*1000000000L + tv.tv_usec*1000L); +} + /** * Simple utility class used to measure how much time has elapsed * since it was constructed. |