From 5cf98a738d70861f71bcedc9a1ee251d30921937 Mon Sep 17 00:00:00 2001 From: Tor Brede Vekterli Date: Tue, 7 Nov 2023 12:11:57 +0000 Subject: Expose document type name from `IPersistenceHandler` interface --- .../persistence_handler_map_test.cpp | 1 + .../proton/persistenceengine/persistenceengine_test.cpp | 14 ++++++++++---- .../proton/persistenceengine/ipersistencehandler.h | 6 +++++- searchcore/src/vespa/searchcore/proton/server/documentdb.h | 2 +- .../searchcore/proton/server/persistencehandlerproxy.cpp | 6 ++++++ .../searchcore/proton/server/persistencehandlerproxy.h | 2 ++ 6 files changed, 25 insertions(+), 6 deletions(-) diff --git a/searchcore/src/tests/proton/persistenceengine/persistence_handler_map/persistence_handler_map_test.cpp b/searchcore/src/tests/proton/persistenceengine/persistence_handler_map/persistence_handler_map_test.cpp index 13e0c4380a7..528067aeeb1 100644 --- a/searchcore/src/tests/proton/persistenceengine/persistence_handler_map/persistence_handler_map_test.cpp +++ b/searchcore/src/tests/proton/persistenceengine/persistence_handler_map/persistence_handler_map_test.cpp @@ -32,6 +32,7 @@ struct DummyPersistenceHandler : public IPersistenceHandler { RetrieversSP getDocumentRetrievers(storage::spi::ReadConsistency) override { return RetrieversSP(); } void handleListActiveBuckets(IBucketIdListResultHandler &) override {} void handlePopulateActiveBuckets(document::BucketId::List, IGenericResultHandler &) override {} + const DocTypeName & doc_type_name() const noexcept override { abort(); } }; BucketSpace space_1(1); diff --git a/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp b/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp index 787b0c365e4..21ac6893356 100644 --- a/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp +++ b/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp @@ -161,8 +161,9 @@ struct MyHandler : public IPersistenceHandler, IBucketFreezer { const Document *document; std::multiset frozen; std::multiset was_frozen; + DocTypeName _doc_type_name; - MyHandler() + MyHandler(const DocTypeName &type_name) : initialized(false), lastBucket(), lastTimestamp(), @@ -180,7 +181,8 @@ struct MyHandler : public IPersistenceHandler, IBucketFreezer { _createBucketResult(), document(nullptr), frozen(), - was_frozen() + was_frozen(), + _doc_type_name(type_name) { } @@ -287,6 +289,10 @@ struct MyHandler : public IPersistenceHandler, IBucketFreezer { resultHandler.handle(Result()); } + const DocTypeName &doc_type_name() const noexcept override { + return _doc_type_name; + } + void freezeBucket(BucketId bucket) override { frozen.insert(bucket.getId()); was_frozen.insert(bucket.getId()); @@ -311,8 +317,8 @@ struct HandlerSet { }; HandlerSet::HandlerSet() - : phandler1(std::make_shared()), - phandler2(std::make_shared()), + : phandler1(std::make_shared(DocTypeName("type1"))), + phandler2(std::make_shared(DocTypeName("type2"))), handler1(dynamic_cast(*phandler1.get())), handler2(dynamic_cast(*phandler2.get())) {} diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistencehandler.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistencehandler.h index dcc26e3b758..f9beab8ebd5 100644 --- a/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistencehandler.h +++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistencehandler.h @@ -13,6 +13,8 @@ namespace storage::spi { class ClusterState; } namespace proton { +class DocTypeName; + /** * This interface describes a sync persistence operation handler. It is implemented by * the DocumentDB and other classes, and used by the PersistenceEngine class to delegate @@ -26,7 +28,7 @@ protected: public: using UP = std::unique_ptr; using SP = std::shared_ptr; - /// Note that you can not move awaythe handlers in the vector. + // Note that you can not move away the handlers in the vector. using RetrieversSP = std::shared_ptr >; IPersistenceHandler(const IPersistenceHandler &) = delete; IPersistenceHandler & operator = (const IPersistenceHandler &) = delete; @@ -74,6 +76,8 @@ public: virtual void handleListActiveBuckets(IBucketIdListResultHandler &resultHandler) = 0; virtual void handlePopulateActiveBuckets(document::BucketId::List buckets, IGenericResultHandler &resultHandler) = 0; + + [[nodiscard]] virtual const DocTypeName &doc_type_name() const noexcept = 0; }; } // namespace proton diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.h b/searchcore/src/vespa/searchcore/proton/server/documentdb.h index 5f40437e089..3c98f79bb47 100644 --- a/searchcore/src/vespa/searchcore/proton/server/documentdb.h +++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.h @@ -383,7 +383,7 @@ public: bool getDelayedConfig() const { return _state.getDelayedConfig(); } void replayConfig(SerialNum serialNum) override; - const DocTypeName & getDocTypeName() const { return _docTypeName; } + const DocTypeName & getDocTypeName() const noexcept { return _docTypeName; } std::unique_ptr prepare_reconfig(const DocumentDBConfig& new_config_snapshot, std::optional serial_num); void reconfigure(DocumentDBConfigSP snapshot) override; int64_t getActiveGeneration() const; diff --git a/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.cpp b/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.cpp index ea401d143e1..48a47594489 100644 --- a/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.cpp @@ -145,4 +145,10 @@ PersistenceHandlerProxy::handlePopulateActiveBuckets(document::BucketId::List bu _bucketHandler.handlePopulateActiveBuckets(std::move(buckets), resultHandler); } +const DocTypeName& +PersistenceHandlerProxy::doc_type_name() const noexcept +{ + return _documentDB->getDocTypeName(); +} + } // namespace proton diff --git a/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.h b/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.h index d3e77f2414c..b812c1034f9 100644 --- a/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.h +++ b/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.h @@ -61,6 +61,8 @@ public: void handleListActiveBuckets(IBucketIdListResultHandler &resultHandler) override; void handlePopulateActiveBuckets(document::BucketId::List buckets, IGenericResultHandler &resultHandler) override; + + const DocTypeName &doc_type_name() const noexcept override; }; } // namespace proton -- cgit v1.2.3