diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-11-21 12:45:05 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-11-21 12:45:05 +0000 |
commit | eb1f948766de45fbb1c952b072d3d83669d55f67 (patch) | |
tree | 961d6716ba5bbf56889c6a831897d190948924b2 /searchcore | |
parent | c7b155bcc9e3baafc590cf32ea7f8e490034314b (diff) |
Consolidate code to do force-commit-and-wait.
Diffstat (limited to 'searchcore')
5 files changed, 7 insertions, 22 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt b/searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt index 56210fe0c85..511adbe66e9 100644 --- a/searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt +++ b/searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt @@ -54,6 +54,7 @@ vespa_add_library(searchcore_server STATIC health_adapter.cpp heart_beat_job.cpp idocumentdbowner.cpp + ifeedview.cpp ireplayconfig.cpp job_tracked_maintenance_job.cpp lid_space_compaction_handler.cpp diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp index 8e797d62373..cfe3e9b0d1c 100644 --- a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp @@ -113,13 +113,6 @@ forceCommitAndWait(std::shared_ptr<IFeedView> feedView, SerialNum serialNum, T k gate.await(); } -void -forceCommitAndWait(std::shared_ptr<IFeedView> feedView, SerialNum serialNum) { - vespalib::Gate gate; - feedView->forceCommit(CommitParam(serialNum), std::make_shared<GateCallback>(gate)); - gate.await(); -} - } template <typename FunctionType> @@ -392,12 +385,8 @@ DocumentDB::enterOnlineState() { // Called by executor thread assert(_writeService.master().isCurrentThread()); - { - vespalib::Gate gate; - // Ensure that all replayed operations are committed to memory structures - _feedView.get()->forceCommit(CommitParam(_feedHandler->getSerialNum()), std::make_shared<GateCallback>(gate)); - gate.await(); - } + // Ensure that all replayed operations are committed to memory structures + _feedView.get()->forceCommitAndWait(CommitParam(_feedHandler->getSerialNum())); (void) _state.enterOnlineState(); // Consider delayed pruning of transaction log and config history @@ -568,7 +557,7 @@ DocumentDB::close() _metricsWireService.cleanAttributes(metrics.notReady.attributes); masterExecute([this] () { - forceCommitAndWait(_feedView.get(), getCurrentSerialNumber()); + _feedView.get()->forceCommitAndWait(search::CommitParam(getCurrentSerialNumber())); closeSubDBs(); }); _writeService.sync_all_executors(); diff --git a/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp b/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp index cfaf1d7948a..bb03f48882f 100644 --- a/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp @@ -303,9 +303,7 @@ void FeedHandler::performEof() { assert(_writeService.master().isCurrentThread()); - vespalib::Gate gate; - _activeFeedView->forceCommit(CommitParam(_serialNum), std::make_shared<vespalib::GateCallback>(gate)); - gate.await(); + _activeFeedView->forceCommitAndWait(CommitParam(_serialNum)); LOG(debug, "Visiting done for transaction log domain '%s', eof received", _tlsMgr.getDomainName().c_str()); // Replay must be complete if (_replay_end_serial_num != _serialNum) { diff --git a/searchcore/src/vespa/searchcore/proton/server/ifeedview.h b/searchcore/src/vespa/searchcore/proton/server/ifeedview.h index 4feb7d013ea..14e6d6811e7 100644 --- a/searchcore/src/vespa/searchcore/proton/server/ifeedview.h +++ b/searchcore/src/vespa/searchcore/proton/server/ifeedview.h @@ -62,6 +62,7 @@ public: virtual void forceCommit(const CommitParam & param, DoneCallback onDone) = 0; void forceCommit(CommitParam param) { forceCommit(param, DoneCallback()); } void forceCommit(search::SerialNum serialNum) { forceCommit(CommitParam(serialNum)); } + void forceCommitAndWait(CommitParam param); virtual void handlePruneRemovedDocuments(const PruneRemovedDocumentsOperation & pruneOp) = 0; virtual void handleCompactLidSpace(const CompactLidSpaceOperation &op) = 0; }; diff --git a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp index 6883dad557c..0aaf0bfb06f 100644 --- a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp @@ -16,7 +16,6 @@ #include <vespa/searchlib/fef/indexproperties.h> #include <vespa/searchlib/fef/properties.h> #include <vespa/eval/eval/fast_value.h> -#include <vespa/vespalib/util/destructor_callbacks.h> using vespa::config::search::RankProfilesConfig; using proton::matching::MatchingStats; @@ -245,10 +244,7 @@ SearchableDocSubDB::reconfigure(std::unique_ptr<Configure> configure) { assert(_writeService.master().isCurrentThread()); - vespalib::Gate gate; - StoreOnlyDocSubDB::getFeedView()->forceCommit(search::CommitParam(_getSerialNum.getSerialNum()), - std::make_shared<vespalib::GateCallback>(gate)); - gate.await(); + getFeedView()->forceCommitAndWait(search::CommitParam(_getSerialNum.getSerialNum())); // Everything should be quiet now. |