diff options
Diffstat (limited to 'persistence')
7 files changed, 65 insertions, 71 deletions
diff --git a/persistence/src/tests/dummyimpl/dummypersistence_test.cpp b/persistence/src/tests/dummyimpl/dummypersistence_test.cpp index 2c245f377e1..3fa1a8a9b8d 100644 --- a/persistence/src/tests/dummyimpl/dummypersistence_test.cpp +++ b/persistence/src/tests/dummyimpl/dummypersistence_test.cpp @@ -19,14 +19,14 @@ namespace { struct Fixture { BucketContent content; - void insert(DocumentId id, Timestamp timestamp, DocumentMetaFlags meta_flags) { + void insert(DocumentId id, Timestamp timestamp, DocumentMetaEnum meta_flags) { content.insert(DocEntry::create(timestamp, meta_flags, id)); } Fixture() { - insert(DocumentId("id:ns:type::test:3"), Timestamp(3), DocumentMetaFlags::NONE); - insert(DocumentId("id:ns:type::test:1"), Timestamp(1), DocumentMetaFlags::NONE); - insert(DocumentId("id:ns:type::test:2"), Timestamp(2), DocumentMetaFlags::NONE); + insert(DocumentId("id:ns:type::test:3"), Timestamp(3), DocumentMetaEnum::NONE); + insert(DocumentId("id:ns:type::test:1"), Timestamp(1), DocumentMetaEnum::NONE); + insert(DocumentId("id:ns:type::test:2"), Timestamp(2), DocumentMetaEnum::NONE); } }; @@ -63,13 +63,13 @@ TEST_F("require that BucketContent can provide bucket info", Fixture) { uint32_t lastChecksum = 0; EXPECT_NOT_EQUAL(lastChecksum, f.content.getBucketInfo().getChecksum()); lastChecksum = f.content.getBucketInfo().getChecksum(); - f.insert(DocumentId("id:ns:type::test:3"), Timestamp(4), DocumentMetaFlags::NONE); + f.insert(DocumentId("id:ns:type::test:3"), Timestamp(4), DocumentMetaEnum::NONE); EXPECT_NOT_EQUAL(lastChecksum, f.content.getBucketInfo().getChecksum()); lastChecksum = f.content.getBucketInfo().getChecksum(); - f.insert(DocumentId("id:ns:type::test:2"), Timestamp(5), DocumentMetaFlags::REMOVE_ENTRY); + f.insert(DocumentId("id:ns:type::test:2"), Timestamp(5), DocumentMetaEnum::REMOVE_ENTRY); EXPECT_NOT_EQUAL(lastChecksum, f.content.getBucketInfo().getChecksum()); - f.insert(DocumentId("id:ns:type::test:1"), Timestamp(6), DocumentMetaFlags::REMOVE_ENTRY); - f.insert(DocumentId("id:ns:type::test:3"), Timestamp(7), DocumentMetaFlags::REMOVE_ENTRY); + f.insert(DocumentId("id:ns:type::test:1"), Timestamp(6), DocumentMetaEnum::REMOVE_ENTRY); + f.insert(DocumentId("id:ns:type::test:3"), Timestamp(7), DocumentMetaEnum::REMOVE_ENTRY); EXPECT_EQUAL(0u, f.content.getBucketInfo().getChecksum()); } diff --git a/persistence/src/tests/spi/clusterstatetest.cpp b/persistence/src/tests/spi/clusterstatetest.cpp index c6c523c202d..2186d408791 100644 --- a/persistence/src/tests/spi/clusterstatetest.cpp +++ b/persistence/src/tests/spi/clusterstatetest.cpp @@ -267,7 +267,7 @@ TEST(DocEntryTest, test_basics) { } TEST(DocEntryTest, test_meta_only) { - DocEntry::UP e = DocEntry::create(Timestamp(9), DocumentMetaFlags::NONE); + DocEntry::UP e = DocEntry::create(Timestamp(9), DocumentMetaEnum::NONE); EXPECT_EQ(9, e->getTimestamp()); EXPECT_FALSE(e->isRemove()); EXPECT_EQ(24, e->getSize()); @@ -276,13 +276,13 @@ TEST(DocEntryTest, test_meta_only) { EXPECT_EQ("", e->getDocumentType()); EXPECT_EQ(GlobalId(), e->getGid()); - DocEntry::UP r = DocEntry::create(Timestamp(666), DocumentMetaFlags::REMOVE_ENTRY); + DocEntry::UP r = DocEntry::create(Timestamp(666), DocumentMetaEnum::REMOVE_ENTRY); EXPECT_EQ(666, r->getTimestamp()); EXPECT_TRUE(r->isRemove()); } TEST(DocEntryTest, test_docid_only) { - DocEntry::UP e = DocEntry::create(Timestamp(9), DocumentMetaFlags::NONE, DocumentId("id:test:test::1")); + DocEntry::UP e = DocEntry::create(Timestamp(9), DocumentMetaEnum::NONE, DocumentId("id:test:test::1")); EXPECT_EQ(9, e->getTimestamp()); EXPECT_FALSE(e->isRemove()); EXPECT_EQ(16, e->getSize()); @@ -293,7 +293,7 @@ TEST(DocEntryTest, test_docid_only) { } TEST(DocEntryTest, test_doctype_and_gid) { - DocEntry::UP e = DocEntry::create(Timestamp(9), DocumentMetaFlags::NONE, "doc_type", GlobalId::parse("gid(0xc4cef118f9f9649222750be2)")); + DocEntry::UP e = DocEntry::create(Timestamp(9), DocumentMetaEnum::NONE, "doc_type", GlobalId::parse("gid(0xc4cef118f9f9649222750be2)")); EXPECT_EQ(9, e->getTimestamp()); EXPECT_FALSE(e->isRemove()); EXPECT_EQ(20, e->getSize()); diff --git a/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp b/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp index 84494c312b6..6afdd142457 100644 --- a/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp +++ b/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp @@ -31,11 +31,12 @@ using storage::spi::test::cloneDocEntry; namespace storage::spi { using PersistenceProviderUP = std::unique_ptr<PersistenceProvider>; +using DocEntryList = std::vector<DocEntry::UP>; namespace { -std::unique_ptr<PersistenceProvider> getSpi(ConformanceTest::PersistenceFactory &factory, - const document::TestDocMan &testDocMan) { +std::unique_ptr<PersistenceProvider> +getSpi(ConformanceTest::PersistenceFactory &factory, const document::TestDocMan &testDocMan) { PersistenceProviderUP result(factory.getPersistenceImplementation( testDocMan.getTypeRepoSP(), *testDocMan.getTypeConfig())); EXPECT_TRUE(!result->initialize().hasError()); @@ -125,7 +126,7 @@ struct DocAndTimestamp */ struct Chunk { - std::vector<DocEntry::UP> _entries; + DocEntryList _entries; }; struct DocEntryIndirectTimestampComparator @@ -168,7 +169,7 @@ doIterate(PersistenceProvider& spi, } size_t -getRemoveEntryCount(const std::vector<spi::DocEntry::UP>& entries) +getRemoveEntryCount(const DocEntryList& entries) { size_t ret = 0; for (size_t i = 0; i < entries.size(); ++i) { @@ -179,10 +180,10 @@ getRemoveEntryCount(const std::vector<spi::DocEntry::UP>& entries) return ret; } -std::vector<DocEntry::UP> +DocEntryList getEntriesFromChunks(const std::vector<Chunk>& chunks) { - std::vector<spi::DocEntry::UP> ret; + DocEntryList ret; for (size_t chunk = 0; chunk < chunks.size(); ++chunk) { for (size_t i = 0; i < chunks[chunk]._entries.size(); ++i) { ret.push_back(cloneDocEntry(*chunks[chunk]._entries[i])); @@ -195,12 +196,12 @@ getEntriesFromChunks(const std::vector<Chunk>& chunks) } -std::vector<DocEntry::UP> +DocEntryList iterateBucket(PersistenceProvider& spi, const Bucket& bucket, IncludedVersions versions) { - std::vector<DocEntry::UP> ret; + DocEntryList ret; DocumentSelection docSel(""); Selection sel(docSel); @@ -219,7 +220,7 @@ iterateBucket(PersistenceProvider& spi, spi.iterate(iter.getIteratorId(), std::numeric_limits<int64_t>().max(), context); if (result.getErrorCode() != Result::ErrorType::NONE) { - return std::vector<DocEntry::UP>(); + return DocEntryList(); } auto list = result.steal_entries(); std::move(list.begin(), list.end(), std::back_inserter(ret)); @@ -240,7 +241,7 @@ verifyDocs(const std::vector<DocAndTimestamp>& wanted, const std::vector<Chunk>& chunks, const std::set<string>& removes = std::set<string>()) { - std::vector<DocEntry::UP> retrieved = getEntriesFromChunks(chunks); + DocEntryList retrieved = getEntriesFromChunks(chunks); size_t removeCount = getRemoveEntryCount(retrieved); // Ensure that we've got the correct number of puts and removes EXPECT_EQ(removes.size(), removeCount); @@ -696,8 +697,7 @@ TEST_F(ConformanceTest, testPutDuplicate) EXPECT_EQ(1, (int)info.getDocumentCount()); EXPECT_EQ(checksum, info.getChecksum()); } - std::vector<DocEntry::UP> entries( - iterateBucket(*spi, bucket, ALL_VERSIONS)); + DocEntryList entries = iterateBucket(*spi, bucket, ALL_VERSIONS); EXPECT_EQ(size_t(1), entries.size()); } @@ -721,8 +721,7 @@ TEST_F(ConformanceTest, testRemove) EXPECT_EQ(1, (int)info.getDocumentCount()); EXPECT_TRUE(info.getChecksum() != 0); - std::vector<DocEntry::UP> entries( - iterateBucket(*spi, bucket, NEWEST_DOCUMENT_ONLY)); + DocEntryList entries = iterateBucket(*spi, bucket, NEWEST_DOCUMENT_ONLY); EXPECT_EQ(size_t(1), entries.size()); } @@ -740,15 +739,11 @@ TEST_F(ConformanceTest, testRemove) EXPECT_EQ(true, result2.wasFound()); } { - std::vector<DocEntry::UP> entries(iterateBucket(*spi, - bucket, - NEWEST_DOCUMENT_ONLY)); + DocEntryList entries = iterateBucket(*spi, bucket,NEWEST_DOCUMENT_ONLY); EXPECT_EQ(size_t(0), entries.size()); } { - std::vector<DocEntry::UP> entries(iterateBucket(*spi, - bucket, - NEWEST_DOCUMENT_OR_REMOVE)); + DocEntryList entries = iterateBucket(*spi, bucket,NEWEST_DOCUMENT_OR_REMOVE); EXPECT_EQ(size_t(1), entries.size()); } @@ -861,8 +856,7 @@ TEST_F(ConformanceTest, testRemoveMerge) // Remove entry should exist afterwards { - std::vector<DocEntry::UP> entries(iterateBucket( - *spi, bucket, ALL_VERSIONS)); + DocEntryList entries = iterateBucket(*spi, bucket, ALL_VERSIONS); EXPECT_EQ(size_t(2), entries.size()); // Timestamp-sorted by iterateBucket EXPECT_EQ(removeId, *entries.back()->getDocumentId()); @@ -888,7 +882,7 @@ TEST_F(ConformanceTest, testRemoveMerge) } // Must have new remove. We don't check for the presence of the old remove. { - std::vector<DocEntry::UP> entries(iterateBucket(*spi, bucket, ALL_VERSIONS)); + DocEntryList entries = iterateBucket(*spi, bucket, ALL_VERSIONS); EXPECT_TRUE(entries.size() >= 2); EXPECT_EQ(removeId, *entries.back()->getDocumentId()); EXPECT_EQ(Timestamp(11), entries.back()->getTimestamp()); @@ -914,7 +908,7 @@ TEST_F(ConformanceTest, testRemoveMerge) } // Must have newest remove. We don't check for the presence of the old remove. { - std::vector<DocEntry::UP> entries(iterateBucket(*spi, bucket, ALL_VERSIONS)); + DocEntryList entries = iterateBucket(*spi, bucket, ALL_VERSIONS); EXPECT_TRUE(entries.size() >= 2); EXPECT_EQ(removeId, *entries.back()->getDocumentId()); EXPECT_EQ(Timestamp(11), entries.back()->getTimestamp()); @@ -1350,7 +1344,7 @@ TEST_F(ConformanceTest, testIterateRemoves) CreateIteratorResult iter(createIterator(*spi, b, sel, NEWEST_DOCUMENT_OR_REMOVE)); std::vector<Chunk> chunks = doIterate(*spi, iter.getIteratorId(), 4_Ki); - std::vector<DocEntry::UP> entries = getEntriesFromChunks(chunks); + DocEntryList entries = getEntriesFromChunks(chunks); EXPECT_EQ(docs.size(), entries.size()); verifyDocs(nonRemovedDocs, chunks, removedDocs); diff --git a/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp b/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp index 30d5061d37e..d947ca51f49 100644 --- a/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp +++ b/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp @@ -493,7 +493,7 @@ DummyPersistence::removeAsync(const Bucket& b, std::vector<TimeStampAndDocumentI } DocEntry::SP entry((*bc)->getEntry(id)); numRemoves += (entry.get() && !entry->isRemove()) ? 1 : 0; - auto remEntry = DocEntry::create(t, DocumentMetaFlags::REMOVE_ENTRY, id); + auto remEntry = DocEntry::create(t, DocumentMetaEnum::REMOVE_ENTRY, id); if ((*bc)->hasTimestamp(t)) { (*bc)->eraseEntry(t); diff --git a/persistence/src/vespa/persistence/spi/docentry.cpp b/persistence/src/vespa/persistence/spi/docentry.cpp index 43a7e519b53..f0329e8cc5e 100644 --- a/persistence/src/vespa/persistence/spi/docentry.cpp +++ b/persistence/src/vespa/persistence/spi/docentry.cpp @@ -11,7 +11,7 @@ namespace { class DocEntryWithId final : public DocEntry { public: - DocEntryWithId(Timestamp t, DocumentMetaFlags metaFlags, const DocumentId &docId); + DocEntryWithId(Timestamp t, DocumentMetaEnum metaEnum, const DocumentId &docId); ~DocEntryWithId(); vespalib::string toString() const override; const DocumentId* getDocumentId() const override { return & _documentId; } @@ -23,7 +23,7 @@ private: class DocEntryWithTypeAndGid final : public DocEntry { public: - DocEntryWithTypeAndGid(Timestamp t, DocumentMetaFlags metaFlags, vespalib::stringref docType, GlobalId gid); + DocEntryWithTypeAndGid(Timestamp t, DocumentMetaEnum metaEnum, vespalib::stringref docType, GlobalId gid); ~DocEntryWithTypeAndGid(); vespalib::string toString() const override; vespalib::stringref getDocumentType() const override { return _type; } @@ -56,22 +56,22 @@ private: }; DocEntryWithDoc::DocEntryWithDoc(Timestamp t, DocumentUP doc) - : DocEntry(t, DocumentMetaFlags::NONE, doc->serialize().size()), + : DocEntry(t, DocumentMetaEnum::NONE, doc->serialize().size()), _document(std::move(doc)) { } DocEntryWithDoc::DocEntryWithDoc(Timestamp t, DocumentUP doc, size_t serializedDocumentSize) - : DocEntry(t, DocumentMetaFlags::NONE, serializedDocumentSize), + : DocEntry(t, DocumentMetaEnum::NONE, serializedDocumentSize), _document(std::move(doc)) { } -DocEntryWithId::DocEntryWithId(Timestamp t, DocumentMetaFlags metaFlags, const DocumentId& docId) - : DocEntry(t, metaFlags, docId.getSerializedSize()), +DocEntryWithId::DocEntryWithId(Timestamp t, DocumentMetaEnum metaEnum, const DocumentId& docId) + : DocEntry(t, metaEnum, docId.getSerializedSize()), _documentId(docId) { } -DocEntryWithTypeAndGid::DocEntryWithTypeAndGid(Timestamp t, DocumentMetaFlags metaFlags, vespalib::stringref docType, GlobalId gid) - : DocEntry(t, metaFlags, docType.size() + sizeof(gid)), +DocEntryWithTypeAndGid::DocEntryWithTypeAndGid(Timestamp t, DocumentMetaEnum metaEnum, vespalib::stringref docType, GlobalId gid) + : DocEntry(t, metaEnum, docType.size() + sizeof(gid)), _type(docType), _gid(gid) { } @@ -84,7 +84,7 @@ vespalib::string DocEntryWithId::toString() const { std::ostringstream out; - out << "DocEntry(" << getTimestamp() << ", " << int(getFlags()) << ", " << _documentId << ")"; + out << "DocEntry(" << getTimestamp() << ", " << int(getMetaEnum()) << ", " << _documentId << ")"; return out.str(); } @@ -92,7 +92,7 @@ vespalib::string DocEntryWithTypeAndGid::toString() const { std::ostringstream out; - out << "DocEntry(" << getTimestamp() << ", " << int(getFlags()) << ", " << _type << ", " << _gid << ")"; + out << "DocEntry(" << getTimestamp() << ", " << int(getMetaEnum()) << ", " << _type << ", " << _gid << ")"; return out.str(); } @@ -100,7 +100,7 @@ vespalib::string DocEntryWithDoc::toString() const { std::ostringstream out; - out << "DocEntry(" << getTimestamp() << ", " << int(getFlags()) << ", "; + out << "DocEntry(" << getTimestamp() << ", " << int(getMetaEnum()) << ", "; if (_document.get()) { out << "Doc(" << _document->getId() << ")"; } else { @@ -113,16 +113,16 @@ DocEntryWithDoc::toString() const } DocEntry::UP -DocEntry::create(Timestamp t, DocumentMetaFlags metaFlags) { - return UP(new DocEntry(t, metaFlags)); +DocEntry::create(Timestamp t, DocumentMetaEnum metaEnum) { + return UP(new DocEntry(t, metaEnum)); } DocEntry::UP -DocEntry::create(Timestamp t, DocumentMetaFlags metaFlags, const DocumentId &docId) { - return std::make_unique<DocEntryWithId>(t, metaFlags, docId); +DocEntry::create(Timestamp t, DocumentMetaEnum metaEnum, const DocumentId &docId) { + return std::make_unique<DocEntryWithId>(t, metaEnum, docId); } DocEntry::UP -DocEntry::create(Timestamp t, DocumentMetaFlags metaFlags, vespalib::stringref docType, GlobalId gid) { - return std::make_unique<DocEntryWithTypeAndGid>(t, metaFlags, docType, gid); +DocEntry::create(Timestamp t, DocumentMetaEnum metaEnum, vespalib::stringref docType, GlobalId gid) { + return std::make_unique<DocEntryWithTypeAndGid>(t, metaEnum, docType, gid); } DocEntry::UP DocEntry::create(Timestamp t, DocumentUP doc) { @@ -144,7 +144,7 @@ vespalib::string DocEntry::toString() const { std::ostringstream out; - out << "DocEntry(" << _timestamp << ", " << int(_metaFlags) << ", metadata only)"; + out << "DocEntry(" << _timestamp << ", " << int(_metaEnum) << ", metadata only)"; return out.str(); } diff --git a/persistence/src/vespa/persistence/spi/docentry.h b/persistence/src/vespa/persistence/spi/docentry.h index d263527dff6..9ad06b41e90 100644 --- a/persistence/src/vespa/persistence/spi/docentry.h +++ b/persistence/src/vespa/persistence/spi/docentry.h @@ -18,7 +18,7 @@ namespace storage::spi { -enum class DocumentMetaFlags { +enum class DocumentMetaEnum { NONE = 0x0, REMOVE_ENTRY = 0x1 }; @@ -34,9 +34,9 @@ public: DocEntry(DocEntry &&) = delete; DocEntry & operator=(DocEntry &&) = delete; virtual ~DocEntry(); - bool isRemove() const { return (_metaFlags == DocumentMetaFlags::REMOVE_ENTRY); } + bool isRemove() const { return (_metaEnum == DocumentMetaEnum::REMOVE_ENTRY); } Timestamp getTimestamp() const { return _timestamp; } - DocumentMetaFlags getFlags() const { return _metaFlags; } + DocumentMetaEnum getMetaEnum() const { return _metaEnum; } /** * If entry contains a document, returns its serialized size. * If entry contains a document id, returns the serialized size of @@ -51,22 +51,22 @@ public: virtual vespalib::stringref getDocumentType() const { return vespalib::stringref(); } virtual GlobalId getGid() const { return GlobalId(); } virtual DocumentUP releaseDocument(); - static UP create(Timestamp t, DocumentMetaFlags metaFlags); - static UP create(Timestamp t, DocumentMetaFlags metaFlags, const DocumentId &docId); - static UP create(Timestamp t, DocumentMetaFlags metaFlags, vespalib::stringref docType, GlobalId gid); + static UP create(Timestamp t, DocumentMetaEnum metaEnum); + static UP create(Timestamp t, DocumentMetaEnum metaEnum, const DocumentId &docId); + static UP create(Timestamp t, DocumentMetaEnum metaEnum, vespalib::stringref docType, GlobalId gid); static UP create(Timestamp t, DocumentUP doc); static UP create(Timestamp t, DocumentUP doc, SizeType serializedDocumentSize); protected: - DocEntry(Timestamp t, DocumentMetaFlags metaFlags, SizeType size) + DocEntry(Timestamp t, DocumentMetaEnum metaEnum, SizeType size) : _timestamp(t), - _metaFlags(metaFlags), + _metaEnum(metaEnum), _size(size) {} private: - DocEntry(Timestamp t, DocumentMetaFlags metaFlags) : DocEntry(t, metaFlags, sizeof(DocEntry)) { } - Timestamp _timestamp; - DocumentMetaFlags _metaFlags; - SizeType _size; + DocEntry(Timestamp t, DocumentMetaEnum metaEnum) : DocEntry(t, metaEnum, sizeof(DocEntry)) { } + Timestamp _timestamp; + DocumentMetaEnum _metaEnum; + SizeType _size; }; std::ostream & operator << (std::ostream & os, const DocEntry & r); diff --git a/persistence/src/vespa/persistence/spi/test.cpp b/persistence/src/vespa/persistence/spi/test.cpp index f6ad2dd3b49..58a8ce3fe52 100644 --- a/persistence/src/vespa/persistence/spi/test.cpp +++ b/persistence/src/vespa/persistence/spi/test.cpp @@ -23,9 +23,9 @@ cloneDocEntry(const DocEntry & e) { if (e.getDocument()) { ret = DocEntry::create(e.getTimestamp(), std::make_unique<Document>(*e.getDocument()), e.getSize()); } else if (e.getDocumentId()) { - ret = DocEntry::create(e.getTimestamp(), e.getFlags(), *e.getDocumentId()); + ret = DocEntry::create(e.getTimestamp(), e.getMetaEnum(), *e.getDocumentId()); } else { - ret = DocEntry::create(e.getTimestamp(), e.getFlags()); + ret = DocEntry::create(e.getTimestamp(), e.getMetaEnum()); } return ret; } @@ -33,7 +33,7 @@ cloneDocEntry(const DocEntry & e) { bool equal(const DocEntry & a, const DocEntry & b) { if (a.getTimestamp() != b.getTimestamp()) return false; - if (a.getFlags() != b.getFlags()) return false; + if (a.getMetaEnum() != b.getMetaEnum()) return false; if (a.getSize() != b.getSize()) return false; if (a.getDocument()) { |