summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-05-09 19:06:54 +0200
committerGitHub <noreply@github.com>2023-05-09 19:06:54 +0200
commitd141f17128adb53ea55d03aa78ac19cb9e90d4eb (patch)
tree5f47ed6a0658375eea7b46e16cf641ebab7f35a4 /searchcore
parent96f6dc86ab846429e41eec39170c6588ac62f1cb (diff)
parentb32f28cb625afed9f511a89b1ebfdcbb7e782dad (diff)
Merge pull request #27052 from vespa-engine/balder/use-shared-ptr-for-read-guard
Use shared_ptr for the read guard
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.h4
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastorecontext.h4
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/requestcontext.cpp9
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/requestcontext.h18
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/search_session.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/i_document_retriever.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.h6
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.cpp42
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.h4
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/test/document_meta_store_context_observer.h2
-rw-r--r--searchcore/src/vespa/searchcorespi/index/warmupindexcollection.h1
14 files changed, 38 insertions, 62 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.cpp
index ffb9acd5501..c8a5f925ed1 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.cpp
@@ -12,7 +12,7 @@ using vespalib::slime::Inserter;
namespace proton {
-DocumentMetaStoreExplorer::DocumentMetaStoreExplorer(IDocumentMetaStoreContext::IReadGuard::UP metaStore)
+DocumentMetaStoreExplorer::DocumentMetaStoreExplorer(IDocumentMetaStoreContext::IReadGuard::SP metaStore)
: _metaStore(std::move(metaStore))
{
}
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.h
index 978fd0b4a14..453c57ddcf1 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/document_meta_store_explorer.h
@@ -13,10 +13,10 @@ namespace proton {
class DocumentMetaStoreExplorer : public vespalib::StateExplorer
{
private:
- IDocumentMetaStoreContext::IReadGuard::UP _metaStore;
+ IDocumentMetaStoreContext::IReadGuard::SP _metaStore;
public:
- DocumentMetaStoreExplorer(IDocumentMetaStoreContext::IReadGuard::UP metaStore);
+ DocumentMetaStoreExplorer(IDocumentMetaStoreContext::IReadGuard::SP metaStore);
void get_state(const vespalib::slime::Inserter &inserter, bool full) const override;
};
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastorecontext.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastorecontext.h
index f85515922f9..81fecb75ea1 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastorecontext.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/documentmetastorecontext.h
@@ -46,8 +46,8 @@ public:
std::shared_ptr<proton::IDocumentMetaStore> getSP() const override { return _metaStore; }
proton::IDocumentMetaStore & get() override { return *_metaStore; }
- IReadGuard::UP getReadGuard() const override {
- return std::make_unique<ReadGuard>(_metaStoreAttr);
+ IReadGuard::SP getReadGuard() const override {
+ return std::make_shared<ReadGuard>(_metaStoreAttr);
}
void constructFreeList() override;
diff --git a/searchcore/src/vespa/searchcore/proton/matching/requestcontext.cpp b/searchcore/src/vespa/searchcore/proton/matching/requestcontext.cpp
index 0d5edf44d05..ddd8d83fd3b 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/requestcontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/requestcontext.cpp
@@ -27,7 +27,8 @@ RequestContext::RequestContext(const Doom & doom, IAttributeContext & attributeC
_attributeContext(attributeContext),
_query_env(query_env),
_shared_store(shared_store),
- _attribute_blueprint_params(attribute_blueprint_params)
+ _attribute_blueprint_params(attribute_blueprint_params),
+ _metaStoreReadGuard(nullptr)
{
}
@@ -63,10 +64,4 @@ RequestContext::get_query_tensor(const vespalib::string& tensor_name) const
}
}
-const search::attribute::AttributeBlueprintParams&
-RequestContext::get_attribute_blueprint_params() const
-{
- return _attribute_blueprint_params;
-}
-
}
diff --git a/searchcore/src/vespa/searchcore/proton/matching/requestcontext.h b/searchcore/src/vespa/searchcore/proton/matching/requestcontext.h
index 9ab9acc6d71..661e5fbd208 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/requestcontext.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/requestcontext.h
@@ -37,14 +37,20 @@ public:
const vespalib::eval::Value* get_query_tensor(const vespalib::string& tensor_name) const override;
- const search::attribute::AttributeBlueprintParams& get_attribute_blueprint_params() const override;
+ const search::attribute::AttributeBlueprintParams& get_attribute_blueprint_params() const override {
+ return _attribute_blueprint_params;
+ }
+ const MetaStoreReadGuardSP * getMetaStoreReadGuard() const override {
+ return _metaStoreReadGuard;
+ }
private:
- const Doom _doom;
- IAttributeContext & _attributeContext;
- const search::fef::IQueryEnvironment& _query_env;
- search::fef::IObjectStore& _shared_store;
- search::attribute::AttributeBlueprintParams _attribute_blueprint_params;
+ const Doom _doom;
+ IAttributeContext & _attributeContext;
+ const search::fef::IQueryEnvironment & _query_env;
+ search::fef::IObjectStore & _shared_store;
+ search::attribute::AttributeBlueprintParams _attribute_blueprint_params;
+ const MetaStoreReadGuardSP * _metaStoreReadGuard;
};
}
diff --git a/searchcore/src/vespa/searchcore/proton/matching/search_session.h b/searchcore/src/vespa/searchcore/proton/matching/search_session.h
index 4fc71b30f0a..2cc37a07564 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/search_session.h
+++ b/searchcore/src/vespa/searchcore/proton/matching/search_session.h
@@ -29,7 +29,7 @@ public:
std::shared_ptr<const ISearchHandler> search_handler;
std::unique_ptr<search::fef::Properties> feature_overrides;
std::unique_ptr<MatchContext> context;
- IDocumentMetaStoreContext::IReadGuard::UP readGuard;
+ IDocumentMetaStoreContext::IReadGuard::SP readGuard;
};
private:
using SessionId = vespalib::string;
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/i_document_retriever.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/i_document_retriever.h
index 529b7759530..c2dba032ad1 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/i_document_retriever.h
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/i_document_retriever.h
@@ -23,7 +23,7 @@ class IDocumentRetriever
{
public:
using ReadConsistency = storage::spi::ReadConsistency;
- using ReadGuard = IDocumentMetaStoreContext::IReadGuard::UP;
+ using ReadGuard = IDocumentMetaStoreContext::IReadGuard::SP;
using UP = std::unique_ptr<IDocumentRetriever>;
using SP = std::shared_ptr<IDocumentRetriever>;
diff --git a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper.h b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper.h
index b0831bf2fcc..dd0e462aa49 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_mapper.h
@@ -15,7 +15,7 @@ class DocumentMetaStore;
*/
class GidToLidMapper : public search::IGidToLidMapper
{
- search::IDocumentMetaStoreContext::IReadGuard::UP _guard;
+ search::IDocumentMetaStoreContext::IReadGuard::SP _guard;
public:
GidToLidMapper(const search::IDocumentMetaStoreContext &dmsContext);
virtual ~GidToLidMapper();
diff --git a/searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.h b/searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.h
index be22737a793..a0dac2b573c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.h
+++ b/searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.h
@@ -14,9 +14,9 @@ class DocumentSubDBCollection;
*/
struct DocumentMetaStoreReadGuards
{
- IDocumentMetaStoreContext::IReadGuard::UP readydms;
- IDocumentMetaStoreContext::IReadGuard::UP notreadydms;
- IDocumentMetaStoreContext::IReadGuard::UP remdms;
+ IDocumentMetaStoreContext::IReadGuard::SP readydms;
+ IDocumentMetaStoreContext::IReadGuard::SP notreadydms;
+ IDocumentMetaStoreContext::IReadGuard::SP remdms;
DocumentMetaStoreReadGuards(const DocumentSubDBCollection &subDBs);
~DocumentMetaStoreReadGuards();
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.cpp b/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.cpp
index bb7d80c5ebc..8ea159a334f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.cpp
@@ -11,11 +11,8 @@ using document::GlobalId;
namespace proton {
-DocumentRetrieverBase::DocumentRetrieverBase(
- const DocTypeName &docTypeName,
- const document::DocumentTypeRepo &repo,
- const IDocumentMetaStoreContext &meta_store,
- bool hasFields)
+DocumentRetrieverBase::DocumentRetrieverBase(const DocTypeName &docTypeName, const document::DocumentTypeRepo &repo,
+ const IDocumentMetaStoreContext &meta_store, bool hasFields)
: IDocumentRetriever(),
_docTypeName(docTypeName),
_repo(repo),
@@ -31,35 +28,17 @@ DocumentRetrieverBase::DocumentRetrieverBase(
DocumentRetrieverBase::~DocumentRetrieverBase() = default;
-const document::DocumentTypeRepo &
-DocumentRetrieverBase::getDocumentTypeRepo() const {
- return _repo;
-}
-
void
-DocumentRetrieverBase::getBucketMetaData(
- const storage::spi::Bucket &bucket,
- search::DocumentMetaData::Vector &result) const {
- IDocumentMetaStoreContext::IReadGuard::UP readGuard = _meta_store.getReadGuard();
- const search::IDocumentMetaStore &meta_store = readGuard->get();
- meta_store.getMetaData(bucket, result);
+DocumentRetrieverBase::getBucketMetaData(const storage::spi::Bucket &bucket,
+ search::DocumentMetaData::Vector &result) const
+{
+ _meta_store.getReadGuard()->get().getMetaData(bucket, result);
}
search::DocumentMetaData
DocumentRetrieverBase::getDocumentMetaData(const DocumentId &id) const {
- const GlobalId &gid = id.getGlobalId();
- IDocumentMetaStoreContext::IReadGuard::UP readGuard = _meta_store.getReadGuard();
- const search::IDocumentMetaStore &meta_store = readGuard->get();
- return meta_store.getMetaData(gid);
-}
-
-
-const search::IAttributeManager *
-DocumentRetrieverBase::getAttrMgr() const
-{
- return nullptr;
+ return _meta_store.getReadGuard()->get().getMetaData(id.getGlobalId());
}
-
CachedSelect::SP
DocumentRetrieverBase::parseSelect(const vespalib::string &selection) const
@@ -72,12 +51,7 @@ DocumentRetrieverBase::parseSelect(const vespalib::string &selection) const
auto nselect = std::make_shared<CachedSelect>();
- nselect->set(selection,
- _docTypeName.getName(),
- *_emptyDoc,
- getDocumentTypeRepo(),
- getAttrMgr(),
- _hasFields);
+ nselect->set(selection, _docTypeName.getName(), *_emptyDoc, getDocumentTypeRepo(), getAttrMgr(), _hasFields);
std::lock_guard<std::mutex> guard(_lock);
if (_selectCache.hasKey(selection))
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.h b/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.h
index 0ef46b7fb93..bbf43d05e1f 100644
--- a/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.h
+++ b/searchcore/src/vespa/searchcore/proton/server/documentretrieverbase.h
@@ -25,7 +25,7 @@ class DocumentRetrieverBase : public IDocumentRetriever
const bool _hasFields;
protected:
- virtual const search::IAttributeManager * getAttrMgr() const;
+ virtual const search::IAttributeManager * getAttrMgr() const { return nullptr; }
const document::DocumentType & getDocumentType() const {
return _emptyDoc->getType();
}
@@ -36,7 +36,7 @@ public:
bool hasFields);
~DocumentRetrieverBase() override;
- const document::DocumentTypeRepo &getDocumentTypeRepo() const override;
+ const document::DocumentTypeRepo &getDocumentTypeRepo() const override { return _repo; }
void getBucketMetaData(const storage::spi::Bucket &bucket, search::DocumentMetaData::Vector &result) const override;
search::DocumentMetaData getDocumentMetaData(const document::DocumentId &id) const override;
CachedSelect::SP parseSelect(const vespalib::string &selection) const override;
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp
index 4683b27bae3..8fce39e5ede 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp
@@ -160,7 +160,7 @@ bool
StoreOnlyDocSubDB::hasDocument(const document::DocumentId &id)
{
search::DocumentIdT lid;
- IDocumentMetaStoreContext::IReadGuard::UP guard = _metaStoreCtx->getReadGuard();
+ auto guard = _metaStoreCtx->getReadGuard();
return guard->get().getLid(id.getGlobalId(), lid);
}
diff --git a/searchcore/src/vespa/searchcore/proton/test/document_meta_store_context_observer.h b/searchcore/src/vespa/searchcore/proton/test/document_meta_store_context_observer.h
index b763942216d..8d8f1ee860a 100644
--- a/searchcore/src/vespa/searchcore/proton/test/document_meta_store_context_observer.h
+++ b/searchcore/src/vespa/searchcore/proton/test/document_meta_store_context_observer.h
@@ -26,7 +26,7 @@ struct DocumentMetaStoreContextObserver : public IDocumentMetaStoreContext
// Implements IDocumentMetaStoreContext
proton::IDocumentMetaStore::SP getSP() const override { return _observer; }
proton::IDocumentMetaStore & get() override { return *_observer; }
- IReadGuard::UP getReadGuard() const override { return _context.getReadGuard(); }
+ IReadGuard::SP getReadGuard() const override { return _context.getReadGuard(); }
void constructFreeList() override { return _context.constructFreeList(); }
};
diff --git a/searchcore/src/vespa/searchcorespi/index/warmupindexcollection.h b/searchcore/src/vespa/searchcorespi/index/warmupindexcollection.h
index 2bef9df4872..f46a1acd272 100644
--- a/searchcore/src/vespa/searchcorespi/index/warmupindexcollection.h
+++ b/searchcore/src/vespa/searchcorespi/index/warmupindexcollection.h
@@ -84,6 +84,7 @@ private:
const IAttributeVector *getAttributeStableEnum(const vespalib::string &) const override { return nullptr; }
const vespalib::eval::Value* get_query_tensor(const vespalib::string&) const override;
const AttributeBlueprintParams& get_attribute_blueprint_params() const override { return _params; }
+ const MetaStoreReadGuardSP * getMetaStoreReadGuard() const override { return nullptr; }
private:
const vespalib::Doom _doom;
const AttributeBlueprintParams _params;