diff options
author | Håvard Pettersen <havardpe@yahooinc.com> | 2023-02-27 12:38:38 +0000 |
---|---|---|
committer | Håvard Pettersen <havardpe@yahooinc.com> | 2023-02-27 12:49:01 +0000 |
commit | 466c5afc1e238ee09ce9d67b77a7118eca55acdc (patch) | |
tree | 37650cd4eb25a697a6290f026bc1da5227697978 | |
parent | 89bcb33930ad6f04e21a8699f7a7544b3cee9a5b (diff) |
avoid using fastos thread in searchcore
also remove some left-behind includes
21 files changed, 42 insertions, 60 deletions
diff --git a/config/src/tests/file_acquirer/file_acquirer_test.cpp b/config/src/tests/file_acquirer/file_acquirer_test.cpp index 8e11f964f16..7ea6556c074 100644 --- a/config/src/tests/file_acquirer/file_acquirer_test.cpp +++ b/config/src/tests/file_acquirer/file_acquirer_test.cpp @@ -4,7 +4,6 @@ #include <vespa/fnet/frt/supervisor.h> #include <vespa/fnet/frt/rpcrequest.h> #include <vespa/fnet/transport.h> -#include <vespa/fastos/thread.h> #include <vespa/vespalib/util/stringfmt.h> using namespace config; diff --git a/config/src/vespa/config/file_acquirer/file_acquirer.cpp b/config/src/vespa/config/file_acquirer/file_acquirer.cpp index 048e9544dab..4ee5b4aa4a9 100644 --- a/config/src/vespa/config/file_acquirer/file_acquirer.cpp +++ b/config/src/vespa/config/file_acquirer/file_acquirer.cpp @@ -5,7 +5,6 @@ #include <vespa/fnet/frt/target.h> #include <vespa/fnet/frt/rpcrequest.h> #include <vespa/fnet/transport.h> -#include <vespa/fastos/thread.h> #include <vespa/log/log.h> LOG_SETUP(".config.file_acquirer"); diff --git a/config/src/vespa/config/frt/frtconnectionpool.cpp b/config/src/vespa/config/frt/frtconnectionpool.cpp index de00c650628..b73a28483e6 100644 --- a/config/src/vespa/config/frt/frtconnectionpool.cpp +++ b/config/src/vespa/config/frt/frtconnectionpool.cpp @@ -5,7 +5,6 @@ #include <vespa/vespalib/util/size_literals.h> #include <vespa/fnet/frt/supervisor.h> #include <vespa/fnet/transport.h> -#include <vespa/fastos/thread.h> #include <vespa/log/log.h> LOG_SETUP(".config.frt.frtconnectionpool"); diff --git a/config/src/vespa/config/subscription/sourcespec.cpp b/config/src/vespa/config/subscription/sourcespec.cpp index 0bdcf2acbc5..0ab0806885f 100644 --- a/config/src/vespa/config/subscription/sourcespec.cpp +++ b/config/src/vespa/config/subscription/sourcespec.cpp @@ -13,7 +13,6 @@ #include <vespa/config/print/asciiconfigwriter.h> #include <vespa/vespalib/util/size_literals.h> #include <vespa/fnet/transport.h> -#include <vespa/fastos/thread.h> #include <cassert> namespace config { diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/externpolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/externpolicy.cpp index 70f6fc24d83..43082d9dbae 100644 --- a/documentapi/src/vespa/documentapi/messagebus/policies/externpolicy.cpp +++ b/documentapi/src/vespa/documentapi/messagebus/policies/externpolicy.cpp @@ -7,7 +7,6 @@ #include <vespa/slobrok/sbmirror.h> #include <vespa/fnet/transport.h> #include <vespa/fnet/frt/supervisor.h> -#include <vespa/fastos/thread.h> #include <vespa/log/log.h> LOG_SETUP(".externpolicy"); diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/externslobrokpolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/externslobrokpolicy.cpp index 34d2b6d3369..b2b648545cc 100644 --- a/documentapi/src/vespa/documentapi/messagebus/policies/externslobrokpolicy.cpp +++ b/documentapi/src/vespa/documentapi/messagebus/policies/externslobrokpolicy.cpp @@ -9,7 +9,6 @@ #include <vespa/slobrok/sbmirror.h> #include <vespa/fnet/frt/supervisor.h> #include <vespa/fnet/transport.h> -#include <vespa/fastos/thread.h> #include <thread> using slobrok::api::IMirrorAPI; diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/mirror_with_all.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/mirror_with_all.cpp index 6e9a00dcdb6..d425bfb6679 100644 --- a/documentapi/src/vespa/documentapi/messagebus/policies/mirror_with_all.cpp +++ b/documentapi/src/vespa/documentapi/messagebus/policies/mirror_with_all.cpp @@ -5,7 +5,6 @@ #include <vespa/slobrok/sbmirror.h> #include <vespa/fnet/frt/supervisor.h> #include <vespa/fnet/transport.h> -#include <vespa/fastos/thread.h> namespace documentapi { diff --git a/searchcore/src/apps/proton/proton.cpp b/searchcore/src/apps/proton/proton.cpp index 4d21143935b..281d7585274 100644 --- a/searchcore/src/apps/proton/proton.cpp +++ b/searchcore/src/apps/proton/proton.cpp @@ -10,7 +10,6 @@ #include <vespa/config/common/exceptions.h> #include <vespa/config/common/configcontext.h> #include <vespa/fnet/transport.h> -#include <vespa/fastos/thread.h> #include <vespa/fastos/file.h> #include <filesystem> #include <iostream> @@ -45,7 +44,7 @@ private: static void setupSignals(); static void setup_fadvise(); Params parseParams(int argc, char **argv); - void startAndRun(FastOS_ThreadPool & threadPool, FNET_Transport & transport, int argc, char **argv); + void startAndRun(FNET_Transport & transport, int argc, char **argv); public: int main(int argc, char **argv); }; @@ -222,7 +221,7 @@ private: } void -App::startAndRun(FastOS_ThreadPool & threadPool, FNET_Transport & transport, int argc, char **argv) { +App::startAndRun(FNET_Transport & transport, int argc, char **argv) { Params params = parseParams(argc, argv); LOG(debug, "identity: '%s'", params.identity.c_str()); LOG(debug, "serviceidentity: '%s'", params.serviceidentity.c_str()); @@ -231,7 +230,7 @@ App::startAndRun(FastOS_ThreadPool & threadPool, FNET_Transport & transport, int config::ConfigServerSpec configServerSpec(transport); config::ConfigUri identityUri(params.identity, std::make_shared<config::ConfigContext>(configServerSpec)); - auto protonUP = std::make_unique<proton::Proton>(threadPool, transport, identityUri, + auto protonUP = std::make_unique<proton::Proton>(transport, identityUri, (argc > 0) ? argv[0] : "proton", subscribeTimeout); proton::Proton & proton = *protonUP; proton::BootstrapConfig::SP configSnapshot = proton.init(); @@ -283,9 +282,8 @@ App::main(int argc, char **argv) try { setupSignals(); setup_fadvise(); - FastOS_ThreadPool threadPool; Transport transport(buildTransportConfig()); - startAndRun(threadPool, transport.transport(), argc, argv); + startAndRun(transport.transport(), argc, argv); } catch (const vespalib::InvalidCommandLineArgumentsException &e) { LOG(warning, "Invalid commandline arguments: '%s'", e.what()); return 1; diff --git a/searchcore/src/apps/vespa-transactionlog-inspect/vespa-transactionlog-inspect.cpp b/searchcore/src/apps/vespa-transactionlog-inspect/vespa-transactionlog-inspect.cpp index d69c978729d..50b5dadddbc 100644 --- a/searchcore/src/apps/vespa-transactionlog-inspect/vespa-transactionlog-inspect.cpp +++ b/searchcore/src/apps/vespa-transactionlog-inspect/vespa-transactionlog-inspect.cpp @@ -19,7 +19,6 @@ #include <vespa/vespalib/util/signalhandler.h> #include <iostream> #include <thread> -#include <vespa/fastos/thread.h> #include <vespa/log/log.h> LOG_SETUP("vespa-transactionlog-inspect"); diff --git a/searchcore/src/tests/proton/common/timer/timer_test.cpp b/searchcore/src/tests/proton/common/timer/timer_test.cpp index e3df6b319a9..4ff970df84e 100644 --- a/searchcore/src/tests/proton/common/timer/timer_test.cpp +++ b/searchcore/src/tests/proton/common/timer/timer_test.cpp @@ -1,6 +1,5 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/fastos/thread.h> #include <vespa/fnet/transport.h> #include <vespa/searchcore/proton/common/scheduled_forward_executor.h> #include <vespa/searchcore/proton/common/scheduledexecutor.h> diff --git a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp index 6f034161ac4..5afe0a0c5a2 100644 --- a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp +++ b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp @@ -4,7 +4,6 @@ #include <vespa/document/repo/documenttyperepo.h> #include <vespa/document/datatype/documenttype.h> #include <vespa/document/test/make_bucket_space.h> -#include <vespa/fastos/thread.h> #include <vespa/persistence/dummyimpl/dummy_bucket_executor.h> #include <vespa/searchcore/proton/attribute/attribute_config_inspector.h> #include <vespa/searchcore/proton/attribute/attribute_usage_filter.h> diff --git a/searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp b/searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp index 4b6ffd07b8a..13371521718 100644 --- a/searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp +++ b/searchcore/src/tests/proton/proton_config_fetcher/proton_config_fetcher_test.cpp @@ -305,8 +305,7 @@ TEST_FFF("require that proton config fetcher follows changes to bootstrap", ConfigTestFixture("search"), ProtonConfigOwner(), ProtonConfigFetcher(f1.transport.transport(), ConfigUri(f1.configId, f1.context), f2, 60s)) { - FastOS_ThreadPool pool; - f3.start(pool); + f3.start(); ASSERT_TRUE(f2._configured); ASSERT_TRUE(f1.configEqual(f2.getBootstrapConfig())); f2._configured = false; @@ -321,8 +320,7 @@ TEST_FFF("require that proton config fetcher follows changes to doctypes", ConfigTestFixture("search"), ProtonConfigOwner(), ProtonConfigFetcher(f1.transport.transport(), ConfigUri(f1.configId, f1.context), f2, 60s)) { - FastOS_ThreadPool pool; - f3.start(pool); + f3.start(); f2._configured = false; f1.addDocType("typea"); @@ -342,8 +340,7 @@ TEST_FFF("require that proton config fetcher reconfigures dbowners", ConfigTestFixture("search"), ProtonConfigOwner(), ProtonConfigFetcher(f1.transport.transport(), ConfigUri(f1.configId, f1.context), f2, 60s)) { - FastOS_ThreadPool pool; - f3.start(pool); + f3.start(); ASSERT_FALSE(f2.getDocumentDBConfig("typea")); // Add db and verify that config for db is provided diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/flushengine.cpp b/searchcore/src/vespa/searchcore/proton/flushengine/flushengine.cpp index 4b83b7d5af9..3e577bf6cbe 100644 --- a/searchcore/src/vespa/searchcore/proton/flushengine/flushengine.cpp +++ b/searchcore/src/vespa/searchcore/proton/flushengine/flushengine.cpp @@ -10,7 +10,6 @@ #include <vespa/searchcore/proton/common/eventlogger.h> #include <vespa/searchlib/common/flush_token.h> #include <vespa/vespalib/util/cpu_usage.h> -#include <thread> #include <vespa/log/log.h> LOG_SETUP(".proton.flushengine.flushengine"); @@ -86,7 +85,8 @@ FlushEngine::FlushEngine(std::shared_ptr<flushengine::ITlsStatsFactory> tlsStats _maxConcurrent(numThreads), _idleInterval(idleInterval), _taskId(0), - _threadPool(), + _thread(), + _has_thread(false), _strategy(std::move(strategy)), _priorityStrategy(), _executor(numThreads, CpuUsage::wrap(flush_engine_executor, CpuUsage::Category::COMPACT)), @@ -111,9 +111,7 @@ FlushEngine::~FlushEngine() FlushEngine & FlushEngine::start() { - if (_threadPool.NewThread(this) == nullptr) { - throw vespalib::IllegalStateException("Failed to start engine thread."); - } + _thread = std::thread([this](){run();}); return *this; } @@ -127,7 +125,9 @@ FlushEngine::close() _closed = true; _cond.notify_all(); } - _threadPool.Close(); + if (_thread.joinable()) { + _thread.join(); + } _executor.shutdown(); _executor.sync(); return *this; @@ -168,8 +168,9 @@ FlushEngine::wait(vespalib::duration minimumWaitTimeIfReady, bool ignorePendingP } void -FlushEngine::Run(FastOS_ThreadInterface *, void *) +FlushEngine::run() { + _has_thread = true; bool shouldIdle = false; vespalib::string prevFlushName; while (wait(shouldIdle ? _idleInterval : vespalib::duration::zero(), false)) { @@ -190,6 +191,7 @@ FlushEngine::Run(FastOS_ThreadInterface *, void *) } _executor.sync(); prune(); + _has_thread = false; } namespace { diff --git a/searchcore/src/vespa/searchcore/proton/flushengine/flushengine.h b/searchcore/src/vespa/searchcore/proton/flushengine/flushengine.h index 4b15c3503f3..1d6ed763ff6 100644 --- a/searchcore/src/vespa/searchcore/proton/flushengine/flushengine.h +++ b/searchcore/src/vespa/searchcore/proton/flushengine/flushengine.h @@ -7,7 +7,7 @@ #include <vespa/searchcore/proton/common/doctypename.h> #include <vespa/vespalib/util/threadstackexecutor.h> #include <vespa/vespalib/util/time.h> -#include <vespa/fastos/thread.h> +#include <thread> #include <set> #include <mutex> #include <condition_variable> @@ -18,7 +18,7 @@ namespace proton { namespace flushengine { class ITlsStatsFactory; } -class FlushEngine final : public FastOS_Runnable +class FlushEngine { public: class FlushMeta { @@ -54,7 +54,8 @@ private: const uint32_t _maxConcurrent; const vespalib::duration _idleInterval; uint32_t _taskId; - FastOS_ThreadPool _threadPool; + std::thread _thread; + std::atomic<bool> _has_thread; IFlushStrategy::SP _strategy; mutable IFlushStrategy::SP _priorityStrategy; vespalib::ThreadStackExecutor _executor; @@ -109,7 +110,7 @@ public: /** * Destructor. Waits for all pending tasks to complete. */ - ~FlushEngine() override; + ~FlushEngine(); /** * Observe and reset internal executor stats @@ -129,7 +130,8 @@ public: * @return This, to allow chaining. */ FlushEngine &start(); - + bool has_thread() const { return _has_thread; } + /** * Stops the scheduling thread and. This will prevent any more flush * requests being performed on the attached handlers, allowing you to flush @@ -168,7 +170,7 @@ public: */ IFlushHandler::SP removeFlushHandler(const DocTypeName &docTypeName); - void Run(FastOS_ThreadInterface *thread, void *arg) override; + void run(); FlushMetaSet getCurrentlyFlushingSet() const; diff --git a/searchcore/src/vespa/searchcore/proton/server/prepare_restart_handler.cpp b/searchcore/src/vespa/searchcore/proton/server/prepare_restart_handler.cpp index 97b66600817..0ec0e6a1147 100644 --- a/searchcore/src/vespa/searchcore/proton/server/prepare_restart_handler.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/prepare_restart_handler.cpp @@ -21,7 +21,7 @@ bool PrepareRestartHandler::prepareRestart(const ProtonConfig &protonCfg) { std::unique_lock lock(_mutex); - if (!_flushEngine.HasThread()) { + if (!_flushEngine.has_thread()) { return false; } if (!_running) { diff --git a/searchcore/src/vespa/searchcore/proton/server/proton.cpp b/searchcore/src/vespa/searchcore/proton/server/proton.cpp index 34961414d57..c508706ad28 100644 --- a/searchcore/src/vespa/searchcore/proton/server/proton.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/proton.cpp @@ -215,7 +215,7 @@ Proton::ProtonFileHeaderContext::setClusterName(const vespalib::string & cluster } -Proton::Proton(FastOS_ThreadPool & threadPool, FNET_Transport & transport, const config::ConfigUri & configUri, +Proton::Proton(FNET_Transport & transport, const config::ConfigUri & configUri, const vespalib::string &progName, vespalib::duration subscribeTimeout) : IProtonConfigurerOwner(), search::engine::MonitorServer(), @@ -225,7 +225,6 @@ Proton::Proton(FastOS_ThreadPool & threadPool, FNET_Transport & transport, const ComponentConfigProducer(), _cpu_util(), _hw_info(), - _threadPool(threadPool), _transport(transport), _configUri(configUri), _mutex(), @@ -277,7 +276,7 @@ Proton::init() { assert( ! _initStarted && ! _initComplete ); _initStarted = true; - _protonConfigFetcher.start(_threadPool); + _protonConfigFetcher.start(); auto configSnapshot = _protonConfigurer.getPendingConfigSnapshot(); assert(configSnapshot); auto bootstrapConfig = configSnapshot->getBootstrapConfig(); @@ -757,7 +756,7 @@ Proton::ping(std::unique_ptr<MonitorRequest>, MonitorClient &) bool Proton::triggerFlush() { - if (!_flushEngine || ! _flushEngine->HasThread()) { + if (!_flushEngine || ! _flushEngine->has_thread()) { return false; } _flushEngine->triggerFlush(); diff --git a/searchcore/src/vespa/searchcore/proton/server/proton.h b/searchcore/src/vespa/searchcore/proton/server/proton.h index bf84650867a..a5da72671d2 100644 --- a/searchcore/src/vespa/searchcore/proton/server/proton.h +++ b/searchcore/src/vespa/searchcore/proton/server/proton.h @@ -88,7 +88,6 @@ private: vespalib::CpuUtil _cpu_util; HwInfo _hw_info; - FastOS_ThreadPool & _threadPool; FNET_Transport & _transport; const config::ConfigUri _configUri; mutable std::shared_mutex _mutex; @@ -156,7 +155,7 @@ public: using UP = std::unique_ptr<Proton>; using SP = std::shared_ptr<Proton>; - Proton(FastOS_ThreadPool & threadPool, FNET_Transport & transport, const config::ConfigUri & configUri, + Proton(FNET_Transport & transport, const config::ConfigUri & configUri, const vespalib::string &progName, vespalib::duration subscribeTimeout); ~Proton() override; @@ -193,7 +192,6 @@ public: const std::shared_ptr<DocumentDBConfig> &documentDBConfig, InitializeThreads initializeThreads); metrics::MetricManager & getMetricManager(); - FastOS_ThreadPool & getThreadPool() { return _threadPool; } bool triggerFlush(); bool prepareRestart(); diff --git a/searchcore/src/vespa/searchcore/proton/server/proton_config_fetcher.cpp b/searchcore/src/vespa/searchcore/proton/server/proton_config_fetcher.cpp index 64a09a0bb25..0311cf4a48b 100644 --- a/searchcore/src/vespa/searchcore/proton/server/proton_config_fetcher.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/proton_config_fetcher.cpp @@ -29,6 +29,7 @@ ProtonConfigFetcher::ProtonConfigFetcher(FNET_Transport & transport, const confi _cond(), _dbManagerMap(), _running(false), + _thread(), _oldDocumentTypeRepos(), _currentDocumentTypeRepo() { @@ -40,10 +41,8 @@ ProtonConfigFetcher::~ProtonConfigFetcher() } void -ProtonConfigFetcher::Run(FastOS_ThreadInterface * thread, void *arg) +ProtonConfigFetcher::run() { - (void) arg; - (void) thread; while (!_retriever.isClosed()) { try { fetchConfigs(); @@ -166,17 +165,13 @@ ProtonConfigFetcher::getGeneration() const } void -ProtonConfigFetcher::start(FastOS_ThreadPool & threadPool) +ProtonConfigFetcher::start() { fetchConfigs(); lock_guard guard(_mutex); if (_running) return; _running = true; - if (threadPool.NewThread(this, nullptr) == nullptr) { - _running = false; - throw vespalib::IllegalStateException( - "Failed starting thread for proton config fetcher"); - } + _thread = std::thread([this](){run();}); } void @@ -189,6 +184,9 @@ ProtonConfigFetcher::close() while (_running) { _cond.wait(guard); } + if (_thread.joinable()) { + _thread.join(); + } } void diff --git a/searchcore/src/vespa/searchcore/proton/server/proton_config_fetcher.h b/searchcore/src/vespa/searchcore/proton/server/proton_config_fetcher.h index b0046e17a63..9f9104df0af 100644 --- a/searchcore/src/vespa/searchcore/proton/server/proton_config_fetcher.h +++ b/searchcore/src/vespa/searchcore/proton/server/proton_config_fetcher.h @@ -4,7 +4,6 @@ #include "bootstrapconfigmanager.h" #include "i_document_db_config_owner.h" -#include <vespa/fastos/thread.h> #include <vespa/searchcore/proton/common/doctypename.h> #include <vespa/config/retriever/configretriever.h> #include <vespa/config/subscription/configuri.h> @@ -24,13 +23,13 @@ class IProtonConfigurer; * A ProtonConfigFetcher monitors all config in proton and document dbs for change * and starts proton reconfiguration if config has been reloaded. */ -class ProtonConfigFetcher : public FastOS_Runnable +class ProtonConfigFetcher { public: using BootstrapConfigSP = std::shared_ptr<BootstrapConfig>; ProtonConfigFetcher(FNET_Transport & transport, const config::ConfigUri & configUri, IProtonConfigurer &owner, vespalib::duration subscribeTimeout); - ~ProtonConfigFetcher() override; + ~ProtonConfigFetcher(); /** * Get the current config generation. */ @@ -39,14 +38,14 @@ public: /** * Start config fetcher, callbacks may come from now on. */ - void start(FastOS_ThreadPool & threadPool); + void start(); /** * Shutdown config fetcher, ensuring that no more callbacks arrive */ void close(); - void Run(FastOS_ThreadInterface * thread, void *arg) override; + void run(); private: using DBManagerMap = std::map<DocTypeName, std::shared_ptr<DocumentDBConfigManager>>; @@ -63,7 +62,8 @@ private: std::condition_variable _cond; DBManagerMap _dbManagerMap; bool _running; - + std::thread _thread; + std::deque<OldDocumentTypeRepo> _oldDocumentTypeRepos; std::shared_ptr<const document::DocumentTypeRepo> _currentDocumentTypeRepo; diff --git a/searchcore/src/vespa/searchcore/proton/test/transport_helper.cpp b/searchcore/src/vespa/searchcore/proton/test/transport_helper.cpp index 454a7093087..92e9dadf898 100644 --- a/searchcore/src/vespa/searchcore/proton/test/transport_helper.cpp +++ b/searchcore/src/vespa/searchcore/proton/test/transport_helper.cpp @@ -1,7 +1,6 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "transport_helper.h" -#include <vespa/fastos/thread.h> #include <vespa/fnet/transport.h> #include <vespa/searchcore/proton/server/executorthreadingservice.h> #include <vespa/vespalib/util/sequencedtaskexecutor.h> diff --git a/storage/src/tests/storageserver/statereportertest.cpp b/storage/src/tests/storageserver/statereportertest.cpp index e9b2f04eb04..d6b528e5a25 100644 --- a/storage/src/tests/storageserver/statereportertest.cpp +++ b/storage/src/tests/storageserver/statereportertest.cpp @@ -15,7 +15,6 @@ #include <vespa/vespalib/gtest/gtest.h> #include <vespa/vespalib/util/size_literals.h> #include <thread> -#include <vespa/fastos/thread.h> #include <vespa/log/log.h> LOG_SETUP(".test.statereporter"); |