summaryrefslogtreecommitdiffstats
path: root/searchcorespi
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahooinc.com>2022-03-07 16:18:13 +0100
committerGitHub <noreply@github.com>2022-03-07 16:18:13 +0100
commit82dcc119915be3c55af0bb78eac0698f8d0d33cf (patch)
treeddb335c74e6e6ab1b559d2237b24c28e6281a006 /searchcorespi
parent2ae65202ead09ca6eb5b7653c9c8735617b260d2 (diff)
parentafff1df19a3f532648bb55aab8dc15457ff9f062 (diff)
Merge pull request #21578 from vespa-engine/balder/do-not-ever-use-testcode-in-production
Wire in the real clcok and use an explicit RequestContext instead of …
Diffstat (limited to 'searchcorespi')
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp3
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/ithreadingservice.h6
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.cpp16
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.h25
4 files changed, 43 insertions, 7 deletions
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp
index d8bbf435479..f740cec7900 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp
@@ -432,7 +432,8 @@ IndexMaintainer::swapInNewIndex(LockGuard & guard,
LOG(debug, "Warming up a disk index.");
indexes = std::make_shared<WarmupIndexCollection>
(_warmupConfig, getLeaf(guard, _source_list, true), indexes,
- static_cast<IDiskIndex &>(source), _ctx.getWarmupExecutor(), *this);
+ static_cast<IDiskIndex &>(source), _ctx.getWarmupExecutor(),
+ _ctx.getThreadingService().clock(), *this);
} else {
LOG(debug, "No warmup needed as it is a memory index that is mapped in.");
}
diff --git a/searchcorespi/src/vespa/searchcorespi/index/ithreadingservice.h b/searchcorespi/src/vespa/searchcorespi/index/ithreadingservice.h
index 60997d6666b..c325d5ded11 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/ithreadingservice.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/ithreadingservice.h
@@ -5,7 +5,10 @@
class FNET_Transport;
-namespace vespalib { class ISequencedTaskExecutor; }
+namespace vespalib {
+ class ISequencedTaskExecutor;
+ class Clock;
+}
namespace searchcorespi::index {
/**
@@ -76,6 +79,7 @@ struct IThreadingService
virtual vespalib::ThreadExecutor &summary() = 0;
virtual vespalib::Executor &shared() = 0;
virtual FNET_Transport &transport() = 0;
+ virtual const vespalib::Clock &clock() const = 0;
virtual vespalib::ISequencedTaskExecutor &indexFieldInverter() = 0;
virtual vespalib::ISequencedTaskExecutor &indexFieldWriter() = 0;
virtual vespalib::ISequencedTaskExecutor &attributeFieldWriter() = 0;
diff --git a/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.cpp b/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.cpp
index b9cbdab1c0a..e6e7d777656 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.cpp
@@ -1,10 +1,13 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
#include "warmupindexcollection.h"
#include "idiskindex.h"
#include <vespa/searchlib/fef/matchdatalayout.h>
#include <vespa/searchlib/query/tree/termnodes.h>
#include <vespa/vespalib/stllike/hash_map.hpp>
#include <vespa/vespalib/stllike/hash_set.h>
+#include <vespa/vespalib/stllike/asciistream.h>
+#include <vespa/eval/eval/value.h>
#include <thread>
#include <vespa/log/log.h>
@@ -31,12 +34,14 @@ WarmupIndexCollection::WarmupIndexCollection(const WarmupConfig & warmupConfig,
ISearchableIndexCollection::SP next,
IndexSearchable & warmup,
vespalib::Executor & executor,
+ const vespalib::Clock & clock,
IWarmupDone & warmupDone) :
_warmupConfig(warmupConfig),
_prev(std::move(prev)),
_next(std::move(next)),
_warmup(warmup),
_executor(executor),
+ _clock(clock),
_warmupDone(warmupDone),
_warmupEndTime(vespalib::steady_clock::now() + warmupConfig.getDuration()),
_handledTerms(std::make_unique<FieldTermMap>()),
@@ -223,12 +228,21 @@ WarmupIndexCollection::drainPending() {
_pendingTasks.waitForZeroRefCount();
}
+WarmupIndexCollection::WarmupRequestContext::WarmupRequestContext(const vespalib::Clock & clock)
+ : _doom(clock, vespalib::steady_time::max(), vespalib::steady_time::max(), false)
+{}
+WarmupIndexCollection::WarmupRequestContext::~WarmupRequestContext() = default;
+
+std::unique_ptr<vespalib::eval::Value>
+WarmupIndexCollection::WarmupRequestContext::get_query_tensor(const vespalib::string&) const {
+ return {};
+}
WarmupIndexCollection::WarmupTask::WarmupTask(std::unique_ptr<MatchData> md, std::shared_ptr<WarmupIndexCollection> warmup)
: _warmup(std::move(warmup)),
_retainGuard(_warmup->_pendingTasks),
_matchData(std::move(md)),
_bluePrint(),
- _requestContext()
+ _requestContext(warmup->_clock)
{
}
diff --git a/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.h b/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.h
index b0b2952bee8..c2d70b4fd5c 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.h
@@ -4,10 +4,11 @@
#include "isearchableindexcollection.h"
#include "warmupconfig.h"
-#include <vespa/vespalib/util/threadexecutor.h>
+#include <vespa/searchlib/attribute/attribute_blueprint_params.h>
+#include <vespa/vespalib/util/doom.h>
+#include <vespa/vespalib/util/executor.h>
#include <vespa/vespalib/util/monitored_refcount.h>
#include <vespa/vespalib/util/retain_guard.h>
-#include <vespa/searchlib/queryeval/fake_requestcontext.h>
namespace searchcorespi {
@@ -34,6 +35,7 @@ public:
ISearchableIndexCollection::SP next,
IndexSearchable & warmup,
vespalib::Executor & executor,
+ const vespalib::Clock & clock,
IWarmupDone & warmupDone);
~WarmupIndexCollection() override;
// Implements IIndexCollection
@@ -70,8 +72,22 @@ public:
void drainPending();
private:
typedef search::fef::MatchData MatchData;
- typedef search::queryeval::FakeRequestContext FakeRequestContext;
typedef vespalib::Executor::Task Task;
+ class WarmupRequestContext : public IRequestContext {
+ using IAttributeVector = search::attribute::IAttributeVector;
+ using AttributeBlueprintParams = search::attribute::AttributeBlueprintParams;
+ public:
+ WarmupRequestContext(const vespalib::Clock & clock);
+ ~WarmupRequestContext() override;
+ const vespalib::Doom & getDoom() const override { return _doom; }
+ const IAttributeVector *getAttribute(const vespalib::string &) const override { return nullptr; }
+ const IAttributeVector *getAttributeStableEnum(const vespalib::string &) const override { return nullptr; }
+ std::unique_ptr<vespalib::eval::Value> get_query_tensor(const vespalib::string&) const override;
+ const AttributeBlueprintParams& get_attribute_blueprint_params() const override { return _params; }
+ private:
+ const vespalib::Doom _doom;
+ const AttributeBlueprintParams _params;
+ };
class WarmupTask : public Task {
public:
WarmupTask(std::unique_ptr<MatchData> md, std::shared_ptr<WarmupIndexCollection> warmup);
@@ -90,7 +106,7 @@ private:
vespalib::RetainGuard _retainGuard;
std::unique_ptr<MatchData> _matchData;
Blueprint::UP _bluePrint;
- FakeRequestContext _requestContext;
+ WarmupRequestContext _requestContext;
};
void fireWarmup(Task::UP task);
@@ -101,6 +117,7 @@ private:
ISearchableIndexCollection::SP _next;
IndexSearchable & _warmup;
vespalib::Executor & _executor;
+ const vespalib::Clock & _clock;
IWarmupDone & _warmupDone;
vespalib::steady_time _warmupEndTime;
std::mutex _lock;