summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-06-12 11:48:38 +0200
committerGitHub <noreply@github.com>2018-06-12 11:48:38 +0200
commit23d9213d4f58410cd78410dc10950b3bab86c563 (patch)
tree68f4e14449fe5581fde1a950380286c3d973e3f5 /searchcore
parent49ea989662f402f6c96737636b497724a4bb457f (diff)
parent06d3ba8c9e0edea16dafce70c13280330c4ab59f (diff)
Merge branch 'master' into balder/reduce-code-visibility-rebased
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.cpp1
-rw-r--r--searchcore/src/tests/proton/index/fusionrunner_test.cpp1
-rw-r--r--searchcore/src/versiontag.mak34
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp15
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.h8
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp13
-rw-r--r--searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.h11
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/executor_thread_service.h8
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.cpp55
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.h33
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fast_access_feed_view.cpp1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp5
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/visibilityhandler.cpp1
16 files changed, 82 insertions, 108 deletions
diff --git a/searchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.cpp b/searchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.cpp
index 0a73e0b2b6e..e774728b41e 100644
--- a/searchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/feedhandler/feedhandler_test.cpp
@@ -28,6 +28,7 @@
#include <vespa/searchlib/transactionlog/translogserver.h>
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/vespalib/util/closuretask.h>
+#include <vespa/vespalib/util/lambdatask.h>
#include <vespa/vespalib/util/exceptions.h>
#include <vespa/vespalib/io/fileutil.h>
diff --git a/searchcore/src/tests/proton/index/fusionrunner_test.cpp b/searchcore/src/tests/proton/index/fusionrunner_test.cpp
index e6efa246484..429452df2ec 100644
--- a/searchcore/src/tests/proton/index/fusionrunner_test.cpp
+++ b/searchcore/src/tests/proton/index/fusionrunner_test.cpp
@@ -11,6 +11,7 @@
#include <vespa/searchlib/index/docbuilder.h>
#include <vespa/searchlib/index/dummyfileheadercontext.h>
#include <vespa/searchlib/query/tree/simplequery.h>
+#include <vespa/searchlib/common/isequencedtaskexecutor.h>
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/fastos/file.h>
#include <set>
diff --git a/searchcore/src/versiontag.mak b/searchcore/src/versiontag.mak
deleted file mode 100644
index 3f8d09a48e0..00000000000
--- a/searchcore/src/versiontag.mak
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-VTAG_DATE=$(shell date +%Y.%m.%d-%H.%M.%S)
-VTAG_SYSTEM=$(shell uname -s)
-VTAG_SYSTEM_REV=$(shell uname -r)
-VTAG_BUILDER=$(shell (whoami) 2>/dev/null||logname)@$(shell uname -n)
-ifneq (X$(SPECIFIED_VTAG),XDISABLE)
- ifeq (X$(UNAME), XWin32)
- VTAG=-DV_TAG='\"$(SPECIFIED_VTAG)\"'
- else
- VTAG=-DV_TAG='"$(SPECIFIED_VTAG)"'
- endif
-else
- ifeq (X$(UNAME), XWin32)
- VTAG=
- else
- VTAG_TAG=$(shell cat $(TOP)/CVS/Tag 2>/dev/null | sed "s/^.//" 2>/dev/null)
- ifeq (X$(VTAG_TAG),X)
- VTAG_TAG=CURRENT
- endif
- ifeq ($(findstring _RELEASE, $(VTAG_TAG)),_RELEASE)
- VTAG_SYSTEM=$(shell uname -s)
- VTAG=-DV_TAG='"$(VTAG_TAG)-$(VTAG_SYSTEM)"'
- else
- VTAG_DATE=$(shell date +%Y.%m.%d-%H:%M:%S)
- VTAG_SYSTEM=$(shell (whoami) 2>/dev/null||logname)@$(shell uname -n)-$(shell uname -s)-$(shell uname -r)
- VTAG=-DV_TAG='"$(VTAG_TAG)-$(VTAG_SYSTEM)-$(VTAG_DATE)"'
- endif
- endif
-endif
-VTAG+= -DV_TAG_DATE='"$(VTAG_DATE)"'
-VTAG+= -DV_TAG_SYSTEM='"$(VTAG_SYSTEM)"'
-VTAG+= -DV_TAG_SYSTEM_REV='"$(VTAG_SYSTEM_REV)"'
-VTAG+= -DV_TAG_BUILDER='"$(VTAG_BUILDER)"'
-
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp
index 2d78f837ecf..239f91b449f 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp
@@ -21,6 +21,7 @@ LOG_SETUP(".proton.server.attributeadapter");
using namespace document;
using namespace search;
using search::attribute::ImportedAttributeVector;
+using ExecutorId = search::ISequencedTaskExecutor::ExecutorId;
namespace proton {
@@ -50,7 +51,7 @@ AttributeWriter::WriteField::buildFieldPath(const DocumentType &docType)
_fieldPath = std::move(fp);
}
-AttributeWriter::WriteContext::WriteContext(uint32_t executorId)
+AttributeWriter::WriteContext::WriteContext(ExecutorId executorId)
: _executorId(executorId),
_fields(),
_hasStructFieldAttribute(false)
@@ -214,15 +215,15 @@ struct BatchUpdateTask : public vespalib::Executor::Task {
class FieldContext
{
- vespalib::string _name;
- uint32_t _executorId;
- AttributeVector *_attr;
+ vespalib::string _name;
+ ExecutorId _executorId;
+ AttributeVector *_attr;
public:
FieldContext(ISequencedTaskExecutor &writer, AttributeVector *attr);
~FieldContext();
bool operator<(const FieldContext &rhs) const;
- uint32_t getExecutorId() const { return _executorId; }
+ ExecutorId getExecutorId() const { return _executorId; }
AttributeVector *getAttribute() const { return _attr; }
};
@@ -554,7 +555,7 @@ AttributeWriter::update(SerialNum serialNum, const DocumentUpdate &upd, Document
// document and attribute.
if (attrp->getStatus().getLastSyncToken() >= serialNum)
continue;
- args[_attributeFieldWriter.getExecutorId(attrp->getName())]->_updates.emplace_back(attrp, &fupd);
+ args[_attributeFieldWriter.getExecutorId(attrp->getName()).getId()]->_updates.emplace_back(attrp, &fupd);
LOG(debug, "About to apply update for docId %u in attribute vector '%s'.", lid, attrp->getName().c_str());
}
// NOTE: The lifetime of the field update will be ensured by keeping the document update alive
@@ -562,7 +563,7 @@ AttributeWriter::update(SerialNum serialNum, const DocumentUpdate &upd, Document
for (uint32_t id(0); id < args.size(); id++) {
if ( ! args[id]->_updates.empty()) {
args[id]->_onWriteDone = onWriteDone;
- _attributeFieldWriter.executeTask(id, std::move(args[id]));
+ _attributeFieldWriter.executeTask(ExecutorId(id), std::move(args[id]));
}
}
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.h b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.h
index bed2a7cb23d..f89089ed335 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.h
@@ -5,6 +5,7 @@
#include "i_attribute_writer.h"
#include <vespa/searchcore/proton/common/commit_time_tracker.h>
#include <vespa/document/base/fieldpath.h>
+#include <vespa/searchlib/common/isequencedtaskexecutor.h>
namespace document { class DocumentType; }
@@ -25,6 +26,7 @@ private:
const IAttributeManager::SP _mgr;
search::ISequencedTaskExecutor &_attributeFieldWriter;
const std::vector<search::AttributeVector *> &_writableAttributes;
+ using ExecutorId = search::ISequencedTaskExecutor::ExecutorId;
public:
class WriteField
{
@@ -41,17 +43,17 @@ public:
};
class WriteContext
{
- uint32_t _executorId;
+ ExecutorId _executorId;
std::vector<WriteField> _fields;
bool _hasStructFieldAttribute;
public:
- WriteContext(uint32_t executorId);
+ WriteContext(ExecutorId executorId);
WriteContext(WriteContext &&rhs);
~WriteContext();
WriteContext &operator=(WriteContext &&rhs);
void buildFieldPaths(const DocumentType &docType);
void add(AttributeVector &attr);
- uint32_t getExecutorId() const { return _executorId; }
+ ExecutorId getExecutorId() const { return _executorId; }
const std::vector<WriteField> &getFields() const { return _fields; }
bool hasStructFieldAttribute() const { return _hasStructFieldAttribute; }
};
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp
index b4f087c65c0..ef818f7b407 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.cpp
@@ -87,8 +87,7 @@ std::shared_ptr<ShrinkLidSpaceFlushTarget> allocShrinker(const AttributeVector::
}
-AttributeManager::AttributeWrap::AttributeWrap(const AttributeVectorSP & a,
- bool isExtra_)
+AttributeManager::AttributeWrap::AttributeWrap(const AttributeVectorSP & a, bool isExtra_)
: _attr(a),
_isExtra(isExtra_)
{
@@ -100,9 +99,7 @@ AttributeManager::AttributeWrap::AttributeWrap()
{
}
-AttributeManager::AttributeWrap::~AttributeWrap()
-{
-}
+AttributeManager::AttributeWrap::~AttributeWrap() = default;
AttributeManager::AttributeWrap
AttributeManager::AttributeWrap::extraAttribute(const AttributeVectorSP &a)
@@ -128,9 +125,7 @@ AttributeManager::FlushableWrap::FlushableWrap(FlushableAttributeSP flusher, Shr
{
}
-AttributeManager::FlushableWrap::~FlushableWrap()
-{
-}
+AttributeManager::FlushableWrap::~FlushableWrap() = default;
AttributeVector::SP
AttributeManager::internalAddAttribute(const AttributeSpec &spec,
@@ -168,7 +163,7 @@ AttributeManager::findAttribute(const vespalib::string &name) const
{
AttributeMap::const_iterator itr = _attributes.find(name);
return (itr != _attributes.end())
- ? static_cast<const AttributeVector::SP &>(itr->second.getAttribute())
+ ? itr->second.getAttribute()
: AttributeVector::SP();
}
diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h
index b8f245d9c68..f904c1b4b53 100644
--- a/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h
+++ b/searchcore/src/vespa/searchcore/proton/attribute/attributemanager.h
@@ -63,7 +63,7 @@ private:
static AttributeWrap extraAttribute(const AttributeVectorSP &a);
static AttributeWrap normalAttribute(const AttributeVectorSP &a);
bool isExtra() const { return _isExtra; }
- const AttributeVectorSP getAttribute() const { return _attr; }
+ const AttributeVectorSP & getAttribute() const { return _attr; }
};
class FlushableWrap
diff --git a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.h b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.h
index 0e9298e3e51..d4c349bd1d7 100644
--- a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.h
+++ b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.h
@@ -7,7 +7,6 @@
#include <vespa/searchlib/common/sequencedtaskexecutor.h>
#include <vespa/searchcore/proton/common/monitored_refcount.h>
-
namespace proton {
/*
@@ -16,12 +15,12 @@ namespace proton {
*/
class GidToLidChangeListener : public IGidToLidChangeListener
{
- search::ISequencedTaskExecutor &_attributeFieldWriter;
- uint32_t _executorId;
+ search::ISequencedTaskExecutor &_attributeFieldWriter;
+ search::ISequencedTaskExecutor::ExecutorId _executorId;
std::shared_ptr<search::attribute::ReferenceAttribute> _attr;
- MonitoredRefCount &_refCount;
- vespalib::string _name;
- vespalib::string _docTypeName;
+ MonitoredRefCount &_refCount;
+ vespalib::string _name;
+ vespalib::string _docTypeName;
public:
GidToLidChangeListener(search::ISequencedTaskExecutor &attributeFieldWriter,
diff --git a/searchcore/src/vespa/searchcore/proton/server/executor_thread_service.h b/searchcore/src/vespa/searchcore/proton/server/executor_thread_service.h
index c938288c714..4b1e8408c8e 100644
--- a/searchcore/src/vespa/searchcore/proton/server/executor_thread_service.h
+++ b/searchcore/src/vespa/searchcore/proton/server/executor_thread_service.h
@@ -24,15 +24,15 @@ public:
/**
* Implements IThreadService
*/
- virtual vespalib::Executor::Task::UP execute(vespalib::Executor::Task::UP task) override {
+ vespalib::Executor::Task::UP execute(vespalib::Executor::Task::UP task) override {
return _executor.execute(std::move(task));
}
- virtual void run(vespalib::Runnable &runnable) override;
- virtual vespalib::Syncable &sync() override {
+ void run(vespalib::Runnable &runnable) override;
+ vespalib::Syncable &sync() override {
_executor.sync();
return *this;
}
- virtual bool isCurrentThread() const override;
+ bool isCurrentThread() const override;
size_t getNumThreads() const override { return _executor.getNumThreads(); }
};
diff --git a/searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.cpp b/searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.cpp
index 1c4825753a8..3d9525f0471 100644
--- a/searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.cpp
@@ -1,16 +1,15 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "executorthreadingservice.h"
-#include <vespa/vespalib/util/executor.h>
#include <vespa/searchcore/proton/metrics/executor_threading_service_stats.h>
+#include <vespa/searchlib/common/sequencedtaskexecutor.h>
using vespalib::ThreadStackExecutorBase;
+using search::SequencedTaskExecutor;
namespace proton {
-ExecutorThreadingService::ExecutorThreadingService(uint32_t threads,
- uint32_t stackSize,
- uint32_t taskLimit)
+ExecutorThreadingService::ExecutorThreadingService(uint32_t threads, uint32_t stackSize, uint32_t taskLimit)
: _masterExecutor(1, stackSize),
_indexExecutor(1, stackSize, taskLimit),
@@ -18,14 +17,13 @@ ExecutorThreadingService::ExecutorThreadingService(uint32_t threads,
_masterService(_masterExecutor),
_indexService(_indexExecutor),
_summaryService(_summaryExecutor),
- _indexFieldInverter(threads, taskLimit),
- _indexFieldWriter(threads, taskLimit),
- _attributeFieldWriter(threads, taskLimit)
+ _indexFieldInverter(std::make_unique<SequencedTaskExecutor>(threads, taskLimit)),
+ _indexFieldWriter(std::make_unique<SequencedTaskExecutor>(threads, taskLimit)),
+ _attributeFieldWriter(std::make_unique<SequencedTaskExecutor>(threads, taskLimit))
{
}
-ExecutorThreadingService::~ExecutorThreadingService() {
-}
+ExecutorThreadingService::~ExecutorThreadingService() = default;
vespalib::Syncable &
ExecutorThreadingService::sync()
@@ -34,11 +32,11 @@ ExecutorThreadingService::sync()
if (!isMasterThread) {
_masterExecutor.sync();
}
- _attributeFieldWriter.sync();
+ _attributeFieldWriter->sync();
_indexExecutor.sync();
_summaryExecutor.sync();
- _indexFieldInverter.sync();
- _indexFieldWriter.sync();
+ _indexFieldInverter->sync();
+ _indexFieldWriter->sync();
if (!isMasterThread) {
_masterExecutor.sync();
}
@@ -50,13 +48,13 @@ ExecutorThreadingService::shutdown()
{
_masterExecutor.shutdown();
_masterExecutor.sync();
- _attributeFieldWriter.sync();
+ _attributeFieldWriter->sync();
_summaryExecutor.shutdown();
_summaryExecutor.sync();
_indexExecutor.shutdown();
_indexExecutor.sync();
- _indexFieldInverter.sync();
- _indexFieldWriter.sync();
+ _indexFieldInverter->sync();
+ _indexFieldWriter->sync();
}
void
@@ -64,9 +62,9 @@ ExecutorThreadingService::setTaskLimit(uint32_t taskLimit, uint32_t summaryTaskL
{
_indexExecutor.setTaskLimit(taskLimit);
_summaryExecutor.setTaskLimit(summaryTaskLimit);
- _indexFieldInverter.setTaskLimit(taskLimit);
- _indexFieldWriter.setTaskLimit(taskLimit);
- _attributeFieldWriter.setTaskLimit(taskLimit);
+ _indexFieldInverter->setTaskLimit(taskLimit);
+ _indexFieldWriter->setTaskLimit(taskLimit);
+ _attributeFieldWriter->setTaskLimit(taskLimit);
}
ExecutorThreadingServiceStats
@@ -75,9 +73,24 @@ ExecutorThreadingService::getStats()
return ExecutorThreadingServiceStats(_masterExecutor.getStats(),
_indexExecutor.getStats(),
_summaryExecutor.getStats(),
- _indexFieldInverter.getStats(),
- _indexFieldWriter.getStats(),
- _attributeFieldWriter.getStats());
+ _indexFieldInverter->getStats(),
+ _indexFieldWriter->getStats(),
+ _attributeFieldWriter->getStats());
+}
+
+search::ISequencedTaskExecutor &
+ExecutorThreadingService::indexFieldInverter() {
+ return *_indexFieldInverter;
+}
+
+search::ISequencedTaskExecutor &
+ExecutorThreadingService::indexFieldWriter() {
+ return *_indexFieldWriter;
+}
+
+search::ISequencedTaskExecutor &
+ExecutorThreadingService::attributeFieldWriter() {
+ return *_attributeFieldWriter;
}
} // namespace proton
diff --git a/searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.h b/searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.h
index 25aa65d43a7..240eefab2a7 100644
--- a/searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.h
+++ b/searchcore/src/vespa/searchcore/proton/server/executorthreadingservice.h
@@ -5,8 +5,8 @@
#include <vespa/searchcorespi/index/ithreadingservice.h>
#include <vespa/vespalib/util/blockingthreadstackexecutor.h>
#include <vespa/vespalib/util/threadstackexecutor.h>
-#include <vespa/searchlib/common/sequencedtaskexecutor.h>
+namespace search { class SequencedTaskExecutor; }
namespace proton {
class ExecutorThreadingServiceStats;
@@ -24,9 +24,9 @@ private:
ExecutorThreadService _masterService;
ExecutorThreadService _indexService;
ExecutorThreadService _summaryService;
- search::SequencedTaskExecutor _indexFieldInverter;
- search::SequencedTaskExecutor _indexFieldWriter;
- search::SequencedTaskExecutor _attributeFieldWriter;
+ std::unique_ptr<search::SequencedTaskExecutor> _indexFieldInverter;
+ std::unique_ptr<search::SequencedTaskExecutor> _indexFieldWriter;
+ std::unique_ptr<search::SequencedTaskExecutor> _attributeFieldWriter;
public:
/**
@@ -38,12 +38,12 @@ public:
ExecutorThreadingService(uint32_t threads = 1,
uint32_t stackSize = 128 * 1024,
uint32_t taskLimit = 1000);
- ~ExecutorThreadingService();
+ ~ExecutorThreadingService() override;
/**
* Implements vespalib::Syncable
*/
- virtual vespalib::Syncable &sync() override;
+ vespalib::Syncable &sync() override;
void shutdown();
@@ -63,29 +63,20 @@ public:
/**
* Implements IThreadingService
*/
- virtual searchcorespi::index::IThreadService &master() override {
+ searchcorespi::index::IThreadService &master() override {
return _masterService;
}
- virtual searchcorespi::index::IThreadService &index() override {
+ searchcorespi::index::IThreadService &index() override {
return _indexService;
}
- virtual searchcorespi::index::IThreadService &summary() override {
+ searchcorespi::index::IThreadService &summary() override {
return _summaryService;
}
- virtual search::ISequencedTaskExecutor &indexFieldInverter() override {
- return _indexFieldInverter;
- }
-
- virtual search::ISequencedTaskExecutor &indexFieldWriter() override {
- return _indexFieldWriter;
- }
-
- virtual search::ISequencedTaskExecutor &attributeFieldWriter() override {
- return _attributeFieldWriter;
- }
-
+ search::ISequencedTaskExecutor &indexFieldInverter() override;
+ search::ISequencedTaskExecutor &indexFieldWriter() override;
+ search::ISequencedTaskExecutor &attributeFieldWriter() override;
ExecutorThreadingServiceStats getStats();
};
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 858e1d51d3f..6364e772f94 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
@@ -5,6 +5,7 @@
#include "operationdonecontext.h"
#include "removedonecontext.h"
#include "putdonecontext.h"
+#include <vespa/searchlib/common/isequencedtaskexecutor.h>
using document::Document;
using document::DocumentUpdate;
diff --git a/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp b/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp
index e8dc4eecbf3..66e721f9222 100644
--- a/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/feedhandler.cpp
@@ -18,6 +18,7 @@
#include <vespa/searchcorespi/index/ithreadingservice.h>
#include <vespa/searchlib/common/gatecallback.h>
#include <vespa/vespalib/util/exceptions.h>
+#include <vespa/vespalib/util/lambdatask.h>
#include <unistd.h>
#include <vespa/log/log.h>
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 4cda07eee8b..28b1c407429 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/searchable_feed_view.cpp
@@ -6,6 +6,7 @@
#include "removedonecontext.h"
#include <vespa/searchcore/proton/common/feedtoken.h>
#include <vespa/searchcore/proton/documentmetastore/ilidreusedelayer.h>
+#include <vespa/searchlib/common/isequencedtaskexecutor.h>
#include <vespa/vespalib/text/stringtokenizer.h>
#include <vespa/vespalib/util/closuretask.h>
#include <vespa/vespalib/util/exceptions.h>
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp
index ab47a72e899..29615b0daf9 100644
--- a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp
@@ -12,14 +12,15 @@
#include <vespa/searchcore/proton/common/feedtoken.h>
#include <vespa/searchcore/proton/documentmetastore/ilidreusedelayer.h>
#include <vespa/searchcore/proton/reference/i_gid_to_lid_change_handler.h>
+#include <vespa/searchcore/proton/attribute/ifieldupdatecallback.h>
+
+#include <vespa/searchlib/common/isequencedtaskexecutor.h>
#include <vespa/document/datatype/documenttype.h>
#include <vespa/document/repo/documenttyperepo.h>
#include <vespa/document/fieldvalue/document.h>
#include <vespa/vespalib/util/exceptions.h>
#include <vespa/log/log.h>
-#include <vespa/searchcore/proton/attribute/ifieldupdatecallback.h>
-
LOG_SETUP(".proton.server.storeonlyfeedview");
using document::BucketId;
diff --git a/searchcore/src/vespa/searchcore/proton/server/visibilityhandler.cpp b/searchcore/src/vespa/searchcore/proton/server/visibilityhandler.cpp
index dd12a5cfd3d..71197a5c530 100644
--- a/searchcore/src/vespa/searchcore/proton/server/visibilityhandler.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/visibilityhandler.cpp
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "visibilityhandler.h"
+#include <vespa/searchlib/common/isequencedtaskexecutor.h>
#include <vespa/vespalib/util/closuretask.h>
using vespalib::makeTask;