summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@oath.com>2017-09-05 13:55:18 +0000
committerTor Egge <Tor.Egge@oath.com>2017-09-05 13:55:18 +0000
commitb62bfc4148f9013e91685a882785a69bb4399ac1 (patch)
tree13a222b3ba38df438a47f548c3b2f8a6bb934075 /searchcore
parentfb1818824b94e1ee4ca553065a2f6ba73b219ca7 (diff)
Add dummy gid to lid change handler.
Allocate real or dummy gid to lid change handler in doc subdb and pass reference to feed view.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp12
-rw-r--r--searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp4
-rw-r--r--searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp15
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/CMakeLists.txt1
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.cpp43
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.h48
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.cpp1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.cpp3
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp15
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h9
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp10
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp5
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp3
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h6
16 files changed, 149 insertions, 29 deletions
diff --git a/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp b/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp
index f0a91a101eb..d76117df4c2 100644
--- a/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp
@@ -24,6 +24,7 @@
#include <vespa/searchcore/proton/test/documentdb_config_builder.h>
#include <vespa/searchcore/proton/test/mock_summary_adapter.h>
#include <vespa/searchcore/proton/test/mock_gid_to_lid_change_handler.h>
+#include <vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.h>
#include <vespa/searchlib/index/dummyfileheadercontext.h>
#include <vespa/searchlib/transactionlog/nosyncproxy.h>
#include <vespa/vespalib/io/fileutil.h>
@@ -95,6 +96,7 @@ struct ViewSet
search::transactionlog::NoSyncProxy _noTlSyncer;
ISummaryManager::SP _summaryMgr;
IDocumentMetaStoreContext::SP _dmsc;
+ std::shared_ptr<IGidToLidChangeHandler> _gidToLidChangeHandler;
std::unique_ptr<documentmetastore::ILidReuseDelayer> _lidReuseDelayer;
CommitTimeTracker _commitTimeTracker;
VarHolder<SearchView::SP> searchView;
@@ -123,6 +125,7 @@ ViewSet::ViewSet()
_noTlSyncer(),
_summaryMgr(),
_dmsc(),
+ _gidToLidChangeHandler(),
_lidReuseDelayer(),
_commitTimeTracker(TimeStamp()),
searchView(),
@@ -211,7 +214,7 @@ Fixture::initViewSet(ViewSet &views)
IIndexWriter::SP indexWriter(new IndexWriter(indexMgr));
AttributeWriter::SP attrWriter(new AttributeWriter(attrMgr));
ISummaryAdapter::SP summaryAdapter(new SummaryAdapter(summaryMgr));
- std::shared_ptr<IGidToLidChangeHandler> gidToLidChangeHandler(std::make_shared<MockGidToLidChangeHandler>());
+ views._gidToLidChangeHandler = std::make_shared<MockGidToLidChangeHandler>();
Schema::SP schema(new Schema());
views._summaryMgr = summaryMgr;
views._dmsc = metaStore;
@@ -236,6 +239,7 @@ Fixture::initViewSet(ViewSet &views)
new SearchableFeedView(StoreOnlyFeedView::Context(summaryAdapter,
schema,
views.searchView.get()->getDocumentMetaStore(),
+ *views._gidToLidChangeHandler,
views.repo,
views._writeService,
*views._lidReuseDelayer,
@@ -248,7 +252,7 @@ Fixture::initViewSet(ViewSet &views)
0u /* subDbId */,
SubDbType::READY),
FastAccessFeedView::Context(attrWriter, views._docIdLimit),
- SearchableFeedView::Context(indexWriter, gidToLidChangeHandler))));
+ SearchableFeedView::Context(indexWriter))));
}
@@ -263,6 +267,7 @@ struct MyFastAccessFeedView
HwInfo _hwInfo;
IDocumentMetaStoreContext::SP _dmsc;
+ std::shared_ptr<IGidToLidChangeHandler> _gidToLidChangeHandler;
std::unique_ptr<documentmetastore::ILidReuseDelayer> _lidReuseDelayer;
CommitTimeTracker _commitTimeTracker;
VarHolder<FastAccessFeedView::SP> _feedView;
@@ -274,6 +279,7 @@ struct MyFastAccessFeedView
_writeService(writeService),
_hwInfo(),
_dmsc(),
+ _gidToLidChangeHandler(std::make_shared<DummyGidToLidChangeHandler>()),
_lidReuseDelayer(),
_commitTimeTracker(TimeStamp()),
_feedView()
@@ -293,7 +299,7 @@ struct MyFastAccessFeedView
new documentmetastore::LidReuseDelayer(_writeService,
docMetaCtx->get()));
DocumentTypeRepo::SP repo = createRepo();
- StoreOnlyFeedView::Context storeOnlyCtx(summaryAdapter, schema, docMetaCtx, repo, _writeService, *_lidReuseDelayer, _commitTimeTracker);
+ StoreOnlyFeedView::Context storeOnlyCtx(summaryAdapter, schema, docMetaCtx, *_gidToLidChangeHandler, repo, _writeService, *_lidReuseDelayer, _commitTimeTracker);
StoreOnlyFeedView::PersistentParams params(1, 1, DocTypeName(DOC_TYPE), _metrics, 0, SubDbType::NOTREADY);
AttributeManager::SP mgr(new AttributeManager(BASE_DIR, "test.subdb",
TuneFileAttributes(),
diff --git a/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp b/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp
index 2ed60f3c078..8af365d6327 100644
--- a/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp
@@ -755,13 +755,14 @@ struct SearchableFeedViewFixture : public FixtureBase
fv(StoreOnlyFeedView::Context(sa,
sc._schema,
_dmsc,
+ *_gidToLidChangeHandler,
sc.getRepo(),
_writeService,
_lidReuseDelayer,
_commitTimeTracker),
pc.getParams(),
FastAccessFeedView::Context(aw, _docIdLimit),
- SearchableFeedView::Context(iw, _gidToLidChangeHandler))
+ SearchableFeedView::Context(iw))
{
runInMaster([&]() { _lidReuseDelayer.setHasIndexedOrAttributeFields(true); });
}
@@ -776,6 +777,7 @@ struct FastAccessFeedViewFixture : public FixtureBase
fv(StoreOnlyFeedView::Context(sa,
sc._schema,
_dmsc,
+ *_gidToLidChangeHandler,
sc.getRepo(),
_writeService,
_lidReuseDelayer,
diff --git a/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp b/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp
index 15bd55441d4..1ec201fdbd2 100644
--- a/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp
@@ -12,6 +12,7 @@
#include <vespa/searchcore/proton/server/putdonecontext.h>
#include <vespa/searchcore/proton/server/removedonecontext.h>
#include <vespa/searchcore/proton/server/storeonlyfeedview.h>
+#include <vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.h>
#include <vespa/searchcore/proton/test/mock_summary_adapter.h>
#include <vespa/searchcore/proton/test/thread_utils.h>
#include <vespa/searchlib/common/idestructorcallback.h>
@@ -67,7 +68,17 @@ DocumentTypeRepo::SP myGetDocumentTypeRepo() {
return repo;
}
-struct MyMinimalFeedView : public StoreOnlyFeedView {
+struct MyMinimalFeedViewBase
+{
+ std::shared_ptr<IGidToLidChangeHandler> gidToLidChangeHandler;
+
+ MyMinimalFeedViewBase()
+ : gidToLidChangeHandler(std::make_shared<DummyGidToLidChangeHandler>())
+ {
+ }
+};
+
+struct MyMinimalFeedView : public MyMinimalFeedViewBase, public StoreOnlyFeedView {
using UP = std::unique_ptr<MyMinimalFeedView>;
int removeMultiAttributesCount;
@@ -83,10 +94,12 @@ struct MyMinimalFeedView : public StoreOnlyFeedView {
CommitTimeTracker &commitTimeTracker,
const PersistentParams &params,
int &outstandingMoveOps_) :
+ MyMinimalFeedViewBase(),
StoreOnlyFeedView(StoreOnlyFeedView::Context(summaryAdapter,
search::index::Schema::SP(),
DocumentMetaStoreContext::SP(
new DocumentMetaStoreContext(metaStore)),
+ *gidToLidChangeHandler,
myGetDocumentTypeRepo(),
writeService,
lidReuseDelayer,
diff --git a/searchcore/src/vespa/searchcore/proton/reference/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/reference/CMakeLists.txt
index ca55b44c13d..fe2ca7a7a88 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/CMakeLists.txt
+++ b/searchcore/src/vespa/searchcore/proton/reference/CMakeLists.txt
@@ -4,6 +4,7 @@ vespa_add_library(searchcore_reference STATIC
document_db_reference.cpp
document_db_reference_registry.cpp
document_db_reference_resolver.cpp
+ dummy_gid_to_lid_change_handler.cpp
gid_to_lid_change_handler.cpp
gid_to_lid_change_listener.cpp
gid_to_lid_change_registrator.cpp
diff --git a/searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.cpp b/searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.cpp
new file mode 100644
index 00000000000..c3c516a51dc
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.cpp
@@ -0,0 +1,43 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "dummy_gid_to_lid_change_handler.h"
+
+namespace proton {
+
+DummyGidToLidChangeHandler::DummyGidToLidChangeHandler()
+ : IGidToLidChangeHandler()
+
+{
+}
+
+DummyGidToLidChangeHandler::~DummyGidToLidChangeHandler()
+{
+}
+
+void
+DummyGidToLidChangeHandler::notifyPut(GlobalId, uint32_t, SerialNum)
+{
+}
+
+void
+DummyGidToLidChangeHandler::notifyRemove(GlobalId, SerialNum)
+{
+}
+
+void
+DummyGidToLidChangeHandler::notifyRemoveDone(GlobalId, SerialNum)
+{
+}
+
+void
+DummyGidToLidChangeHandler::addListener(std::unique_ptr<IGidToLidChangeListener>)
+{
+}
+
+void
+DummyGidToLidChangeHandler::removeListeners(const vespalib::string &,
+ const std::set<vespalib::string> &)
+{
+}
+
+} // namespace proton
diff --git a/searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.h b/searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.h
new file mode 100644
index 00000000000..e0db7d1aa52
--- /dev/null
+++ b/searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.h
@@ -0,0 +1,48 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "i_gid_to_lid_change_handler.h"
+#include <vector>
+#include <mutex>
+#include <vespa/vespalib/stllike/hash_map.h>
+#include <vespa/document/base/globalid.h>
+
+namespace searchcorespi { namespace index { class IThreadService; } }
+
+namespace proton {
+
+/*
+ * Dummy class for registering listeners that get notification when
+ * gid to lid mapping changes.
+ */
+class DummyGidToLidChangeHandler : public IGidToLidChangeHandler
+{
+ bool _closed;
+
+public:
+ DummyGidToLidChangeHandler();
+ virtual ~DummyGidToLidChangeHandler();
+
+ /**
+ * Notify gid to lid mapping change.
+ */
+ virtual void notifyPut(GlobalId gid, uint32_t lid, SerialNum serialNum) override;
+ virtual void notifyRemove(GlobalId gid, SerialNum serialNum) override;
+ virtual void notifyRemoveDone(GlobalId gid, SerialNum serialNum) override;
+
+ /*
+ * Add listener unless a listener with matching docTypeName and
+ * name already exists.
+ */
+ virtual void addListener(std::unique_ptr<IGidToLidChangeListener> listener) override;
+
+ /**
+ * Remove listeners with matching docTypeName unless name is present in
+ * keepNames.
+ */
+ virtual void removeListeners(const vespalib::string &docTypeName,
+ const std::set<vespalib::string> &keepNames) override;
+};
+
+} // namespace proton
diff --git a/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.cpp b/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.cpp
index 94663273414..2b9a37fac0b 100644
--- a/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/fast_access_doc_subdb_configurer.cpp
@@ -24,6 +24,7 @@ FastAccessDocSubDBConfigurer::reconfigureFeedView(const FastAccessFeedView::SP &
StoreOnlyFeedView::Context(curr->getSummaryAdapter(),
schema,
curr->getDocumentMetaStore(),
+ curr->getGidToLidChangeHandler(),
repo,
curr->getWriteService(),
curr->getLidReuseDelayer(),
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.cpp b/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.cpp
index 1127f73a778..571e64e104c 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/searchable_doc_subdb_configurer.cpp
@@ -47,12 +47,13 @@ SearchableDocSubDBConfigurer::reconfigureFeedView(const IIndexWriter::SP &indexW
StoreOnlyFeedView::Context(summaryAdapter,
schema,
searchView->getDocumentMetaStore(),
+ curr->getGidToLidChangeHandler(),
repo,
curr->getWriteService(),
curr->getLidReuseDelayer(), curr->getCommitTimeTracker()),
curr->getPersistentParams(),
FastAccessFeedView::Context(attrWriter, curr->getDocIdLimit()),
- SearchableFeedView::Context(indexWriter, curr->getGidToLidChangeHandler()))));
+ SearchableFeedView::Context(indexWriter))));
}
void
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp
index 913956c509f..82cd7de3d49 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp
@@ -37,10 +37,8 @@ bool shouldTrace(StoreOnlyFeedView::OnOperationDoneType onWriteDone, uint32_t tr
}
-SearchableFeedView::Context::Context(const IIndexWriter::SP &indexWriter,
- const std::shared_ptr<IGidToLidChangeHandler> &gidToLidChangeHandler)
- : _indexWriter(indexWriter),
- _gidToLidChangeHandler(gidToLidChangeHandler)
+SearchableFeedView::Context::Context(const IIndexWriter::SP &indexWriter)
+ : _indexWriter(indexWriter)
{}
@@ -52,8 +50,7 @@ SearchableFeedView::SearchableFeedView(const StoreOnlyFeedView::Context &storeOn
Context ctx)
: Parent(storeOnlyCtx, params, fastUpdateCtx),
_indexWriter(ctx._indexWriter),
- _hasIndexedFields(_schema->getNumIndexFields() > 0),
- _gidToLidChangeHandler(ctx._gidToLidChangeHandler)
+ _hasIndexedFields(_schema->getNumIndexFields() > 0)
{ }
SearchableFeedView::~SearchableFeedView() {}
@@ -264,19 +261,19 @@ SearchableFeedView::forceCommit(SerialNum serialNum, OnForceCommitDoneType onCom
void
SearchableFeedView::notifyPutGidToLidChange(const document::GlobalId &gid, uint32_t lid, SerialNum serialNum)
{
- _gidToLidChangeHandler->notifyPut(gid, lid, serialNum);
+ _gidToLidChangeHandler.notifyPut(gid, lid, serialNum);
}
void
SearchableFeedView::notifyRemoveGidToLidChange(const document::GlobalId &gid, SerialNum serialNum)
{
- _gidToLidChangeHandler->notifyRemove(gid, serialNum);
+ _gidToLidChangeHandler.notifyRemove(gid, serialNum);
}
void
SearchableFeedView::notifyRemoveDoneGidToLidChange(const document::GlobalId &gid, SerialNum serialNum)
{
- _gidToLidChangeHandler->notifyRemoveDone(gid, serialNum);
+ _gidToLidChangeHandler.notifyRemoveDone(gid, serialNum);
}
} // namespace proton
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h
index 4b536d0adde..5863cd615af 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h
+++ b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h
@@ -8,8 +8,6 @@
namespace proton {
-class IGidToLidChangeHandler;
-
/**
* The feed view used by the searchable sub database.
*
@@ -25,17 +23,14 @@ public:
struct Context {
const IIndexWriter::SP &_indexWriter;
- const std::shared_ptr<IGidToLidChangeHandler> &_gidToLidChangeHandler;
- Context(const IIndexWriter::SP &indexWriter,
- const std::shared_ptr<IGidToLidChangeHandler> &gidToLidChangeHandler);
+ Context(const IIndexWriter::SP &indexWriter);
~Context();
};
private:
const IIndexWriter::SP _indexWriter;
const bool _hasIndexedFields;
- const std::shared_ptr<IGidToLidChangeHandler> _gidToLidChangeHandler;
bool hasIndexedFields() const { return _hasIndexedFields; }
@@ -96,7 +91,7 @@ public:
virtual ~SearchableFeedView();
const IIndexWriter::SP &getIndexWriter() const { return _indexWriter; }
- const std::shared_ptr<IGidToLidChangeHandler> &getGidToLidChangeHandler() const { return _gidToLidChangeHandler; }
+// const std::shared_ptr<IGidToLidChangeHandler> &getGidToLidChangeHandler() const { return _gidToLidChangeHandler; }
void sync() override;
};
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp
index e9e0120dac1..f88fb07ab29 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp
@@ -49,8 +49,10 @@ SearchableDocSubDB::SearchableDocSubDB(const Config &cfg, const Context &ctx)
getSubDbName(), ctx._fastUpdCtx._storeOnlyCtx._owner.getDistributionKey()),
_numSearcherThreads(cfg._numSearcherThreads),
_warmupExecutor(ctx._warmupExecutor),
- _gidToLidChangeHandler(std::make_shared<GidToLidChangeHandler>())
-{ }
+ _realGidToLidChangeHandler(std::make_shared<GidToLidChangeHandler>())
+{
+ _gidToLidChangeHandler = _realGidToLidChangeHandler;
+}
SearchableDocSubDB::~SearchableDocSubDB()
{
@@ -244,7 +246,7 @@ SearchableDocSubDB::initFeedView(const IAttributeWriter::SP &attrWriter,
SearchableFeedView::UP feedView(new SearchableFeedView(getStoreOnlyFeedViewContext(configSnapshot),
getFeedViewPersistentParams(),
FastAccessFeedView::Context(attrWriter, _docIdLimit),
- SearchableFeedView::Context(getIndexWriter(), _gidToLidChangeHandler)));
+ SearchableFeedView::Context(getIndexWriter())));
// XXX: Not exception safe.
_rFeedView.set(SearchableFeedView::SP(feedView.release()));
@@ -351,7 +353,7 @@ SearchableDocSubDB::updateLidReuseDelayer(const LidReuseDelayerConfig &config)
void
SearchableDocSubDB::close()
{
- _gidToLidChangeHandler->close();
+ _realGidToLidChangeHandler->close();
Parent::close();
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.h b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.h
index fa3ded56c97..91ce868937b 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.h
+++ b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.h
@@ -83,7 +83,7 @@ private:
SearchableDocSubDBConfigurer _configurer;
const size_t _numSearcherThreads;
vespalib::ThreadExecutor &_warmupExecutor;
- std::shared_ptr<GidToLidChangeHandler> _gidToLidChangeHandler;
+ std::shared_ptr<GidToLidChangeHandler> _realGidToLidChangeHandler;
// Note: lifetime of indexManager must be handled by caller.
std::shared_ptr<initializer::InitializerTask>
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp
index b3f98b2a8ac..5fbae951536 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp
@@ -19,6 +19,7 @@
#include <vespa/searchcore/proton/index/index_writer.h>
#include <vespa/searchcore/proton/metrics/legacy_documentdb_metrics.h>
#include <vespa/searchcore/proton/metrics/metricswireservice.h>
+#include <vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.h>
#include <vespa/searchlib/attribute/configconverter.h>
#include <vespa/searchlib/docstore/document_store_visitor_progress.h>
#include <vespa/searchlib/util/fileheadertk.h>
@@ -135,7 +136,8 @@ StoreOnlyDocSubDB::StoreOnlyDocSubDB(const Config &cfg, const Context &ctx)
_subDbType(cfg._subDbType),
_fileHeaderContext(*this, ctx._fileHeaderContext, _docTypeName, _baseDir),
_lidReuseDelayer(),
- _commitTimeTracker(TimeStamp::Seconds(3600.0))
+ _commitTimeTracker(TimeStamp::Seconds(3600.0)),
+ _gidToLidChangeHandler(std::make_shared<DummyGidToLidChangeHandler>())
{
vespalib::mkdir(_baseDir, false); // Assume parent is created.
}
@@ -387,6 +389,7 @@ StoreOnlyDocSubDB::getStoreOnlyFeedViewContext(const DocumentDBConfig &configSna
return StoreOnlyFeedView::Context(getSummaryAdapter(),
configSnapshot.getSchemaSP(),
_metaStoreCtx,
+ *_gidToLidChangeHandler,
configSnapshot.getDocumentTypeRepoSP(),
_writeService,
*_lidReuseDelayer, _commitTimeTracker);
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h
index b9e23e2436c..ed540053de3 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h
@@ -176,6 +176,7 @@ protected:
StoreOnlySubDBFileHeaderContext _fileHeaderContext;
std::unique_ptr<documentmetastore::ILidReuseDelayer> _lidReuseDelayer;
CommitTimeTracker _commitTimeTracker;
+ std::shared_ptr<IGidToLidChangeHandler> _gidToLidChangeHandler;
std::shared_ptr<initializer::InitializerTask>
createSummaryManagerInitializer(const ProtonConfig::Summary protonSummaryCfg,
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp
index 3e7e3d6ddfa..d5618aa5944 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp
@@ -202,7 +202,8 @@ StoreOnlyFeedView::StoreOnlyFeedView(const Context &ctx, const PersistentParams
_schema(ctx._schema),
_writeService(ctx._writeService),
_params(params),
- _metaStore(_documentMetaStoreContext->get())
+ _metaStore(_documentMetaStoreContext->get()),
+ _gidToLidChangeHandler(ctx._gidToLidChangeHandler)
{
_docType = _repo->getDocumentType(_params._docTypeName.getName());
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h
index ec3003fb5d6..8339b7d41a5 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h
@@ -31,6 +31,7 @@ class OperationDoneContext;
class PutDoneContext;
class RemoveDoneContext;
class CommitTimeTracker;
+class IGidToLidChangeHandler;
namespace documentmetastore { class ILidReuseDelayer; }
@@ -68,6 +69,7 @@ public:
const ISummaryAdapter::SP &_summaryAdapter;
const search::index::Schema::SP &_schema;
const IDocumentMetaStoreContext::SP &_documentMetaStoreContext;
+ IGidToLidChangeHandler &_gidToLidChangeHandler;
const document::DocumentTypeRepo::SP &_repo;
searchcorespi::index::IThreadingService &_writeService;
documentmetastore::ILidReuseDelayer &_lidReuseDelayer;
@@ -76,6 +78,7 @@ public:
Context(const ISummaryAdapter::SP &summaryAdapter,
const search::index::Schema::SP &schema,
const IDocumentMetaStoreContext::SP &documentMetaStoreContext,
+ IGidToLidChangeHandler &gidToLidChangeHandler,
const document::DocumentTypeRepo::SP &repo,
searchcorespi::index::IThreadingService &writeService,
documentmetastore::ILidReuseDelayer &lidReuseDelayer,
@@ -83,6 +86,7 @@ public:
: _summaryAdapter(summaryAdapter),
_schema(schema),
_documentMetaStoreContext(documentMetaStoreContext),
+ _gidToLidChangeHandler(gidToLidChangeHandler),
_repo(repo),
_writeService(writeService),
_lidReuseDelayer(lidReuseDelayer),
@@ -143,6 +147,7 @@ protected:
searchcorespi::index::IThreadingService &_writeService;
PersistentParams _params;
IDocumentMetaStore &_metaStore;
+ IGidToLidChangeHandler &_gidToLidChangeHandler;
private:
searchcorespi::index::IThreadService & summaryExecutor() {
@@ -229,6 +234,7 @@ public:
searchcorespi::index::IThreadingService &getWriteService() { return _writeService; }
documentmetastore::ILidReuseDelayer &getLidReuseDelayer() { return _lidReuseDelayer; }
CommitTimeTracker &getCommitTimeTracker() { return _commitTimeTracker; }
+ IGidToLidChangeHandler &getGidToLidChangeHandler() const { return _gidToLidChangeHandler; }
/**
* Implements IFeedView.