aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-11-07 15:26:38 +0100
committerGitHub <noreply@github.com>2023-11-07 15:26:38 +0100
commit983ef4600a36b2066e76fe444001538ab11fe3b3 (patch)
tree7d10c46cbb032bfa38092761990f13541f6cb3ca /searchcore
parenta97d4cfc1aff31ef6775da3d8669a8ad0b3d527c (diff)
parent5cf98a738d70861f71bcedc9a1ee251d30921937 (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')
-rw-r--r--searchcore/src/tests/proton/persistenceengine/persistence_handler_map/persistence_handler_map_test.cpp1
-rw-r--r--searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp14
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistencehandler.h6
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdb.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.cpp6
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.h2
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