aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-11-21 12:45:05 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-11-21 12:45:05 +0000
commiteb1f948766de45fbb1c952b072d3d83669d55f67 (patch)
tree961d6716ba5bbf56889c6a831897d190948924b2 /searchcore
parentc7b155bcc9e3baafc590cf32ea7f8e490034314b (diff)
Consolidate code to do force-commit-and-wait.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/CMakeLists.txt1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/documentdb.cpp17
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp4
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/ifeedview.h1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp6
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.