diff options
author | Tor Egge <Tor.Egge@broadpark.no> | 2017-09-06 16:43:01 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-06 16:43:01 +0200 |
commit | f0727265fb2a36c1664beca309a7c9aa83dc41ac (patch) | |
tree | a1381da7b97b483e925045c483f5f35b4f9a0912 /searchcore | |
parent | 6904c661f29763762c84f672bca812b3339f912e (diff) |
Revert "Use gid to lid change handler interface directly"
Diffstat (limited to 'searchcore')
23 files changed, 122 insertions, 250 deletions
diff --git a/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp b/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp index d76117df4c2..f0a91a101eb 100644 --- a/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp +++ b/searchcore/src/tests/proton/documentdb/configurer/configurer_test.cpp @@ -24,7 +24,6 @@ #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> @@ -96,7 +95,6 @@ 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; @@ -125,7 +123,6 @@ ViewSet::ViewSet() _noTlSyncer(), _summaryMgr(), _dmsc(), - _gidToLidChangeHandler(), _lidReuseDelayer(), _commitTimeTracker(TimeStamp()), searchView(), @@ -214,7 +211,7 @@ Fixture::initViewSet(ViewSet &views) IIndexWriter::SP indexWriter(new IndexWriter(indexMgr)); AttributeWriter::SP attrWriter(new AttributeWriter(attrMgr)); ISummaryAdapter::SP summaryAdapter(new SummaryAdapter(summaryMgr)); - views._gidToLidChangeHandler = std::make_shared<MockGidToLidChangeHandler>(); + std::shared_ptr<IGidToLidChangeHandler> gidToLidChangeHandler(std::make_shared<MockGidToLidChangeHandler>()); Schema::SP schema(new Schema()); views._summaryMgr = summaryMgr; views._dmsc = metaStore; @@ -239,7 +236,6 @@ Fixture::initViewSet(ViewSet &views) new SearchableFeedView(StoreOnlyFeedView::Context(summaryAdapter, schema, views.searchView.get()->getDocumentMetaStore(), - *views._gidToLidChangeHandler, views.repo, views._writeService, *views._lidReuseDelayer, @@ -252,7 +248,7 @@ Fixture::initViewSet(ViewSet &views) 0u /* subDbId */, SubDbType::READY), FastAccessFeedView::Context(attrWriter, views._docIdLimit), - SearchableFeedView::Context(indexWriter)))); + SearchableFeedView::Context(indexWriter, gidToLidChangeHandler)))); } @@ -267,7 +263,6 @@ struct MyFastAccessFeedView HwInfo _hwInfo; IDocumentMetaStoreContext::SP _dmsc; - std::shared_ptr<IGidToLidChangeHandler> _gidToLidChangeHandler; std::unique_ptr<documentmetastore::ILidReuseDelayer> _lidReuseDelayer; CommitTimeTracker _commitTimeTracker; VarHolder<FastAccessFeedView::SP> _feedView; @@ -279,7 +274,6 @@ struct MyFastAccessFeedView _writeService(writeService), _hwInfo(), _dmsc(), - _gidToLidChangeHandler(std::make_shared<DummyGidToLidChangeHandler>()), _lidReuseDelayer(), _commitTimeTracker(TimeStamp()), _feedView() @@ -299,7 +293,7 @@ struct MyFastAccessFeedView new documentmetastore::LidReuseDelayer(_writeService, docMetaCtx->get())); DocumentTypeRepo::SP repo = createRepo(); - StoreOnlyFeedView::Context storeOnlyCtx(summaryAdapter, schema, docMetaCtx, *_gidToLidChangeHandler, repo, _writeService, *_lidReuseDelayer, _commitTimeTracker); + StoreOnlyFeedView::Context storeOnlyCtx(summaryAdapter, schema, docMetaCtx, 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 8af365d6327..2ed60f3c078 100644 --- a/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp +++ b/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp @@ -755,14 +755,13 @@ 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)) + SearchableFeedView::Context(iw, _gidToLidChangeHandler)) { runInMaster([&]() { _lidReuseDelayer.setHasIndexedOrAttributeFields(true); }); } @@ -777,7 +776,6 @@ 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 1ec201fdbd2..15bd55441d4 100644 --- a/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp +++ b/searchcore/src/tests/proton/documentdb/storeonlyfeedview/storeonlyfeedview_test.cpp @@ -12,7 +12,6 @@ #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> @@ -68,17 +67,7 @@ DocumentTypeRepo::SP myGetDocumentTypeRepo() { return repo; } -struct MyMinimalFeedViewBase -{ - std::shared_ptr<IGidToLidChangeHandler> gidToLidChangeHandler; - - MyMinimalFeedViewBase() - : gidToLidChangeHandler(std::make_shared<DummyGidToLidChangeHandler>()) - { - } -}; - -struct MyMinimalFeedView : public MyMinimalFeedViewBase, public StoreOnlyFeedView { +struct MyMinimalFeedView : public StoreOnlyFeedView { using UP = std::unique_ptr<MyMinimalFeedView>; int removeMultiAttributesCount; @@ -94,12 +83,10 @@ struct MyMinimalFeedView : public MyMinimalFeedViewBase, public StoreOnlyFeedVie 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 fe2ca7a7a88..ca55b44c13d 100644 --- a/searchcore/src/vespa/searchcore/proton/reference/CMakeLists.txt +++ b/searchcore/src/vespa/searchcore/proton/reference/CMakeLists.txt @@ -4,7 +4,6 @@ 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 deleted file mode 100644 index c3c516a51dc..00000000000 --- a/searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.cpp +++ /dev/null @@ -1,43 +0,0 @@ -// 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 deleted file mode 100644 index 24773924aaa..00000000000 --- a/searchcore/src/vespa/searchcore/proton/reference/dummy_gid_to_lid_change_handler.h +++ /dev/null @@ -1,35 +0,0 @@ -// 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(); - - 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; - virtual void addListener(std::unique_ptr<IGidToLidChangeListener> listener) override; - virtual void removeListeners(const vespalib::string &docTypeName, - const std::set<vespalib::string> &keepNames) override; -}; - -} // namespace proton diff --git a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_handler.h b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_handler.h index 840cb61cc2a..736a34aba76 100644 --- a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_handler.h +++ b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_handler.h @@ -33,6 +33,9 @@ public: GidToLidChangeHandler(); virtual ~GidToLidChangeHandler(); + /** + * 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; @@ -42,7 +45,16 @@ public: */ void close(); + /* + * 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; }; diff --git a/searchcore/src/vespa/searchcore/proton/reference/i_gid_to_lid_change_handler.h b/searchcore/src/vespa/searchcore/proton/reference/i_gid_to_lid_change_handler.h index 53ade83ff32..a3b1db59abd 100644 --- a/searchcore/src/vespa/searchcore/proton/reference/i_gid_to_lid_change_handler.h +++ b/searchcore/src/vespa/searchcore/proton/reference/i_gid_to_lid_change_handler.h @@ -25,21 +25,10 @@ public: virtual ~IGidToLidChangeHandler() { } - /* - * Add listener unless a listener with matching docTypeName and - * name already exists. - */ virtual void addListener(std::unique_ptr<IGidToLidChangeListener> listener) = 0; - /** - * Remove listeners with matching docTypeName unless name is present in - * keepNames. - */ virtual void removeListeners(const vespalib::string &docTypeName, const std::set<vespalib::string> &keepNames) = 0; - /** - * Notify gid to lid mapping change. - */ virtual void notifyPut(GlobalId gid, uint32_t lid, SerialNum serialNum) = 0; virtual void notifyRemove(GlobalId gid, SerialNum serialNum) = 0; virtual void notifyRemoveDone(GlobalId gid, SerialNum serialNum) = 0; 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 2b9a37fac0b..94663273414 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,7 +24,6 @@ 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/fast_access_feed_view.cpp b/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.cpp index 5c304a1c7fc..a48c6373c00 100644 --- a/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.cpp @@ -44,7 +44,7 @@ FastAccessFeedView::putAttributes(SerialNum serialNum, { _attributeWriter->put(serialNum, doc, lid, immediateCommit, onWriteDone); if (immediateCommit && onWriteDone) { - onWriteDone->registerPutLid(&_docIdLimit); + onWriteDone->registerPutLid(lid, &_docIdLimit); } } diff --git a/searchcore/src/vespa/searchcore/proton/server/putdonecontext.cpp b/searchcore/src/vespa/searchcore/proton/server/putdonecontext.cpp index 8462e3d0a77..ad50e3a92aa 100644 --- a/searchcore/src/vespa/searchcore/proton/server/putdonecontext.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/putdonecontext.cpp @@ -3,25 +3,15 @@ #include "putdonecontext.h" #include <vespa/searchcore/proton/common/feedtoken.h> #include <vespa/searchcore/proton/common/docid_limit.h> -#include <vespa/searchcore/proton/reference/i_gid_to_lid_change_handler.h> namespace proton { PutDoneContext::PutDoneContext(std::unique_ptr<FeedToken> token, const FeedOperation::Type opType, - PerDocTypeFeedMetrics &metrics, - IGidToLidChangeHandler &gidToLidChangeHandler, - const document::GlobalId &gid, - uint32_t lid, - search::SerialNum serialNum, - bool changedDbdId) + PerDocTypeFeedMetrics &metrics) : OperationDoneContext(std::move(token), opType, metrics), - _lid(lid), - _docIdLimit(nullptr), - _gidToLidChangeHandler(gidToLidChangeHandler), - _gid(gid), - _serialNum(serialNum), - _changedDbdId(changedDbdId) + _lid(0), + _docIdLimit(nullptr) { } @@ -30,9 +20,6 @@ PutDoneContext::~PutDoneContext() if (_docIdLimit != nullptr) { _docIdLimit->bumpUpLimit(_lid + 1); } - if (_changedDbdId) { - _gidToLidChangeHandler.notifyPut(_gid, _lid, _serialNum); - } } } // namespace proton diff --git a/searchcore/src/vespa/searchcore/proton/server/putdonecontext.h b/searchcore/src/vespa/searchcore/proton/server/putdonecontext.h index 5a5ff849ac7..ba94891fd6e 100644 --- a/searchcore/src/vespa/searchcore/proton/server/putdonecontext.h +++ b/searchcore/src/vespa/searchcore/proton/server/putdonecontext.h @@ -3,15 +3,12 @@ #pragma once #include "operationdonecontext.h" -#include <vespa/document/base/globalid.h> -#include <vespa/searchlib/common/serialnum.h> namespace proton { class DocIdLimit; -class IGidToLidChangeHandler; /** * Context class for document put operations that acks operation when @@ -24,25 +21,17 @@ class PutDoneContext : public OperationDoneContext { uint32_t _lid; DocIdLimit *_docIdLimit; - IGidToLidChangeHandler &_gidToLidChangeHandler; - document::GlobalId _gid; - search::SerialNum _serialNum; - bool _changedDbdId; // lid or document subdb changed public: PutDoneContext(std::unique_ptr<FeedToken> token, const FeedOperation::Type opType, - PerDocTypeFeedMetrics &metrics, - IGidToLidChangeHandler &gidToLidChangeHandler, - const document::GlobalId &gid, - uint32_t lid, - search::SerialNum serialNum, - bool changedDbdId); + PerDocTypeFeedMetrics &metrics); virtual ~PutDoneContext(); - void registerPutLid(DocIdLimit *docIdLimit) + void registerPutLid(uint32_t lid, DocIdLimit *docIdLimit) { + _lid = lid; _docIdLimit = docIdLimit; } }; diff --git a/searchcore/src/vespa/searchcore/proton/server/removedonecontext.cpp b/searchcore/src/vespa/searchcore/proton/server/removedonecontext.cpp index 301224cf134..219d7482853 100644 --- a/searchcore/src/vespa/searchcore/proton/server/removedonecontext.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/removedonecontext.cpp @@ -3,7 +3,6 @@ #include "removedonecontext.h" #include "removedonetask.h" #include <vespa/searchcore/proton/common/feedtoken.h> -#include <vespa/searchcore/proton/reference/i_gid_to_lid_change_handler.h> namespace proton { @@ -12,16 +11,10 @@ RemoveDoneContext::RemoveDoneContext(std::unique_ptr<FeedToken> token, PerDocTypeFeedMetrics &metrics, vespalib::Executor &executor, IDocumentMetaStore &documentMetaStore, - IGidToLidChangeHandler &gidToLidChangeHandler, - const document::GlobalId &gid, - uint32_t lid, - search::SerialNum serialNum) + uint32_t lid) : OperationDoneContext(std::move(token), opType, metrics), _executor(executor), - _task(), - _gidToLidChangeHandler(gidToLidChangeHandler), - _gid(gid), - _serialNum(serialNum) + _task() { if (lid != 0) { _task = std::make_unique<RemoveDoneTask>(documentMetaStore, lid); @@ -30,7 +23,6 @@ RemoveDoneContext::RemoveDoneContext(std::unique_ptr<FeedToken> token, RemoveDoneContext::~RemoveDoneContext() { - _gidToLidChangeHandler.notifyRemoveDone(_gid, _serialNum); ack(); if (_task) { vespalib::Executor::Task::UP res = _executor.execute(std::move(_task)); diff --git a/searchcore/src/vespa/searchcore/proton/server/removedonecontext.h b/searchcore/src/vespa/searchcore/proton/server/removedonecontext.h index ccd480a5a91..b59219fc8c9 100644 --- a/searchcore/src/vespa/searchcore/proton/server/removedonecontext.h +++ b/searchcore/src/vespa/searchcore/proton/server/removedonecontext.h @@ -4,14 +4,11 @@ #include "operationdonecontext.h" #include <vespa/vespalib/util/executor.h> -#include <vespa/document/base/globalid.h> -#include <vespa/searchlib/common/serialnum.h> namespace proton { class IDocumentMetaStore; -class IGidToLidChangeHandler; /** @@ -26,9 +23,6 @@ class RemoveDoneContext : public OperationDoneContext { vespalib::Executor &_executor; std::unique_ptr<vespalib::Executor::Task> _task; - IGidToLidChangeHandler &_gidToLidChangeHandler; - document::GlobalId _gid; - search::SerialNum _serialNum; public: RemoveDoneContext(std::unique_ptr<FeedToken> token, @@ -36,10 +30,7 @@ public: PerDocTypeFeedMetrics &metrics, vespalib::Executor &executor, IDocumentMetaStore &documentMetaStore, - IGidToLidChangeHandler &gidToLidChangeHandler, - const document::GlobalId &gid, - uint32_t lid, - search::SerialNum serialNum); + uint32_t lid); virtual ~RemoveDoneContext(); }; 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 571e64e104c..1127f73a778 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,13 +47,12 @@ 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)))); + SearchableFeedView::Context(indexWriter, curr->getGidToLidChangeHandler())))); } 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 14556c86c18..913956c509f 100644 --- a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp @@ -7,6 +7,7 @@ #include <vespa/searchcore/proton/common/feedtoken.h> #include <vespa/searchcore/proton/metrics/feed_metrics.h> #include <vespa/searchcore/proton/documentmetastore/ilidreusedelayer.h> +#include <vespa/searchcore/proton/reference/i_gid_to_lid_change_handler.h> #include <vespa/vespalib/text/stringtokenizer.h> #include <vespa/vespalib/util/closuretask.h> #include <vespa/vespalib/util/exceptions.h> @@ -36,8 +37,10 @@ bool shouldTrace(StoreOnlyFeedView::OnOperationDoneType onWriteDone, uint32_t tr } -SearchableFeedView::Context::Context(const IIndexWriter::SP &indexWriter) - : _indexWriter(indexWriter) +SearchableFeedView::Context::Context(const IIndexWriter::SP &indexWriter, + const std::shared_ptr<IGidToLidChangeHandler> &gidToLidChangeHandler) + : _indexWriter(indexWriter), + _gidToLidChangeHandler(gidToLidChangeHandler) {} @@ -49,7 +52,8 @@ SearchableFeedView::SearchableFeedView(const StoreOnlyFeedView::Context &storeOn Context ctx) : Parent(storeOnlyCtx, params, fastUpdateCtx), _indexWriter(ctx._indexWriter), - _hasIndexedFields(_schema->getNumIndexFields() > 0) + _hasIndexedFields(_schema->getNumIndexFields() > 0), + _gidToLidChangeHandler(ctx._gidToLidChangeHandler) { } SearchableFeedView::~SearchableFeedView() {} @@ -257,4 +261,22 @@ SearchableFeedView::forceCommit(SerialNum serialNum, OnForceCommitDoneType onCom _writeService.index().execute(makeLambdaTask([=]() { performIndexForceCommit(serialNum, onCommitDone); })); } +void +SearchableFeedView::notifyPutGidToLidChange(const document::GlobalId &gid, uint32_t lid, SerialNum serialNum) +{ + _gidToLidChangeHandler->notifyPut(gid, lid, serialNum); +} + +void +SearchableFeedView::notifyRemoveGidToLidChange(const document::GlobalId &gid, SerialNum serialNum) +{ + _gidToLidChangeHandler->notifyRemove(gid, serialNum); +} + +void +SearchableFeedView::notifyRemoveDoneGidToLidChange(const document::GlobalId &gid, SerialNum 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 81d81a6cc27..4b536d0adde 100644 --- a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h +++ b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.h @@ -8,6 +8,8 @@ namespace proton { +class IGidToLidChangeHandler; + /** * The feed view used by the searchable sub database. * @@ -23,14 +25,17 @@ public: struct Context { const IIndexWriter::SP &_indexWriter; + const std::shared_ptr<IGidToLidChangeHandler> &_gidToLidChangeHandler; - Context(const IIndexWriter::SP &indexWriter); + Context(const IIndexWriter::SP &indexWriter, + const std::shared_ptr<IGidToLidChangeHandler> &gidToLidChangeHandler); ~Context(); }; private: const IIndexWriter::SP _indexWriter; const bool _hasIndexedFields; + const std::shared_ptr<IGidToLidChangeHandler> _gidToLidChangeHandler; bool hasIndexedFields() const { return _hasIndexedFields; } @@ -81,12 +86,17 @@ private: void performIndexForceCommit(SerialNum serialNum, OnForceCommitDoneType onCommitDone); void forceCommit(SerialNum serialNum, OnForceCommitDoneType onCommitDone) override; + virtual void notifyPutGidToLidChange(const document::GlobalId &gid, uint32_t lid, SerialNum serialNum) override; + virtual void notifyRemoveGidToLidChange(const document::GlobalId &gid, SerialNum serialNum) override; + virtual void notifyRemoveDoneGidToLidChange(const document::GlobalId &gid, SerialNum serialNum) override; + public: SearchableFeedView(const StoreOnlyFeedView::Context &storeOnlyCtx, const PersistentParams ¶ms, const FastAccessFeedView::Context &fastUpdateCtx, Context ctx); virtual ~SearchableFeedView(); const IIndexWriter::SP &getIndexWriter() const { return _indexWriter; } + 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 f88fb07ab29..e9e0120dac1 100644 --- a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp @@ -49,10 +49,8 @@ SearchableDocSubDB::SearchableDocSubDB(const Config &cfg, const Context &ctx) getSubDbName(), ctx._fastUpdCtx._storeOnlyCtx._owner.getDistributionKey()), _numSearcherThreads(cfg._numSearcherThreads), _warmupExecutor(ctx._warmupExecutor), - _realGidToLidChangeHandler(std::make_shared<GidToLidChangeHandler>()) -{ - _gidToLidChangeHandler = _realGidToLidChangeHandler; -} + _gidToLidChangeHandler(std::make_shared<GidToLidChangeHandler>()) +{ } SearchableDocSubDB::~SearchableDocSubDB() { @@ -246,7 +244,7 @@ SearchableDocSubDB::initFeedView(const IAttributeWriter::SP &attrWriter, SearchableFeedView::UP feedView(new SearchableFeedView(getStoreOnlyFeedViewContext(configSnapshot), getFeedViewPersistentParams(), FastAccessFeedView::Context(attrWriter, _docIdLimit), - SearchableFeedView::Context(getIndexWriter()))); + SearchableFeedView::Context(getIndexWriter(), _gidToLidChangeHandler))); // XXX: Not exception safe. _rFeedView.set(SearchableFeedView::SP(feedView.release())); @@ -353,7 +351,7 @@ SearchableDocSubDB::updateLidReuseDelayer(const LidReuseDelayerConfig &config) void SearchableDocSubDB::close() { - _realGidToLidChangeHandler->close(); + _gidToLidChangeHandler->close(); Parent::close(); } diff --git a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.h b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.h index 91ce868937b..fa3ded56c97 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> _realGidToLidChangeHandler; + std::shared_ptr<GidToLidChangeHandler> _gidToLidChangeHandler; // 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 5fbae951536..b3f98b2a8ac 100644 --- a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp @@ -19,7 +19,6 @@ #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> @@ -136,8 +135,7 @@ StoreOnlyDocSubDB::StoreOnlyDocSubDB(const Config &cfg, const Context &ctx) _subDbType(cfg._subDbType), _fileHeaderContext(*this, ctx._fileHeaderContext, _docTypeName, _baseDir), _lidReuseDelayer(), - _commitTimeTracker(TimeStamp::Seconds(3600.0)), - _gidToLidChangeHandler(std::make_shared<DummyGidToLidChangeHandler>()) + _commitTimeTracker(TimeStamp::Seconds(3600.0)) { vespalib::mkdir(_baseDir, false); // Assume parent is created. } @@ -389,7 +387,6 @@ 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 ed540053de3..b9e23e2436c 100644 --- a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h +++ b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h @@ -176,7 +176,6 @@ 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 749078c56ba..3e7e3d6ddfa 100644 --- a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp @@ -12,7 +12,6 @@ #include <vespa/searchcore/proton/common/feedtoken.h> #include <vespa/searchcore/proton/documentmetastore/ilidreusedelayer.h> #include <vespa/searchcore/proton/metrics/feed_metrics.h> -#include <vespa/searchcore/proton/reference/i_gid_to_lid_change_handler.h> #include <vespa/searchlib/common/scheduletaskcallback.h> #include <vespa/vespalib/util/exceptions.h> @@ -27,7 +26,6 @@ using document::DocumentUpdate; using search::index::Schema; using search::makeLambdaTask; using search::IDestructorCallback; -using search::SerialNum; using storage::spi::BucketInfoResult; using storage::spi::Timestamp; using vespalib::IllegalStateException; @@ -58,37 +56,32 @@ private: public: PutDoneContextForMove(std::unique_ptr<FeedToken> token, const FeedOperation::Type opType, - PerDocTypeFeedMetrics &metrics, - IGidToLidChangeHandler &gidToLidChangeHandler, - const document::GlobalId &gid, - uint32_t lid, search::SerialNum serialNum, bool changedDbdId, IDestructorCallback::SP moveDoneCtx) - : PutDoneContext(std::move(token), opType, metrics, gidToLidChangeHandler, gid, lid, serialNum, changedDbdId), + PerDocTypeFeedMetrics &metrics, IDestructorCallback::SP moveDoneCtx) + : PutDoneContext(std::move(token), opType, metrics), _moveDoneCtx(std::move(moveDoneCtx)) {} virtual ~PutDoneContextForMove() {} }; std::shared_ptr<PutDoneContext> -createPutDoneContext(FeedToken::UP &token, FeedOperation::Type opType, PerDocTypeFeedMetrics &metrics, - IGidToLidChangeHandler &gidToLidChangeHandler, - const document::GlobalId &gid, uint32_t lid, - SerialNum serialNum, bool changedDbdId, +createPutDoneContext(FeedToken::UP &token, FeedOperation::Type opType, PerDocTypeFeedMetrics &metrics, bool force, IDestructorCallback::SP moveDoneCtx) { std::shared_ptr<PutDoneContext> result; - if (moveDoneCtx) { - result = std::make_shared<PutDoneContextForMove>(std::move(token), opType, metrics, gidToLidChangeHandler, gid, lid, serialNum, changedDbdId, std::move(moveDoneCtx)); - } else { - result = std::make_shared<PutDoneContext>(std::move(token), opType, metrics, gidToLidChangeHandler, gid, lid, serialNum, changedDbdId); + if (token || force) { + if (moveDoneCtx) { + result = std::make_shared<PutDoneContextForMove>(std::move(token), opType, metrics, std::move(moveDoneCtx)); + } else { + result = std::make_shared<PutDoneContext>(std::move(token), opType, metrics); + } } return result; } std::shared_ptr<PutDoneContext> -createPutDoneContext(FeedToken::UP &token, FeedOperation::Type opType, PerDocTypeFeedMetrics &metrics, IGidToLidChangeHandler &gidToLidChangeHandler, - const document::GlobalId &gid, uint32_t lid, SerialNum serialNum, bool changedDbdId) +createPutDoneContext(FeedToken::UP &token, FeedOperation::Type opType, PerDocTypeFeedMetrics &metrics, bool force) { - return createPutDoneContext(token, opType, metrics, gidToLidChangeHandler, gid, lid, serialNum, changedDbdId, IDestructorCallback::SP()); + return createPutDoneContext(token, opType, metrics, force, IDestructorCallback::SP()); } std::shared_ptr<UpdateDoneContext> @@ -115,13 +108,9 @@ private: public: RemoveDoneContextForMove(std::unique_ptr<FeedToken> token, const FeedOperation::Type opType, PerDocTypeFeedMetrics &metrics, vespalib::Executor &executor, - IDocumentMetaStore &documentMetaStore, - IGidToLidChangeHandler &gidToLidChangeHandler, - const document::GlobalId &gid, - uint32_t lid, - SerialNum serialNum, + IDocumentMetaStore &documentMetaStore, uint32_t lid, IDestructorCallback::SP moveDoneCtx) - : RemoveDoneContext(std::move(token), opType, metrics, executor, documentMetaStore, gidToLidChangeHandler, gid, lid, serialNum), + : RemoveDoneContext(std::move(token), opType, metrics, executor, documentMetaStore, lid), _moveDoneCtx(std::move(moveDoneCtx)) {} virtual ~RemoveDoneContextForMove() {} @@ -130,19 +119,15 @@ public: std::shared_ptr<RemoveDoneContext> createRemoveDoneContext(std::unique_ptr<FeedToken> token, const FeedOperation::Type opType, PerDocTypeFeedMetrics &metrics, vespalib::Executor &executor, - IDocumentMetaStore &documentMetaStore, - IGidToLidChangeHandler &gidToLidChangeHandler, - const document::GlobalId &gid, - uint32_t lid, - SerialNum serialNum, + IDocumentMetaStore &documentMetaStore, uint32_t lid, IDestructorCallback::SP moveDoneCtx) { if (moveDoneCtx) { return std::make_shared<RemoveDoneContextForMove> - (std::move(token), opType, metrics, executor, documentMetaStore, gidToLidChangeHandler, gid, lid, serialNum, std::move(moveDoneCtx)); + (std::move(token), opType, metrics, executor, documentMetaStore, lid, std::move(moveDoneCtx)); } else { return std::make_shared<RemoveDoneContext> - (std::move(token), opType, metrics, executor, documentMetaStore, gidToLidChangeHandler, gid, lid, serialNum); + (std::move(token), opType, metrics, executor, documentMetaStore, lid); } } @@ -217,8 +202,7 @@ StoreOnlyFeedView::StoreOnlyFeedView(const Context &ctx, const PersistentParams _schema(ctx._schema), _writeService(ctx._writeService), _params(params), - _metaStore(_documentMetaStoreContext->get()), - _gidToLidChangeHandler(ctx._gidToLidChangeHandler) + _metaStore(_documentMetaStoreContext->get()) { _docType = _repo->getDocumentType(_params._docTypeName.getName()); } @@ -295,6 +279,7 @@ StoreOnlyFeedView::internalPut(FeedToken::UP token, const PutOperation &putOp) putOp.getSubDbId(), putOp.getLid(), putOp.getPrevSubDbId(), putOp.getPrevLid(), _params._subDbId, doc->toString(true).size(), doc->toString(true).c_str()); + uint32_t oldDocIdLimit = _metaStore.getCommittedDocIdLimit(); adjustMetaStore(putOp, docId); considerEarlyAck(token, putOp.getType()); @@ -302,18 +287,16 @@ StoreOnlyFeedView::internalPut(FeedToken::UP token, const PutOperation &putOp) if (putOp.getValidDbdId(_params._subDbId)) { bool immediateCommit = _commitTimeTracker.needCommit(); - const document::GlobalId &gid = docId.getGlobalId(); std::shared_ptr<PutDoneContext> onWriteDone = createPutDoneContext(token, putOp.getType(), _params._metrics, - _gidToLidChangeHandler, gid, putOp.getLid(), serialNum, putOp.changedDbdId()); + immediateCommit && putOp.getLid() >= oldDocIdLimit); putSummary(serialNum, putOp.getLid(), doc, onWriteDone); putAttributes(serialNum, putOp.getLid(), *doc, immediateCommit, onWriteDone); putIndexedFields(serialNum, putOp.getLid(), doc, immediateCommit, onWriteDone); } if (docAlreadyExists && putOp.changedDbdId()) { assert(!putOp.getValidDbdId(_params._subDbId)); - const document::GlobalId &gid = docId.getGlobalId(); - internalRemove(std::move(token), serialNum, gid, putOp.getPrevLid(), putOp.getType(), IDestructorCallback::SP()); + internalRemove(std::move(token), serialNum, putOp.getPrevLid(), putOp.getType(), IDestructorCallback::SP()); } if (token.get() != NULL) { token->ack(putOp.getType(), _params._metrics); @@ -590,8 +573,7 @@ StoreOnlyFeedView::internalRemove(FeedToken::UP token, const RemoveOperation &rm if (rmOp.getValidPrevDbdId(_params._subDbId)) { if (rmOp.changedDbdId()) { assert(!rmOp.getValidDbdId(_params._subDbId)); - const document::GlobalId &gid = docId.getGlobalId(); - internalRemove(std::move(token), serialNum, gid, rmOp.getPrevLid(), rmOp.getType(), IDestructorCallback::SP()); + internalRemove(std::move(token), serialNum, rmOp.getPrevLid(), rmOp.getType(), IDestructorCallback::SP()); } } if (token.get() != NULL) { @@ -600,7 +582,7 @@ StoreOnlyFeedView::internalRemove(FeedToken::UP token, const RemoveOperation &rm } void -StoreOnlyFeedView::internalRemove(FeedToken::UP token, SerialNum serialNum, const document::GlobalId &gid, Lid lid, +StoreOnlyFeedView::internalRemove(FeedToken::UP token, SerialNum serialNum, Lid lid, FeedOperation::Type opType, IDestructorCallback::SP moveDoneCtx) { removeSummary(serialNum, lid); @@ -608,10 +590,10 @@ StoreOnlyFeedView::internalRemove(FeedToken::UP token, SerialNum serialNum, cons std::shared_ptr<RemoveDoneContext> onWriteDone; if (explicitReuseLid || token) { onWriteDone = createRemoveDoneContext(std::move(token), opType, _params._metrics, _writeService.master(), - _metaStore, _gidToLidChangeHandler, gid, (explicitReuseLid ? lid : 0u), serialNum, moveDoneCtx); + _metaStore, (explicitReuseLid ? lid : 0u), moveDoneCtx); } else if (moveDoneCtx) { onWriteDone = createRemoveDoneContext(FeedToken::UP(), opType, _params._metrics, _writeService.master(), - _metaStore, _gidToLidChangeHandler, gid, 0u, serialNum, moveDoneCtx); + _metaStore, 0u, moveDoneCtx); } bool immediateCommit = _commitTimeTracker.needCommit(); removeAttributes(serialNum, lid, immediateCommit, onWriteDone); @@ -629,12 +611,17 @@ StoreOnlyFeedView::adjustMetaStore(const DocumentOperation &op, const DocumentId op.getLid() != op.getPrevLid()) { moveMetaData(_metaStore, docId, op); + notifyPutGidToLidChange(docId.getGlobalId(), op.getLid(), serialNum); } else { putMetaData(_metaStore, docId, op, _params._subDbType == SubDbType::REMOVED); + if (op.getDbDocumentId() != op.getPrevDbDocumentId()) { + notifyPutGidToLidChange(docId.getGlobalId(), op.getLid(), serialNum); + } } } else if (op.getValidPrevDbdId(_params._subDbId)) { - _gidToLidChangeHandler.notifyRemove(docId.getGlobalId(), serialNum); removeMetaData(_metaStore, docId, op, _params._subDbType == SubDbType::REMOVED); + notifyRemoveGidToLidChange(docId.getGlobalId(), serialNum); + notifyRemoveDoneGidToLidChange(docId.getGlobalId(), serialNum); } _metaStore.commit(serialNum, serialNum); } @@ -663,14 +650,12 @@ StoreOnlyFeedView::removeDocuments(const RemoveDocumentsOperation &op, bool remo bool explicitReuseLids = false; if (useDMS) { std::vector<document::GlobalId> gidsToRemove(getGidsToRemove(_metaStore, lidsToRemove)); - for (const auto &gid : gidsToRemove) { - _gidToLidChangeHandler.notifyRemove(gid, serialNum); - } _metaStore.removeBatch(lidsToRemove, ctx->getDocIdLimit()); - _metaStore.commit(serialNum, serialNum); for (const auto &gid : gidsToRemove) { - _gidToLidChangeHandler.notifyRemoveDone(gid, serialNum); + notifyRemoveGidToLidChange(gid, serialNum); + notifyRemoveDoneGidToLidChange(gid, serialNum); } + _metaStore.commit(serialNum, serialNum); explicitReuseLids = _lidReuseDelayer.delayReuse(lidsToRemove); } std::shared_ptr<search::IDestructorCallback> onWriteDone; @@ -754,28 +739,26 @@ StoreOnlyFeedView::handleMove(const MoveOperation &moveOp, IDestructorCallback:: moveOp.getSubDbId(), moveOp.getLid(), moveOp.getPrevSubDbId(), moveOp.getPrevLid(), _params._subDbId, doc->toString(true).size(), doc->toString(true).c_str()); + uint32_t oldDocIdLimit = _metaStore.getCommittedDocIdLimit(); adjustMetaStore(moveOp, docId); bool docAlreadyExists = moveOp.getValidPrevDbdId(_params._subDbId); if (moveOp.getValidDbdId(_params._subDbId)) { bool immediateCommit = _commitTimeTracker.needCommit(); - const document::GlobalId &gid = docId.getGlobalId(); FeedToken::UP token; std::shared_ptr<PutDoneContext> onWriteDone = createPutDoneContext(token, moveOp.getType(), _params._metrics, - _gidToLidChangeHandler, gid, moveOp.getLid(), - serialNum, moveOp.changedDbdId(), doneCtx); + immediateCommit && (moveOp.getLid() >= oldDocIdLimit), doneCtx); putSummary(serialNum, moveOp.getLid(), doc, onWriteDone); putAttributes(serialNum, moveOp.getLid(), *doc, immediateCommit, onWriteDone); putIndexedFields(serialNum, moveOp.getLid(), doc, immediateCommit, onWriteDone); } if (docAlreadyExists && moveOp.changedDbdId()) { - const document::GlobalId &gid = docId.getGlobalId(); - internalRemove(FeedToken::UP(), serialNum, gid, moveOp.getPrevLid(), moveOp.getType(), doneCtx); + internalRemove(FeedToken::UP(), serialNum, moveOp.getPrevLid(), moveOp.getType(), doneCtx); } } void -StoreOnlyFeedView::heartBeat(SerialNum serialNum) +StoreOnlyFeedView::heartBeat(search::SerialNum serialNum) { assert(_writeService.master().isCurrentThread()); _metaStore.removeAllOldGenerations(); @@ -824,4 +807,13 @@ StoreOnlyFeedView::getDocumentMetaStorePtr() const return &_documentMetaStoreContext->get(); } +void +StoreOnlyFeedView::notifyPutGidToLidChange(const document::GlobalId &, uint32_t, SerialNum) {} + +void +StoreOnlyFeedView::notifyRemoveGidToLidChange(const document::GlobalId &, SerialNum) {} + +void +StoreOnlyFeedView::notifyRemoveDoneGidToLidChange(const document::GlobalId &, SerialNum) {} + } // namespace proton diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h index 3b3a5efbe24..ec3003fb5d6 100644 --- a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h +++ b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.h @@ -22,8 +22,6 @@ namespace search { class IDestructorCallback; } -namespace document { class GLobalId; } - namespace proton { class IReplayConfig; @@ -33,7 +31,6 @@ class OperationDoneContext; class PutDoneContext; class RemoveDoneContext; class CommitTimeTracker; -class IGidToLidChangeHandler; namespace documentmetastore { class ILidReuseDelayer; } @@ -71,7 +68,6 @@ 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; @@ -80,7 +76,6 @@ 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, @@ -88,7 +83,6 @@ public: : _summaryAdapter(summaryAdapter), _schema(schema), _documentMetaStoreContext(documentMetaStoreContext), - _gidToLidChangeHandler(gidToLidChangeHandler), _repo(repo), _writeService(writeService), _lidReuseDelayer(lidReuseDelayer), @@ -149,7 +143,6 @@ protected: searchcorespi::index::IThreadingService &_writeService; PersistentParams _params; IDocumentMetaStore &_metaStore; - IGidToLidChangeHandler &_gidToLidChangeHandler; private: searchcorespi::index::IThreadService & summaryExecutor() { @@ -172,7 +165,7 @@ private: void internalPut(FeedTokenUP token, const PutOperation &putOp); void internalUpdate(FeedTokenUP token, const UpdateOperation &updOp); - bool lookupDocId(const document::DocumentId &docId, Lid & lid) const; + bool lookupDocId(const document::DocumentId &gid, Lid & lid) const; void internalRemove(FeedTokenUP token, const RemoveOperation &rmOp); // Removes documents from meta store and document store. @@ -180,12 +173,16 @@ private: size_t removeDocuments(const RemoveDocumentsOperation &op, bool remove_index_and_attribute_fields, bool immediateCommit); - void internalRemove(FeedTokenUP token, SerialNum serialNum, const document::GlobalId &gid, Lid lid, + void internalRemove(FeedTokenUP token, SerialNum serialNum, Lid lid, FeedOperation::Type opType, std::shared_ptr<search::IDestructorCallback> moveDoneCtx); // Ack token early if visibility delay is nonzero void considerEarlyAck(FeedTokenUP &token, FeedOperation::Type opType); + virtual void notifyPutGidToLidChange(const document::GlobalId &gid, uint32_t lid, SerialNum serialNum); + virtual void notifyRemoveGidToLidChange(const document::GlobalId &gid, SerialNum serialNum); + virtual void notifyRemoveDoneGidToLidChange(const document::GlobalId &gid, SerialNum serialNum); + void makeUpdatedDocument(SerialNum serialNum, Lid lid, DocumentUpdate::SP upd, OnOperationDoneType onWriteDone,PromisedDoc promisedDoc, PromisedStream promisedStream); @@ -232,7 +229,6 @@ public: searchcorespi::index::IThreadingService &getWriteService() { return _writeService; } documentmetastore::ILidReuseDelayer &getLidReuseDelayer() { return _lidReuseDelayer; } CommitTimeTracker &getCommitTimeTracker() { return _commitTimeTracker; } - IGidToLidChangeHandler &getGidToLidChangeHandler() const { return _gidToLidChangeHandler; } /** * Implements IFeedView. |