diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-11-27 00:21:44 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-11-27 11:56:09 +0000 |
commit | 39d00826c3e7e30d59e6ca6d88eb3f36fb8358fd (patch) | |
tree | a7c3158fd574ec67ab32e66d7cd3ab58ebbdb2cc /documentapi | |
parent | 989b8b5afa58dcbfa03e3999d75802ac6c70aa94 (diff) |
GC LoadTypeSet
Diffstat (limited to 'documentapi')
22 files changed, 37 insertions, 309 deletions
diff --git a/documentapi/CMakeLists.txt b/documentapi/CMakeLists.txt index 86d29732399..3a6ce0e3a8d 100644 --- a/documentapi/CMakeLists.txt +++ b/documentapi/CMakeLists.txt @@ -24,7 +24,6 @@ vespa_define_module( messagebus_messagebus-test TESTS - src/tests/loadtypes src/tests/messagebus src/tests/messages src/tests/policies diff --git a/documentapi/src/tests/loadtypes/.gitignore b/documentapi/src/tests/loadtypes/.gitignore deleted file mode 100644 index 497fe4d4b3f..00000000000 --- a/documentapi/src/tests/loadtypes/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.depend -Makefile -documentapi_loadtype_test_app diff --git a/documentapi/src/tests/loadtypes/CMakeLists.txt b/documentapi/src/tests/loadtypes/CMakeLists.txt deleted file mode 100644 index bac42f9a27e..00000000000 --- a/documentapi/src/tests/loadtypes/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -vespa_add_executable(documentapi_loadtype_test_app TEST - SOURCES - loadtypetest.cpp - DEPENDS - documentapi - vdstestlib - GTest::GTest -) -vespa_add_test(NAME documentapi_loadtype_test_app COMMAND documentapi_loadtype_test_app) diff --git a/documentapi/src/tests/loadtypes/loadtypetest.cpp b/documentapi/src/tests/loadtypes/loadtypetest.cpp deleted file mode 100644 index 178b9f9227b..00000000000 --- a/documentapi/src/tests/loadtypes/loadtypetest.cpp +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -#include <vespa/documentapi/loadtypes/loadtypeset.h> -#include <vespa/config/config.h> -#include <vespa/config/common/exceptions.h> -#include <vespa/vespalib/gtest/gtest.h> - -namespace documentapi { - -void -assertConfigFailure(const vespalib::string &configId, const vespalib::string &expError) -{ - try { - LoadTypeSet createdFromConfigId(configId); - FAIL() << "Config was expected to fail with error: " << expError; - } catch (config::InvalidConfigException &e) { - EXPECT_TRUE(e.getMessage().find(expError) != std::string::npos); - } -} - -TEST(LoadTypeTest, testConfig) -{ - // Using id 0 is illegal. Reserved for default type. - assertConfigFailure( - "raw:" - "type[1]\n" - "type[0].id 0\n" - "type[0].name \"foo\"\n" - "type[0].priority \"\"", - "Load type identifiers need to be"); - // Using name "default" is illegal. Reserved for default type. - assertConfigFailure( - "raw:" - "type[1]\n" - "type[0].id 1\n" - "type[0].name \"default\"\n" - "type[0].priority \"\"", "Load type names need to be"); - // Identifiers need to be unique. - assertConfigFailure( - "raw:" - "type[2]\n" - "type[0].id 1\n" - "type[0].name \"test\"\n" - "type[0].priority \"\"\n" - "type[1].id 1\n" - "type[1].name \"testa\"\n" - "type[1].priority \"\"", "Load type identifiers need to be"); - // Names need to be unique. - assertConfigFailure( - "raw:" - "type[2]\n" - "type[0].id 1\n" - "type[0].name \"test\"\n" - "type[0].priority \"\"\n" - "type[1].id 2\n" - "type[1].name \"test\"\n" - "type[1].priority \"\"" , "Load type names need to be"); - LoadTypeSet set("raw:" - "type[3]\n" - "type[0].id 1\n" - "type[0].name \"user\"\n" - "type[0].priority \"\"\n" - "type[1].id 2\n" - "type[1].name \"maintenance\"\n" - "type[1].priority \"\"\n" - "type[2].id 3\n" - "type[2].name \"put\"\n" - "type[2].priority \"\"" - ); -} - -} // documentapi - -GTEST_MAIN_RUN_ALL_TESTS() diff --git a/documentapi/src/tests/messagebus/messagebus_test.cpp b/documentapi/src/tests/messagebus/messagebus_test.cpp index 3406db966f0..8f60bbc78e4 100644 --- a/documentapi/src/tests/messagebus/messagebus_test.cpp +++ b/documentapi/src/tests/messagebus/messagebus_test.cpp @@ -2,12 +2,9 @@ #include <vespa/document/base/testdocrepo.h> #include <vespa/document/datatype/documenttype.h> -#include <vespa/document/fieldvalue/document.h> #include <vespa/document/repo/documenttyperepo.h> #include <vespa/document/update/documentupdate.h> #include <vespa/documentapi/documentapi.h> -#include <vespa/documentapi/loadtypes/loadtypeset.h> -#include <vespa/vdslib/state/clusterstate.h> #include <vespa/vespalib/testkit/testapp.h> using document::DocumentTypeRepo; @@ -66,8 +63,7 @@ void Test::testMessage() { EXPECT_TRUE(upd1.getType() == DocumentProtocol::MESSAGE_UPDATEDOCUMENT); EXPECT_TRUE(upd1.getProtocol() == "document"); - LoadTypeSet set; - DocumentProtocol protocol(set, _repo); + DocumentProtocol protocol(_repo); Blob blob = protocol.encode(vespalib::Version(6,221), upd1); EXPECT_TRUE(blob.size() > 0); @@ -89,8 +85,7 @@ void Test::testMessage() { } void Test::testProtocol() { - LoadTypeSet set; - DocumentProtocol protocol(set, _repo); + DocumentProtocol protocol(_repo); EXPECT_TRUE(protocol.getName() == "document"); IRoutingPolicy::UP policy = protocol.createPolicy(string("DocumentRouteSelector"), string("file:documentrouteselectorpolicy.cfg")); diff --git a/documentapi/src/tests/messages/testbase.cpp b/documentapi/src/tests/messages/testbase.cpp index 18902cb39a7..967c9990800 100644 --- a/documentapi/src/tests/messages/testbase.cpp +++ b/documentapi/src/tests/messages/testbase.cpp @@ -19,11 +19,9 @@ TestBase::TestBase() : _repo(new DocumentTypeRepo(readDocumenttypesConfig( TEST_PATH("../../../test/cfg/testdoctypes.cfg")))), _dataPath(TEST_PATH("../../../test/crosslanguagefiles")), - _loadTypes(), - _protocol(_loadTypes, _repo), + _protocol(_repo), _tests() { - _loadTypes.addLoadType(34, "foo", Priority::PRI_NORMAL_2); } int diff --git a/documentapi/src/tests/messages/testbase.h b/documentapi/src/tests/messages/testbase.h index e87f9104189..89398552f63 100644 --- a/documentapi/src/tests/messages/testbase.h +++ b/documentapi/src/tests/messages/testbase.h @@ -2,10 +2,10 @@ #pragma once #include <vespa/documentapi/messagebus/documentprotocol.h> -#include <vespa/documentapi/loadtypes/loadtypeset.h> #include <vespa/messagebus/routable.h> #include <vespa/vespalib/component/version.h> #include <vespa/vespalib/testkit/testapp.h> +#include <map> using namespace documentapi; @@ -24,8 +24,7 @@ typedef bool (TestBase::*TEST_METHOD_PT)(); class TestBase : public vespalib::TestApp { std::shared_ptr<const document::DocumentTypeRepo> _repo; protected: - const string _dataPath; - LoadTypeSet _loadTypes; + const string _dataPath; DocumentProtocol _protocol; std::map<uint32_t, TEST_METHOD_PT> _tests; diff --git a/documentapi/src/tests/policies/policies_test.cpp b/documentapi/src/tests/policies/policies_test.cpp index a4eaf54c1dc..0c659f589d6 100644 --- a/documentapi/src/tests/policies/policies_test.cpp +++ b/documentapi/src/tests/policies/policies_test.cpp @@ -45,7 +45,6 @@ using namespace std::chrono_literals; class Test : public vespalib::TestApp { private: - LoadTypeSet _loadTypes; std::shared_ptr<const DocumentTypeRepo> _repo; const DataType *_docType; @@ -140,7 +139,7 @@ Test::Main() { void Test::testProtocol() { - mbus::IProtocol::SP protocol(new DocumentProtocol(_loadTypes, _repo)); + mbus::IProtocol::SP protocol(new DocumentProtocol(_repo)); mbus::IRoutingPolicy::UP policy = protocol->createPolicy("AND", ""); ASSERT_TRUE(dynamic_cast<ANDPolicy*>(policy.get()) != nullptr); @@ -220,7 +219,7 @@ Test::requireThatExternPolicySelectsFromExternSlobrok() for (uint32_t i = 0; i < 10; ++i) { mbus::TestServer *server = new mbus::TestServer( mbus::Identity(make_string("docproc/cluster.default/%d", i)), mbus::RoutingSpec(), slobrok, - mbus::IProtocol::SP(new DocumentProtocol(_loadTypes, _repo))); + mbus::IProtocol::SP(new DocumentProtocol(_repo))); servers.push_back(server); server->net.registerSession("chain.default"); } @@ -247,7 +246,7 @@ Test::requireThatExternPolicyMergesOneReplyAsProtocol() frame.setMessage(newPutDocumentMessage("id:ns:testdoc::")); mbus::Slobrok slobrok; mbus::TestServer server(mbus::Identity("docproc/cluster.default/0"), mbus::RoutingSpec(), slobrok, - mbus::IProtocol::SP(new DocumentProtocol(_loadTypes, _repo))); + mbus::IProtocol::SP(new DocumentProtocol(_repo))); server.net.registerSession("chain.default"); setupExternPolicy(frame, slobrok, "docproc/cluster.default/0/chain.default", 1); EXPECT_TRUE(frame.testMergeOneReply(server.net.getConnectionSpec() + "/chain.default")); @@ -310,7 +309,7 @@ Test::testExternSend() // Setup local source node. mbus::Slobrok local; mbus::TestServer src(mbus::Identity("src"), mbus::RoutingSpec(), local, - std::make_shared<DocumentProtocol>(_loadTypes, _repo)); + std::make_shared<DocumentProtocol>(_repo)); mbus::Receptor sr; mbus::SourceSession::UP ss = src.mb.createSourceSession(sr, mbus::SourceSessionParams().setTimeout(60s)); @@ -319,12 +318,12 @@ Test::testExternSend() .addTable(mbus::RoutingTableSpec(DocumentProtocol::NAME) .addRoute(mbus::RouteSpec("default").addHop("dst")) .addHop(mbus::HopSpec("dst", "dst/session"))), - slobrok, std::make_shared<DocumentProtocol>(_loadTypes, _repo)); + slobrok, std::make_shared<DocumentProtocol>(_repo)); mbus::Receptor ir; mbus::IntermediateSession::UP is = itr.mb.createIntermediateSession("session", true, ir, ir); mbus::TestServer dst(mbus::Identity("dst"), mbus::RoutingSpec(), slobrok, - std::make_shared<DocumentProtocol>(_loadTypes, _repo)); + std::make_shared<DocumentProtocol>(_repo)); mbus::Receptor dr; mbus::DestinationSession::UP ds = dst.mb.createDestinationSession("session", true, dr); @@ -351,7 +350,7 @@ Test::testExternMultipleSlobroks() { mbus::Slobrok local; mbus::TestServer src(mbus::Identity("src"), mbus::RoutingSpec(), local, - std::make_shared<DocumentProtocol>(_loadTypes, _repo)); + std::make_shared<DocumentProtocol>(_repo)); mbus::Receptor sr; mbus::SourceSession::UP ss = src.mb.createSourceSession(sr, mbus::SourceSessionParams().setTimeout(60s)); @@ -362,7 +361,7 @@ Test::testExternMultipleSlobroks() spec.append(vespalib::make_string("tcp/localhost:%d", ext.port())); mbus::TestServer dst(mbus::Identity("dst"), mbus::RoutingSpec(), ext, - std::make_shared<DocumentProtocol>(_loadTypes, _repo)); + std::make_shared<DocumentProtocol>(_repo)); mbus::DestinationSession::UP ds = dst.mb.createDestinationSession("session", true, dr); mbus::Message::UP msg = std::make_unique<GetDocumentMessage>(DocumentId("id:ns:testdoc::")); @@ -378,7 +377,7 @@ Test::testExternMultipleSlobroks() spec.append(vespalib::make_string(",tcp/localhost:%d", ext.port())); mbus::TestServer dst(mbus::Identity("dst"), mbus::RoutingSpec(), ext, - std::make_shared<DocumentProtocol>(_loadTypes, _repo)); + std::make_shared<DocumentProtocol>(_repo)); mbus::DestinationSession::UP ds = dst.mb.createDestinationSession("session", true, dr); mbus::Message::UP msg = std::make_unique<GetDocumentMessage>(DocumentId("id:ns:testdoc::")); @@ -592,12 +591,12 @@ Test::testDocumentRouteSelector() "route[0].selector \"foo bar\"\n" "route[0].feed \"baz\"\n"; { - DocumentProtocol protocol(_loadTypes, _repo, okConfig); + DocumentProtocol protocol(_repo, okConfig); EXPECT_TRUE(dynamic_cast<DocumentRouteSelectorPolicy*>(protocol.createPolicy("DocumentRouteSelector", "").get()) != nullptr); EXPECT_TRUE(dynamic_cast<ErrorPolicy*>(protocol.createPolicy("DocumentRouteSelector", errConfig).get()) != nullptr); } { - DocumentProtocol protocol(_loadTypes, _repo, errConfig); + DocumentProtocol protocol(_repo, errConfig); EXPECT_TRUE(dynamic_cast<ErrorPolicy*>(protocol.createPolicy("DocumentRouteSelector", "").get()) != nullptr); EXPECT_TRUE(dynamic_cast<DocumentRouteSelectorPolicy*>(protocol.createPolicy("DocumentRouteSelector", okConfig).get()) != nullptr); } @@ -802,7 +801,7 @@ Test::requireThatStoragePolicyIsRandomWithoutState() mbus::TestServer *srv = new mbus::TestServer( mbus::Identity(vespalib::make_string("storage/cluster.mycluster/distributor/%d", i)), mbus::RoutingSpec(), slobrok, - mbus::IProtocol::SP(new DocumentProtocol(_loadTypes, _repo))); + mbus::IProtocol::SP(new DocumentProtocol(_repo))); servers.push_back(srv); srv->net.registerSession("default"); } @@ -857,7 +856,7 @@ Test::requireThatStoragePolicyIsTargetedWithState() mbus::TestServer *srv = new mbus::TestServer( mbus::Identity(vespalib::make_string("storage/cluster.mycluster/distributor/%d", i)), mbus::RoutingSpec(), slobrok, - make_shared<DocumentProtocol>(_loadTypes, _repo)); + make_shared<DocumentProtocol>(_repo)); servers.push_back(srv); srv->net.registerSession("default"); } @@ -897,7 +896,7 @@ Test::requireThatStoragePolicyCombinesSystemAndSlobrokState() mbus::Slobrok slobrok; mbus::TestServer server(mbus::Identity("storage/cluster.mycluster/distributor/0"), mbus::RoutingSpec(), slobrok, - make_shared<DocumentProtocol>(_loadTypes, _repo)); + make_shared<DocumentProtocol>(_repo)); server.net.registerSession("default"); string param = vespalib::make_string( @@ -1053,7 +1052,7 @@ Test::trySelect(TestFrame &frame, uint32_t numSelects, const std::vector<string> bool Test::isErrorPolicy(const string &name, const string ¶m) { - DocumentProtocol protocol(_loadTypes, _repo); + DocumentProtocol protocol(_repo); mbus::IRoutingPolicy::UP policy = protocol.createPolicy(name, param); return policy && dynamic_cast<ErrorPolicy*>(policy.get()) != nullptr; diff --git a/documentapi/src/tests/policies/testframe.cpp b/documentapi/src/tests/policies/testframe.cpp index 585885b7c4b..16ee97ce7f4 100644 --- a/documentapi/src/tests/policies/testframe.cpp +++ b/documentapi/src/tests/policies/testframe.cpp @@ -60,9 +60,8 @@ public: TestFrame::TestFrame(const std::shared_ptr<const DocumentTypeRepo> &repo, const string &ident) : _identity(ident), _slobrok(std::make_shared<mbus::Slobrok>()), - _set(), _net(std::make_shared<MyNetwork>(mbus::RPCNetworkParams(_slobrok->config()).setIdentity(mbus::Identity(ident)))), - _mbus(std::make_shared<mbus::MessageBus>(*_net, mbus::MessageBusParams().addProtocol(std::make_shared<DocumentProtocol>(_set, repo)))), + _mbus(std::make_shared<mbus::MessageBus>(*_net, mbus::MessageBusParams().addProtocol(std::make_shared<DocumentProtocol>(repo)))), _msg(), _hop(mbus::HopSpec("foo", "bar")), _handler() diff --git a/documentapi/src/tests/policies/testframe.h b/documentapi/src/tests/policies/testframe.h index d85cde129c0..41f953922f9 100644 --- a/documentapi/src/tests/policies/testframe.h +++ b/documentapi/src/tests/policies/testframe.h @@ -7,7 +7,6 @@ #include <vespa/messagebus/network/inetwork.h> #include <vespa/messagebus/testlib/receptor.h> #include <vespa/messagebus/testlib/slobrok.h> -#include <vespa/documentapi/loadtypes/loadtypeset.h> using documentapi::string; @@ -15,7 +14,6 @@ class TestFrame : public mbus::IReplyHandler { private: string _identity; std::shared_ptr<mbus::Slobrok> _slobrok; - documentapi::LoadTypeSet _set; std::shared_ptr<mbus::INetwork> _net; std::shared_ptr<mbus::MessageBus> _mbus; mbus::Message::UP _msg; diff --git a/documentapi/src/tests/policyfactory/policyfactory.cpp b/documentapi/src/tests/policyfactory/policyfactory.cpp index 729818c5c4a..8c38e93e659 100644 --- a/documentapi/src/tests/policyfactory/policyfactory.cpp +++ b/documentapi/src/tests/policyfactory/policyfactory.cpp @@ -2,7 +2,6 @@ #include <vespa/documentapi/messagebus/iroutingpolicyfactory.h> #include <vespa/document/repo/documenttyperepo.h> #include <vespa/documentapi/messagebus/documentprotocol.h> -#include <vespa/documentapi/loadtypes/loadtypeset.h> #include <vespa/documentapi/messagebus/messages/removedocumentmessage.h> #include <vespa/messagebus/testlib/receptor.h> #include <vespa/messagebus/testlib/slobrok.h> @@ -82,9 +81,8 @@ Test::Main() std::shared_ptr<const DocumentTypeRepo> repo(new DocumentTypeRepo); mbus::Slobrok slobrok; - LoadTypeSet loadTypes; mbus::TestServer - srv(mbus::MessageBusParams().addProtocol(std::make_shared<DocumentProtocol>(loadTypes, repo)), + srv(mbus::MessageBusParams().addProtocol(std::make_shared<DocumentProtocol>(repo)), mbus::RPCNetworkParams(slobrok.config())); mbus::Receptor handler; mbus::SourceSession::UP src = srv.mb.createSourceSession(mbus::SourceSessionParams().setReplyHandler(handler)); diff --git a/documentapi/src/tests/routablefactory/routablefactory.cpp b/documentapi/src/tests/routablefactory/routablefactory.cpp index 32a36ef0b59..92e982b2be4 100644 --- a/documentapi/src/tests/routablefactory/routablefactory.cpp +++ b/documentapi/src/tests/routablefactory/routablefactory.cpp @@ -6,7 +6,6 @@ #include <vespa/messagebus/testlib/slobrok.h> #include <vespa/messagebus/testlib/testserver.h> #include <vespa/vespalib/testkit/testapp.h> -#include <vespa/documentapi/loadtypes/loadtypeset.h> using document::DocumentTypeRepo; using namespace documentapi; @@ -87,7 +86,6 @@ class TestData { public: mbus::Slobrok _slobrok; - LoadTypeSet _loadTypes; DocumentProtocol::SP _srcProtocol; mbus::TestServer _srcServer; mbus::SourceSession::UP _srcSession; @@ -116,13 +114,12 @@ TEST_APPHOOK(Test); TestData::TestData() : _repo(std::make_shared<DocumentTypeRepo>()), _slobrok(), - _loadTypes(), - _srcProtocol(std::make_shared<DocumentProtocol>(_loadTypes, _repo)), + _srcProtocol(std::make_shared<DocumentProtocol>(_repo)), _srcServer(mbus::MessageBusParams().addProtocol(_srcProtocol), mbus::RPCNetworkParams(_slobrok.config())), _srcSession(), _srcHandler(), - _dstProtocol(std::make_shared<DocumentProtocol>(_loadTypes, _repo)), + _dstProtocol(std::make_shared<DocumentProtocol>(_repo)), _dstServer(mbus::MessageBusParams().addProtocol(_dstProtocol), mbus::RPCNetworkParams(_slobrok.config()).setIdentity(mbus::Identity("dst"))), _dstSession(), diff --git a/documentapi/src/vespa/documentapi/loadtypes/CMakeLists.txt b/documentapi/src/vespa/documentapi/loadtypes/CMakeLists.txt index 42f4d66af07..84bc871b452 100644 --- a/documentapi/src/vespa/documentapi/loadtypes/CMakeLists.txt +++ b/documentapi/src/vespa/documentapi/loadtypes/CMakeLists.txt @@ -2,6 +2,5 @@ vespa_add_library(documentapi_documentapiloadtypes OBJECT SOURCES loadtype.cpp - loadtypeset.cpp DEPENDS ) diff --git a/documentapi/src/vespa/documentapi/loadtypes/loadtypeset.cpp b/documentapi/src/vespa/documentapi/loadtypes/loadtypeset.cpp deleted file mode 100644 index 42aa79332db..00000000000 --- a/documentapi/src/vespa/documentapi/loadtypes/loadtypeset.cpp +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -#include "loadtypeset.h" -#include <vespa/config-load-type.h> -#include <vespa/config/config.h> -#include <vespa/config/common/exceptions.h> -#include <vespa/vespalib/util/stringfmt.h> -#include <vespa/vespalib/stllike/hash_map.hpp> -#include <vespa/config/helper/configgetter.hpp> - - -namespace documentapi { - -void LoadTypeSet::configure(const LoadTypeConfig& config) { - // This configure does not support live reconfig - if (!_types.empty()) return; - - addLoadType(0, LoadType::DEFAULT.getName(), LoadType::DEFAULT.getPriority()); - - for (uint32_t i=0; i<config.type.size(); ++i) { - addLoadType(config.type[i].id, config.type[i].name, Priority::getPriority(config.type[i].priority)); - } -} - -LoadTypeSet::LoadTypeSet() -{ - addLoadType(0, LoadType::DEFAULT.getName(), LoadType::DEFAULT.getPriority()); -} - -LoadTypeSet::LoadTypeSet(const config::ConfigUri & configUri) -{ - std::unique_ptr<LoadTypeConfig> cfg = config::ConfigGetter<LoadTypeConfig>::getConfig(configUri.getConfigId(), configUri.getContext()); - configure(*cfg); -} - -LoadTypeSet::LoadTypeSet(const LoadTypeConfig& config) -{ - configure(config); -} - -LoadTypeSet::~LoadTypeSet() = default; - -void -LoadTypeSet::addLoadType(uint32_t id, const string& name, Priority::Value priority) { - auto it(_types.find(id)); - if (it != _types.end()) { - throw config::InvalidConfigException("Load type identifiers need to be non-overlapping, 1+ and without gaps.\n", VESPA_STRLOC); - } - if (_nameMap.find(name) != _nameMap.end()) { - throw config::InvalidConfigException("Load type names need to be unique and different from the reserved name \"default\".", VESPA_STRLOC); - } - _types[id] = std::make_unique<LoadType>(id, name, priority); - _nameMap[name] = _types[id].get(); -} - -metrics::LoadTypeSet -LoadTypeSet::getMetricLoadTypes() const { - metrics::LoadTypeSet result; - for (const auto & entry : _types) { - result.push_back(metrics::LoadType(entry.first, entry.second->getName())); - } - return result; -} - -const LoadType& -LoadTypeSet::operator[](uint32_t id) const { - auto it(_types.find(id)); - return (it == _types.end() ? LoadType::DEFAULT : *it->second); -} - -const LoadType& -LoadTypeSet::operator[](const string& name) const { - auto it(_nameMap.find(name)); - - return (it == _nameMap.end() ? LoadType::DEFAULT : *it->second); -} - -const LoadType* -LoadTypeSet::findLoadType(const string& name) const { - auto it(_nameMap.find(name)); - return (it == _nameMap.end() ? 0 : it->second); -} - -} diff --git a/documentapi/src/vespa/documentapi/loadtypes/loadtypeset.h b/documentapi/src/vespa/documentapi/loadtypes/loadtypeset.h deleted file mode 100644 index f593935e8b3..00000000000 --- a/documentapi/src/vespa/documentapi/loadtypes/loadtypeset.h +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -/** - * \class LoadTypeSet - * \ingroup loadtype - * - * \brief Class containing all the various load types that have been configured. - * - * The load type set makes configured load types available in an easy way for - * different parts of Vespa to access it. - */ -#pragma once - -#include "loadtype.h" -#include <vespa/vespalib/stllike/hash_map.h> -#include <map> - -namespace config { - class ConfigUri; -} - -namespace vespa { -namespace config { -namespace content { -namespace internal { - class InternalLoadTypeType; -} -} -} -} - -namespace documentapi { - -class LoadTypeSet -{ - using LoadTypeConfig = const vespa::config::content::internal::InternalLoadTypeType; - vespalib::hash_map<uint32_t, std::unique_ptr<LoadType>> _types; - // Want order to be ~ alphabetical. - std::map<string, LoadType*> _nameMap; - - void configure(const LoadTypeConfig& config); -public: - typedef std::unique_ptr<LoadTypeSet> UP; - typedef std::shared_ptr<LoadTypeSet> SP; - - LoadTypeSet(const LoadTypeSet&) = delete; - LoadTypeSet& operator=(const LoadTypeSet&) = delete; - - LoadTypeSet(); - LoadTypeSet(const config::ConfigUri & configUri); - LoadTypeSet(const LoadTypeConfig& config); - ~LoadTypeSet(); - - void addLoadType(uint32_t id, const string& name, Priority::Value priority); - - const std::map<string, LoadType*>& getLoadTypes() const { return _nameMap; } - metrics::LoadTypeSet getMetricLoadTypes() const; - - const LoadType& operator[](uint32_t id) const; - const LoadType& operator[](const string& name) const; - uint32_t size() const { return uint32_t(_types.size()); } - - /** - * Attempts to locate a load type with given name. Returns 0 if none found. - */ - const LoadType* findLoadType(const string& name) const; -}; - -} // documentapi - diff --git a/documentapi/src/vespa/documentapi/messagebus/documentprotocol.cpp b/documentapi/src/vespa/documentapi/messagebus/documentprotocol.cpp index a957ce5e4ff..560f2f28f0e 100644 --- a/documentapi/src/vespa/documentapi/messagebus/documentprotocol.cpp +++ b/documentapi/src/vespa/documentapi/messagebus/documentprotocol.cpp @@ -21,11 +21,9 @@ namespace documentapi { const mbus::string DocumentProtocol::NAME = "document"; -DocumentProtocol::DocumentProtocol(const LoadTypeSet& loadTypes, - std::shared_ptr<const DocumentTypeRepo> repo, - const string &configId) : +DocumentProtocol::DocumentProtocol(std::shared_ptr<const DocumentTypeRepo> repo, const string &configId) : _routingPolicyRepository(std::make_unique<RoutingPolicyRepository>()), - _routableRepository(std::make_unique<RoutableRepository>(loadTypes)), + _routableRepository(std::make_unique<RoutableRepository>()), _repo(std::move(repo)) { // Prepare config string for routing policy factories. diff --git a/documentapi/src/vespa/documentapi/messagebus/documentprotocol.h b/documentapi/src/vespa/documentapi/messagebus/documentprotocol.h index eeae4553b3b..f35c6dd0810 100644 --- a/documentapi/src/vespa/documentapi/messagebus/documentprotocol.h +++ b/documentapi/src/vespa/documentapi/messagebus/documentprotocol.h @@ -17,7 +17,6 @@ namespace document { namespace documentapi { -class LoadTypeSet; class RoutingPolicyRepository; class RoutableRepository; class IRoutingPolicyFactory; @@ -194,9 +193,7 @@ public: * * @param configId The id to use when subscribing to config. */ - DocumentProtocol(const LoadTypeSet& loadTypes, - std::shared_ptr<const document::DocumentTypeRepo> repo, - const string &configId = ""); + DocumentProtocol(std::shared_ptr<const document::DocumentTypeRepo> repo, const string &configId = ""); ~DocumentProtocol() override; /** diff --git a/documentapi/src/vespa/documentapi/messagebus/iroutablefactory.h b/documentapi/src/vespa/documentapi/messagebus/iroutablefactory.h index 2b492dea240..9a41960b852 100644 --- a/documentapi/src/vespa/documentapi/messagebus/iroutablefactory.h +++ b/documentapi/src/vespa/documentapi/messagebus/iroutablefactory.h @@ -8,8 +8,6 @@ namespace documentapi { -class LoadTypeSet; - /** * This interface defines the necessary methods of a routable factory that can be plugged into a {@link * DocumentProtocol} using the {@link DocumentProtocol#putRoutableFactory(int, RoutableFactory, @@ -59,7 +57,7 @@ public: * @param loadTypes The set of configured load types. * @return The decoded routable. */ - virtual mbus::Routable::UP decode(document::ByteBuffer &in, const LoadTypeSet& loadTypes) const = 0; + virtual mbus::Routable::UP decode(document::ByteBuffer &in) const = 0; }; } diff --git a/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp index 26e609c79fa..3af4e6ee23d 100644 --- a/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp +++ b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.cpp @@ -7,7 +7,7 @@ #include <vespa/document/select/parser.h> #include <vespa/document/update/documentupdate.h> #include <vespa/documentapi/documentapi.h> -#include <vespa/documentapi/loadtypes/loadtypeset.h> +#include <vespa/documentapi/loadtypes/loadtype.h> #include <vespa/vespalib/objects/nbostream.h> using document::FixedBucketSpaces; @@ -27,7 +27,7 @@ RoutableFactories60::DocumentMessageFactory::encode(const mbus::Routable &obj, v } mbus::Routable::UP -RoutableFactories60::DocumentMessageFactory::decode(document::ByteBuffer &in, const LoadTypeSet&) const +RoutableFactories60::DocumentMessageFactory::decode(document::ByteBuffer &in) const { uint8_t pri; in.getByte(pri); @@ -50,7 +50,7 @@ RoutableFactories60::DocumentReplyFactory::encode(const mbus::Routable &obj, ves } mbus::Routable::UP -RoutableFactories60::DocumentReplyFactory::decode(document::ByteBuffer &in, const LoadTypeSet&) const +RoutableFactories60::DocumentReplyFactory::decode(document::ByteBuffer &in) const { uint8_t pri; in.getByte(pri); diff --git a/documentapi/src/vespa/documentapi/messagebus/routablefactories60.h b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.h index 579abbda291..7e8156ee071 100644 --- a/documentapi/src/vespa/documentapi/messagebus/routablefactories60.h +++ b/documentapi/src/vespa/documentapi/messagebus/routablefactories60.h @@ -87,7 +87,7 @@ public: public: bool encode(const mbus::Routable &obj, vespalib::GrowableByteBuffer &out) const override; - mbus::Routable::UP decode(document::ByteBuffer &in, const LoadTypeSet& loadTypes) const override; + mbus::Routable::UP decode(document::ByteBuffer &in) const override; }; /** @@ -121,7 +121,7 @@ public: public: bool encode(const mbus::Routable &obj, vespalib::GrowableByteBuffer &out) const override; - mbus::Routable::UP decode(document::ByteBuffer &in, const LoadTypeSet& loadTypes) const override; + mbus::Routable::UP decode(document::ByteBuffer &in) const override; }; //////////////////////////////////////////////////////////////////////////////// diff --git a/documentapi/src/vespa/documentapi/messagebus/routablerepository.cpp b/documentapi/src/vespa/documentapi/messagebus/routablerepository.cpp index 6ed33cda060..60cdbb3a5e8 100644 --- a/documentapi/src/vespa/documentapi/messagebus/routablerepository.cpp +++ b/documentapi/src/vespa/documentapi/messagebus/routablerepository.cpp @@ -1,9 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "routablerepository.h" -#include <vespa/documentapi/loadtypes/loadtypeset.h> #include <vespa/document/util/stringutil.h> -#include <vespa/vespalib/util/exceptions.h> #include <sstream> #include <algorithm> @@ -44,11 +42,10 @@ RoutableRepository::VersionMap::getFactory(const vespalib::Version &version) con [](auto & lhs, auto & rhs) { return lhs.first.compareTo(rhs.first) <= 0; })->second; } -RoutableRepository::RoutableRepository(const LoadTypeSet& loadTypes) : +RoutableRepository::RoutableRepository() : _lock(), _factoryTypes(), - _cache(), - _loadTypes(loadTypes) + _cache() { } @@ -69,7 +66,7 @@ RoutableRepository::decode(const vespalib::Version &version, mbus::BlobRef data) type, version.toString().c_str()); return mbus::Routable::UP(); } - mbus::Routable::UP ret = factory->decode(in, _loadTypes); + mbus::Routable::UP ret = factory->decode(in); if (!ret) { LOG(error, "Routable factory failed to deserialize routable of type %d (version %s).", type, version.toString().c_str()); diff --git a/documentapi/src/vespa/documentapi/messagebus/routablerepository.h b/documentapi/src/vespa/documentapi/messagebus/routablerepository.h index 7e73f3929b8..04240b99bd7 100644 --- a/documentapi/src/vespa/documentapi/messagebus/routablerepository.h +++ b/documentapi/src/vespa/documentapi/messagebus/routablerepository.h @@ -9,8 +9,6 @@ namespace documentapi { -class LoadTypeSet; - /** * This class encapsulates the logic required to map routable type and version to a corresponding {@link * RoutableFactory}. It is owned and accessed through a {@link DocumentProtocol} instance. This class uses a @@ -40,7 +38,6 @@ private: mutable std::mutex _lock; TypeMap _factoryTypes; mutable FactoryCache _cache; - const LoadTypeSet& _loadTypes; public: RoutableRepository(const RoutableRepository &) = delete; @@ -48,7 +45,7 @@ public: /** * Constructs a new routable repository. */ - explicit RoutableRepository(const LoadTypeSet& loadTypes); + explicit RoutableRepository(); /** * Decodes a {@link Routable} from the given byte array. This uses the content of the byte array to |