From a65c5f165553d4b954151e671b770706a749b727 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Mon, 18 Nov 2019 14:30:35 +0000 Subject: Specify UTC explicit --- .../document_store/document_store_test.cpp | 2 +- .../docstore/logdatastore/logdatastore_test.cpp | 10 ++++----- searchlib/src/tests/util/bufferwriter/bm.cpp | 7 ++----- .../vespa/searchlib/common/fileheadercontext.cpp | 18 +++++++--------- .../src/vespa/searchlib/docstore/documentstore.cpp | 2 +- .../src/vespa/searchlib/docstore/documentstore.h | 2 +- .../src/vespa/searchlib/docstore/filechunk.cpp | 2 +- searchlib/src/vespa/searchlib/docstore/filechunk.h | 24 +++++++++++----------- .../src/vespa/searchlib/docstore/idatastore.h | 2 +- .../src/vespa/searchlib/docstore/idocumentstore.h | 2 +- .../src/vespa/searchlib/docstore/logdatastore.cpp | 11 +++++----- .../src/vespa/searchlib/docstore/logdatastore.h | 2 +- .../searchlib/docstore/writeablefilechunk.cpp | 8 ++++---- .../vespa/searchlib/docstore/writeablefilechunk.h | 4 ++-- searchlib/src/vespa/searchlib/util/filekit.cpp | 6 +++--- searchlib/src/vespa/searchlib/util/filekit.h | 2 +- 16 files changed, 49 insertions(+), 55 deletions(-) (limited to 'searchlib') diff --git a/searchlib/src/tests/docstore/document_store/document_store_test.cpp b/searchlib/src/tests/docstore/document_store/document_store_test.cpp index 3597de0dcc5..6ea5176f4f3 100644 --- a/searchlib/src/tests/docstore/document_store/document_store_test.cpp +++ b/searchlib/src/tests/docstore/document_store/document_store_test.cpp @@ -27,7 +27,7 @@ struct NullDataStore : IDataStore { size_t getDiskBloat() const override { return 0; } uint64_t lastSyncToken() const override { return 0; } uint64_t tentativeLastSyncToken() const override { return 0; } - fastos::TimeStamp getLastFlushTime() const override { return fastos::TimeStamp(); } + fastos::UTCTimeStamp getLastFlushTime() const override { return fastos::UTCTimeStamp::ZERO; } void accept(IDataStoreVisitor &, IDataStoreVisitorProgress &, bool) override { } double getVisitCost() const override { return 1.0; } DataStoreStorageStats getStorageStats() const override { diff --git a/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp b/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp index 35e21d133c2..4e2450dccc9 100644 --- a/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp +++ b/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp @@ -757,21 +757,21 @@ TEST("requireThatSyncTokenIsUpdatedAfterFlush") { TEST("requireThatFlushTimeIsAvailableAfterFlush") { TmpDirectory testDir("flushtime"); - fastos::TimeStamp before(fastos::ClockSystem::now()); + fastos::UTCTimeStamp before(fastos::ClockSystem::now()); DummyFileHeaderContext fileHeaderContext; LogDataStore::Config config; vespalib::ThreadStackExecutor executor(1, 128*1024); MyTlSyncer tlSyncer; LogDataStore store(executor, testDir.getDir(), config, GrowStrategy(), TuneFileSummary(), fileHeaderContext, tlSyncer, nullptr); - EXPECT_EQUAL(0, store.getLastFlushTime().time()); + EXPECT_EQUAL(0, store.getLastFlushTime().timeSinceEpoch().time()); uint64_t flushToken = store.initFlush(5); EXPECT_EQUAL(5u, flushToken); store.flush(flushToken); - fastos::TimeStamp after(fastos::ClockSystem::now()); + fastos::UTCTimeStamp after(fastos::ClockSystem::now()); // the file name of the dat file is 'magic', using the clock instead of stating the file - EXPECT_LESS_EQUAL(before.time(), store.getLastFlushTime().time()); - EXPECT_GREATER_EQUAL(after.time(), store.getLastFlushTime().time()); + EXPECT_LESS_EQUAL(before, store.getLastFlushTime()); + EXPECT_GREATER_EQUAL(after, store.getLastFlushTime()); } diff --git a/searchlib/src/tests/util/bufferwriter/bm.cpp b/searchlib/src/tests/util/bufferwriter/bm.cpp index b19a7390e9c..ac3cc3a09b1 100644 --- a/searchlib/src/tests/util/bufferwriter/bm.cpp +++ b/searchlib/src/tests/util/bufferwriter/bm.cpp @@ -11,8 +11,6 @@ LOG_SETUP("bufferwriter_bm"); using search::DrainingBufferWriter; -double getTime() { return fastos::TimeStamp(fastos::ClockSystem::now()).sec(); } - constexpr size_t million = 1000000; enum class WorkFuncDispatch @@ -33,7 +31,7 @@ callWork(size_t size, WorkFuncDispatch dispatch) foo.resize(size); std::cout << "will write " << size << " elements of size " << sizeof(T) << std::endl; - double before = getTime(); + fastos::StopWatch stopWatch; switch (dispatch) { case WorkFuncDispatch::DIRECT: work(foo, writer); @@ -50,8 +48,7 @@ callWork(size_t size, WorkFuncDispatch dispatch) default: LOG_ABORT("should not be reached"); } - double after = getTime(); - double delta = (after - before); + double delta = stopWatch.stop().elapsed(); double writeSpeed = writer.getBytesWritten() / delta; EXPECT_GREATER(writeSpeed, 1000); std::cout << "written is " << writer.getBytesWritten() << std::endl; diff --git a/searchlib/src/vespa/searchlib/common/fileheadercontext.cpp b/searchlib/src/vespa/searchlib/common/fileheadercontext.cpp index 4f29c3b7b87..5c23953b9b3 100644 --- a/searchlib/src/vespa/searchlib/common/fileheadercontext.cpp +++ b/searchlib/src/vespa/searchlib/common/fileheadercontext.cpp @@ -2,26 +2,23 @@ #include "fileheadercontext.h" #include -#include +#include + +using namespace std::chrono; namespace search::common { using vespalib::GenericHeader; -FileHeaderContext::FileHeaderContext() -{ -} +FileHeaderContext::FileHeaderContext() = default; -FileHeaderContext::~FileHeaderContext() -{ -} +FileHeaderContext::~FileHeaderContext() = default; void FileHeaderContext::addCreateAndFreezeTime(GenericHeader &header) { typedef GenericHeader::Tag Tag; - fastos::TimeStamp ts(fastos::ClockSystem::now()); - header.putTag(Tag("createTime", ts.us())); + header.putTag(Tag("createTime", duration_cast(system_clock::now().time_since_epoch()).count())); header.putTag(Tag("freezeTime", 0)); } @@ -31,8 +28,7 @@ FileHeaderContext::setFreezeTime(GenericHeader &header) typedef GenericHeader::Tag Tag; if (header.hasTag("freezeTime") && header.getTag("freezeTime").getType() == Tag::TYPE_INTEGER) { - fastos::TimeStamp ts(fastos::ClockSystem::now()); - header.putTag(Tag("freezeTime", ts.us())); + header.putTag(Tag("freezeTime", duration_cast(system_clock::now().time_since_epoch()).count())); } } diff --git a/searchlib/src/vespa/searchlib/docstore/documentstore.cpp b/searchlib/src/vespa/searchlib/docstore/documentstore.cpp index e7efe3f366b..a180a303780 100644 --- a/searchlib/src/vespa/searchlib/docstore/documentstore.cpp +++ b/searchlib/src/vespa/searchlib/docstore/documentstore.cpp @@ -274,7 +274,7 @@ DocumentStore::tentativeLastSyncToken() const return _backingStore.tentativeLastSyncToken(); } -fastos::TimeStamp +fastos::UTCTimeStamp DocumentStore::getLastFlushTime() const { return _backingStore.getLastFlushTime(); diff --git a/searchlib/src/vespa/searchlib/docstore/documentstore.h b/searchlib/src/vespa/searchlib/docstore/documentstore.h index a2b855deaf6..8bdba21f8d5 100644 --- a/searchlib/src/vespa/searchlib/docstore/documentstore.h +++ b/searchlib/src/vespa/searchlib/docstore/documentstore.h @@ -75,7 +75,7 @@ public: void compact(uint64_t syncToken) override; uint64_t lastSyncToken() const override; uint64_t tentativeLastSyncToken() const override; - fastos::TimeStamp getLastFlushTime() const override; + fastos::UTCTimeStamp getLastFlushTime() const override; uint32_t getDocIdLimit() const override { return _backingStore.getDocIdLimit(); } size_t memoryUsed() const override { return _backingStore.memoryUsed(); } size_t getDiskFootprint() const override { return _backingStore.getDiskFootprint(); } diff --git a/searchlib/src/vespa/searchlib/docstore/filechunk.cpp b/searchlib/src/vespa/searchlib/docstore/filechunk.cpp index fecee481b77..94214ad7d84 100644 --- a/searchlib/src/vespa/searchlib/docstore/filechunk.cpp +++ b/searchlib/src/vespa/searchlib/docstore/filechunk.cpp @@ -293,7 +293,7 @@ FileChunk::getLastPersistedSerialNum() const return _lastPersistedSerialNum; } -fastos::TimeStamp +fastos::UTCTimeStamp FileChunk::getModificationTime() const { return _modificationTime; diff --git a/searchlib/src/vespa/searchlib/docstore/filechunk.h b/searchlib/src/vespa/searchlib/docstore/filechunk.h index 9f09d535880..2e47f010fc3 100644 --- a/searchlib/src/vespa/searchlib/docstore/filechunk.h +++ b/searchlib/src/vespa/searchlib/docstore/filechunk.h @@ -159,7 +159,7 @@ public: size_t getErasedBytes() const { return _erasedBytes; } uint64_t getLastPersistedSerialNum() const; uint32_t getDocIdLimit() const { return _docIdLimit; } - virtual fastos::TimeStamp getModificationTime() const; + virtual fastos::UTCTimeStamp getModificationTime() const; virtual bool frozen() const { return true; } const vespalib::string & getName() const { return _name; } void compact(const IGetLid & iGetLid); @@ -239,17 +239,17 @@ protected: static void writeDocIdLimit(vespalib::GenericHeader &header, uint32_t docIdLimit); typedef vespalib::Array ChunkInfoVector; - const IBucketizer * _bucketizer; - size_t _addedBytes; - TuneFileSummary _tune; - vespalib::string _dataFileName; - vespalib::string _idxFileName; - ChunkInfoVector _chunkInfo; - uint32_t _dataHeaderLen; - uint32_t _idxHeaderLen; - uint64_t _lastPersistedSerialNum; - uint32_t _docIdLimit; // Limit when the file was created. Stored in idx file header. - fastos::TimeStamp _modificationTime; + const IBucketizer * _bucketizer; + size_t _addedBytes; + TuneFileSummary _tune; + vespalib::string _dataFileName; + vespalib::string _idxFileName; + ChunkInfoVector _chunkInfo; + uint32_t _dataHeaderLen; + uint32_t _idxHeaderLen; + uint64_t _lastPersistedSerialNum; + uint32_t _docIdLimit; // Limit when the file was created. Stored in idx file header. + fastos::UTCTimeStamp _modificationTime; }; } // namespace search diff --git a/searchlib/src/vespa/searchlib/docstore/idatastore.h b/searchlib/src/vespa/searchlib/docstore/idatastore.h index e2d89fc160c..f0545ce1d9b 100644 --- a/searchlib/src/vespa/searchlib/docstore/idatastore.h +++ b/searchlib/src/vespa/searchlib/docstore/idatastore.h @@ -145,7 +145,7 @@ public: * or 0 if no flush has been performed yet. * @return Time of last flush. **/ - virtual fastos::TimeStamp getLastFlushTime() const = 0; + virtual fastos::UTCTimeStamp getLastFlushTime() const = 0; /** * Visit all data found in data store. diff --git a/searchlib/src/vespa/searchlib/docstore/idocumentstore.h b/searchlib/src/vespa/searchlib/docstore/idocumentstore.h index cceae5d39ee..fc91d95b5a6 100644 --- a/searchlib/src/vespa/searchlib/docstore/idocumentstore.h +++ b/searchlib/src/vespa/searchlib/docstore/idocumentstore.h @@ -130,7 +130,7 @@ public: * or 0 if no flush has been performed yet. * @return Time of last flush. **/ - virtual fastos::TimeStamp getLastFlushTime() const = 0; + virtual fastos::UTCTimeStamp getLastFlushTime() const = 0; /** * Get the number of entries (including removed IDs diff --git a/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp b/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp index e96628bdf4f..19b945ddd9c 100644 --- a/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp +++ b/searchlib/src/vespa/searchlib/docstore/logdatastore.cpp @@ -247,20 +247,21 @@ LogDataStore::tentativeLastSyncToken() const return getActive(guard).getSerialNum(); } -fastos::TimeStamp +fastos::UTCTimeStamp LogDataStore::getLastFlushTime() const { if (lastSyncToken() == 0) { - return fastos::TimeStamp(); + return fastos::UTCTimeStamp::ZERO; } LockGuard guard(_updateLock); - fastos::TimeStamp timeStamp(getActive(guard).getModificationTime()); - if (timeStamp == 0) { + fastos::UTCTimeStamp timeStamp(getActive(guard).getModificationTime()); + if (timeStamp == fastos::UTCTimeStamp::ZERO) { const FileChunk * prev = getPrevActive(guard); if (prev != nullptr) { timeStamp = prev->getModificationTime(); } } + // TODO Needs to change when we decide on Flush time reference return timeStamp; } @@ -655,7 +656,7 @@ LogDataStore::createWritableFile(FileId fileId, SerialNum serialNum, NameId name FileChunk::UP LogDataStore::createWritableFile(FileId fileId, SerialNum serialNum) { - return createWritableFile(fileId, serialNum, NameId(fastos::ClockSystem::now())); + return createWritableFile(fileId, serialNum, NameId(fastos::ClockSystem::now().timeSinceEpoch())); } namespace { diff --git a/searchlib/src/vespa/searchlib/docstore/logdatastore.h b/searchlib/src/vespa/searchlib/docstore/logdatastore.h index 4ab747d115d..9ea1403fbe6 100644 --- a/searchlib/src/vespa/searchlib/docstore/logdatastore.h +++ b/searchlib/src/vespa/searchlib/docstore/logdatastore.h @@ -102,7 +102,7 @@ public: size_t memoryMeta() const override; uint64_t lastSyncToken() const override; uint64_t tentativeLastSyncToken() const override; - fastos::TimeStamp getLastFlushTime() const override; + fastos::UTCTimeStamp getLastFlushTime() const override; size_t getDiskFootprint() const override; size_t getDiskHeaderFootprint() const override; size_t getDiskBloat() const override; diff --git a/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.cpp b/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.cpp index 50517cf09e2..d0fada0f498 100644 --- a/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.cpp +++ b/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.cpp @@ -524,7 +524,7 @@ WriteableFileChunk::fileWriter(const uint32_t firstChunkId) } } -fastos::TimeStamp +fastos::UTCTimeStamp WriteableFileChunk::getModificationTime() const { LockGuard guard(_lock); @@ -832,7 +832,7 @@ WriteableFileChunk::flushPendingChunks(uint64_t serialNum) { if (frozen()) return; uint64_t datFileLen = _dataFile.getSize(); - fastos::TimeStamp timeStamp(fastos::ClockSystem::now()); + fastos::UTCTimeStamp timeStamp(fastos::ClockSystem::now()); if (needFlushPendingChunks(serialNum, datFileLen)) { timeStamp = unconditionallyFlushPendingChunks(flushGuard, serialNum, datFileLen); } @@ -840,7 +840,7 @@ WriteableFileChunk::flushPendingChunks(uint64_t serialNum) { _modificationTime = std::max(timeStamp, _modificationTime); } -fastos::TimeStamp +fastos::UTCTimeStamp WriteableFileChunk::unconditionallyFlushPendingChunks(const vespalib::LockGuard &flushGuard, uint64_t serialNum, uint64_t datFileLen) { (void) flushGuard; @@ -870,7 +870,7 @@ WriteableFileChunk::unconditionallyFlushPendingChunks(const vespalib::LockGuard os.write(os2.c_str(), os2.size()); } } - fastos::TimeStamp timeStamp(fastos::ClockSystem::now()); + fastos::UTCTimeStamp timeStamp(fastos::ClockSystem::now()); auto idxFile = openIdx(); idxFile->SetPosition(idxFile->GetSize()); ssize_t wlen = idxFile->Write2(os.c_str(), os.size()); diff --git a/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.h b/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.h index 2c300bc9035..927ce524850 100644 --- a/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.h +++ b/searchlib/src/vespa/searchlib/docstore/writeablefilechunk.h @@ -57,7 +57,7 @@ public: uint64_t getSerialNum() const { return _serialNum; } void setSerialNum(uint64_t serialNum) { _serialNum = std::max(_serialNum, serialNum); } - fastos::TimeStamp getModificationTime() const override; + fastos::UTCTimeStamp getModificationTime() const override; void freeze(); size_t getDiskFootprint() const override; size_t getMemoryFootprint() const override; @@ -90,7 +90,7 @@ private: void writeDataHeader(const common::FileHeaderContext &fileHeaderContext); bool needFlushPendingChunks(uint64_t serialNum, uint64_t datFileLen); bool needFlushPendingChunks(const vespalib::MonitorGuard & guard, uint64_t serialNum, uint64_t datFileLen); - fastos::TimeStamp unconditionallyFlushPendingChunks(const vespalib::LockGuard & flushGuard, uint64_t serialNum, uint64_t datFileLen); + fastos::UTCTimeStamp unconditionallyFlushPendingChunks(const vespalib::LockGuard & flushGuard, uint64_t serialNum, uint64_t datFileLen); static void insertChunks(ProcessedChunkMap & orderedChunks, ProcessedChunkQ & newChunks, const uint32_t nextChunkId); static ProcessedChunkQ fetchNextChain(ProcessedChunkMap & orderedChunks, const uint32_t firstChunkId); ChunkMeta computeChunkMeta(const vespalib::LockGuard & guard, diff --git a/searchlib/src/vespa/searchlib/util/filekit.cpp b/searchlib/src/vespa/searchlib/util/filekit.cpp index 7fc4ca8e7bb..9230b66867c 100644 --- a/searchlib/src/vespa/searchlib/util/filekit.cpp +++ b/searchlib/src/vespa/searchlib/util/filekit.cpp @@ -90,14 +90,14 @@ FileKit::removeStamp(const vespalib::string &name) } -fastos::TimeStamp +fastos::UTCTimeStamp FileKit::getModificationTime(const vespalib::string &name) { FastOS_StatInfo statInfo; if (FastOS_File::Stat(name.c_str(), &statInfo)) { - return fastos::TimeStamp(statInfo._modifiedTimeNS); + return fastos::UTCTimeStamp(statInfo._modifiedTimeNS); } - return fastos::TimeStamp(); + return fastos::UTCTimeStamp(); } diff --git a/searchlib/src/vespa/searchlib/util/filekit.h b/searchlib/src/vespa/searchlib/util/filekit.h index 929412ee6d8..fc9d8cc84be 100644 --- a/searchlib/src/vespa/searchlib/util/filekit.h +++ b/searchlib/src/vespa/searchlib/util/filekit.h @@ -20,7 +20,7 @@ public: * Returns the modification time of the given file/directory, * or time stamp 0 if stating of file/directory fails. **/ - static fastos::TimeStamp getModificationTime(const vespalib::string &name); + static fastos::UTCTimeStamp getModificationTime(const vespalib::string &name); }; } -- cgit v1.2.3