diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-11-07 15:26:38 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-07 15:26:38 +0100 |
commit | 983ef4600a36b2066e76fe444001538ab11fe3b3 (patch) | |
tree | 7d10c46cbb032bfa38092761990f13541f6cb3ca /searchcore | |
parent | a97d4cfc1aff31ef6775da3d8669a8ad0b3d527c (diff) | |
parent | 5cf98a738d70861f71bcedc9a1ee251d30921937 (diff) |
Merge pull request #29266 from vespa-engine/vekterli/expose-doc-type-name-from-persistence-handler
Expose document type name from `IPersistenceHandler` interface
Diffstat (limited to 'searchcore')
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<uint64_t> frozen; std::multiset<uint64_t> 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<MyHandler>()), - phandler2(std::make_shared<MyHandler>()), + : phandler1(std::make_shared<MyHandler>(DocTypeName("type1"))), + phandler2(std::make_shared<MyHandler>(DocTypeName("type2"))), handler1(dynamic_cast<MyHandler &>(*phandler1.get())), handler2(dynamic_cast<MyHandler &>(*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<IPersistenceHandler>; using SP = std::shared_ptr<IPersistenceHandler>; - /// 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<std::vector<IDocumentRetriever::SP> >; 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<DocumentDBReconfig> prepare_reconfig(const DocumentDBConfig& new_config_snapshot, std::optional<SerialNum> 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 |