From b62bfc4148f9013e91685a882785a69bb4399ac1 Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Tue, 5 Sep 2017 13:55:18 +0000 Subject: 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. --- .../documentdb/configurer/configurer_test.cpp | 12 ++++-- .../proton/documentdb/feedview/feedview_test.cpp | 4 +- .../storeonlyfeedview/storeonlyfeedview_test.cpp | 15 ++++++- .../searchcore/proton/reference/CMakeLists.txt | 1 + .../reference/dummy_gid_to_lid_change_handler.cpp | 43 +++++++++++++++++++ .../reference/dummy_gid_to_lid_change_handler.h | 48 ++++++++++++++++++++++ .../server/fast_access_doc_subdb_configurer.cpp | 1 + .../server/searchable_doc_subdb_configurer.cpp | 3 +- .../proton/server/searchable_feed_view.cpp | 15 +++---- .../proton/server/searchable_feed_view.h | 9 +--- .../proton/server/searchabledocsubdb.cpp | 10 +++-- .../searchcore/proton/server/searchabledocsubdb.h | 2 +- .../searchcore/proton/server/storeonlydocsubdb.cpp | 5 ++- .../searchcore/proton/server/storeonlydocsubdb.h | 1 + .../searchcore/proton/server/storeonlyfeedview.cpp | 3 +- .../searchcore/proton/server/storeonlyfeedview.h | 6 +++ 16 files changed, 149 insertions(+), 29 deletions(-) create mode 100644 searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.cpp create mode 100644 searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.h (limited to 'searchcore') 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 #include #include +#include #include #include #include @@ -95,6 +96,7 @@ struct ViewSet search::transactionlog::NoSyncProxy _noTlSyncer; ISummaryManager::SP _summaryMgr; IDocumentMetaStoreContext::SP _dmsc; + std::shared_ptr _gidToLidChangeHandler; std::unique_ptr _lidReuseDelayer; CommitTimeTracker _commitTimeTracker; VarHolder 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 gidToLidChangeHandler(std::make_shared()); + views._gidToLidChangeHandler = std::make_shared(); 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 _gidToLidChangeHandler; std::unique_ptr _lidReuseDelayer; CommitTimeTracker _commitTimeTracker; VarHolder _feedView; @@ -274,6 +279,7 @@ struct MyFastAccessFeedView _writeService(writeService), _hwInfo(), _dmsc(), + _gidToLidChangeHandler(std::make_shared()), _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 #include #include +#include #include #include #include @@ -67,7 +68,17 @@ DocumentTypeRepo::SP myGetDocumentTypeRepo() { return repo; } -struct MyMinimalFeedView : public StoreOnlyFeedView { +struct MyMinimalFeedViewBase +{ + std::shared_ptr gidToLidChangeHandler; + + MyMinimalFeedViewBase() + : gidToLidChangeHandler(std::make_shared()) + { + } +}; + +struct MyMinimalFeedView : public MyMinimalFeedViewBase, public StoreOnlyFeedView { using UP = std::unique_ptr; int removeMultiAttributesCount; @@ -83,10 +94,12 @@ struct MyMinimalFeedView : public StoreOnlyFeedView { CommitTimeTracker &commitTimeTracker, const PersistentParams ¶ms, 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) +{ +} + +void +DummyGidToLidChangeHandler::removeListeners(const vespalib::string &, + const std::set &) +{ +} + +} // 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 +#include +#include +#include + +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 listener) override; + + /** + * Remove listeners with matching docTypeName unless name is present in + * keepNames. + */ + virtual void removeListeners(const vespalib::string &docTypeName, + const std::set &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 &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 &_gidToLidChangeHandler; - Context(const IIndexWriter::SP &indexWriter, - const std::shared_ptr &gidToLidChangeHandler); + Context(const IIndexWriter::SP &indexWriter); ~Context(); }; private: const IIndexWriter::SP _indexWriter; const bool _hasIndexedFields; - const std::shared_ptr _gidToLidChangeHandler; bool hasIndexedFields() const { return _hasIndexedFields; } @@ -96,7 +91,7 @@ public: virtual ~SearchableFeedView(); const IIndexWriter::SP &getIndexWriter() const { return _indexWriter; } - const std::shared_ptr &getGidToLidChangeHandler() const { return _gidToLidChangeHandler; } +// const std::shared_ptr &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()) -{ } + _realGidToLidChangeHandler(std::make_shared()) +{ + _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; + std::shared_ptr _realGidToLidChangeHandler; // Note: lifetime of indexManager must be handled by caller. std::shared_ptr 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 #include #include +#include #include #include #include @@ -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()) { 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 _lidReuseDelayer; CommitTimeTracker _commitTimeTracker; + std::shared_ptr _gidToLidChangeHandler; std::shared_ptr 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. -- cgit v1.2.3