summaryrefslogtreecommitdiffstats
path: root/slobrok
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-05-10 11:25:48 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2019-05-10 12:25:38 +0000
commit4412aace869986be3a1060f78f367841353d3384 (patch)
treef4b5e1f6da5eaf1563f3b2fd64779800acfd5796 /slobrok
parent840d4e0578dc627b75bcd0050f1b253e84cc30ed (diff)
Simplify the supervisor responsibility
Diffstat (limited to 'slobrok')
-rw-r--r--slobrok/src/apps/check_slobrok/check_slobrok.cpp18
-rw-r--r--slobrok/src/apps/sbcmd/sbcmd.cpp18
-rw-r--r--slobrok/src/tests/configure/configure.cpp44
-rw-r--r--slobrok/src/tests/mirrorapi/mirrorapi.cpp26
-rw-r--r--slobrok/src/tests/oldapi/old.cpp30
-rw-r--r--slobrok/src/tests/registerapi/registerapi.cpp5
-rw-r--r--slobrok/src/tests/standalone/standalone.cpp25
-rw-r--r--slobrok/src/tests/startsome/rpc_info.cpp16
-rw-r--r--slobrok/src/tests/startsome/tstdst.cpp2
-rw-r--r--slobrok/src/vespa/slobrok/server/sbenv.cpp2
10 files changed, 77 insertions, 109 deletions
diff --git a/slobrok/src/apps/check_slobrok/check_slobrok.cpp b/slobrok/src/apps/check_slobrok/check_slobrok.cpp
index ed72c459e44..0342cccb221 100644
--- a/slobrok/src/apps/check_slobrok/check_slobrok.cpp
+++ b/slobrok/src/apps/check_slobrok/check_slobrok.cpp
@@ -13,14 +13,14 @@ LOG_SETUP("check_slobrok");
class Slobrok_Checker : public FastOS_Application
{
private:
- std::unique_ptr<FRT_Supervisor> _supervisor;
+ std::unique_ptr<fnet::frt::StandaloneFRT> _server;
FRT_Target *_target;
Slobrok_Checker(const Slobrok_Checker &);
Slobrok_Checker &operator=(const Slobrok_Checker &);
public:
- Slobrok_Checker() : _supervisor(), _target(nullptr) {}
+ Slobrok_Checker() : _server(), _target(nullptr) {}
virtual ~Slobrok_Checker();
int usage();
void initRPC(const char *spec);
@@ -30,7 +30,7 @@ public:
Slobrok_Checker::~Slobrok_Checker()
{
- LOG_ASSERT( !_supervisor);
+ LOG_ASSERT( !_server);
LOG_ASSERT(_target == nullptr);
}
@@ -46,9 +46,8 @@ Slobrok_Checker::usage()
void
Slobrok_Checker::initRPC(const char *spec)
{
- _supervisor = std::make_unique<FRT_Supervisor>();
- _target = _supervisor->GetTarget(spec);
- _supervisor->Start();
+ _server = std::make_unique<fnet::frt::StandaloneFRT>();
+ _target = _server->supervisor().GetTarget(spec);
}
@@ -59,9 +58,8 @@ Slobrok_Checker::finiRPC()
_target->SubRef();
_target = nullptr;
}
- if (_supervisor) {
- _supervisor->ShutDown(true);
- _supervisor.reset();
+ if (_server) {
+ _server.reset();
}
}
@@ -82,7 +80,7 @@ Slobrok_Checker::Main()
initRPC(tmp.str().c_str());
}
- FRT_RPCRequest *req = _supervisor->AllocRPCRequest();
+ FRT_RPCRequest *req = _server->supervisor().AllocRPCRequest();
req->SetMethodName("slobrok.system.version");
_target->InvokeSync(req, 5.0);
diff --git a/slobrok/src/apps/sbcmd/sbcmd.cpp b/slobrok/src/apps/sbcmd/sbcmd.cpp
index c4b76bd7ed0..f32155ae80b 100644
--- a/slobrok/src/apps/sbcmd/sbcmd.cpp
+++ b/slobrok/src/apps/sbcmd/sbcmd.cpp
@@ -12,14 +12,14 @@ LOG_SETUP("vespa-slobrok-cmd");
class Slobrok_CMD : public FastOS_Application
{
private:
- std::unique_ptr<FRT_Supervisor> _supervisor;
+ std::unique_ptr<fnet::frt::StandaloneFRT> _server;
FRT_Target *_target;
Slobrok_CMD(const Slobrok_CMD &);
Slobrok_CMD &operator=(const Slobrok_CMD &);
public:
- Slobrok_CMD() : _supervisor(), _target(nullptr) {}
+ Slobrok_CMD() : _server(), _target(nullptr) {}
virtual ~Slobrok_CMD();
int usage();
void initRPC(const char *spec);
@@ -29,7 +29,7 @@ public:
Slobrok_CMD::~Slobrok_CMD()
{
- LOG_ASSERT(! _supervisor);
+ LOG_ASSERT(! _server);
LOG_ASSERT(_target == nullptr);
}
@@ -56,9 +56,8 @@ Slobrok_CMD::usage()
void
Slobrok_CMD::initRPC(const char *spec)
{
- _supervisor = std::make_unique<FRT_Supervisor>();
- _target = _supervisor->GetTarget(spec);
- _supervisor->Start();
+ _server = std::make_unique<fnet::frt::StandaloneFRT>();
+ _target = _server->supervisor().GetTarget(spec);
}
@@ -69,9 +68,8 @@ Slobrok_CMD::finiRPC()
_target->SubRef();
_target = nullptr;
}
- if (_supervisor) {
- _supervisor->ShutDown(true);
- _supervisor.reset();
+ if (_server) {
+ _server.reset();
}
}
@@ -95,7 +93,7 @@ Slobrok_CMD::Main()
bool threeTables = false;
bool twoTables = false;
- FRT_RPCRequest *req = _supervisor->AllocRPCRequest();
+ FRT_RPCRequest *req = _server->supervisor().AllocRPCRequest();
req->SetMethodName(_argv[2]);
if (strcmp(_argv[2], "slobrok.admin.listAllRpcServers") == 0) {
diff --git a/slobrok/src/tests/configure/configure.cpp b/slobrok/src/tests/configure/configure.cpp
index 7b1c32bceef..2783d0e3ebf 100644
--- a/slobrok/src/tests/configure/configure.cpp
+++ b/slobrok/src/tests/configure/configure.cpp
@@ -97,8 +97,8 @@ Test::Main()
{
TEST_INIT("configure_test");
- FRT_Supervisor orb1;
- FRT_Supervisor orb2;
+ fnet::frt::StandaloneFRT orb1;
+ fnet::frt::StandaloneFRT orb2;
config::ConfigSet set;
cloud::config::SlobroksConfigBuilder srv1Builder;
@@ -141,18 +141,16 @@ Test::Main()
SlobrokServer serverOne(srvConfig1);
SlobrokServer serverTwo(srvConfig2);
- MirrorAPI mirror1(orb1, cliConfig3); // NB this one will be changed
- MirrorAPI mirror2(orb2, cliConfig2);
+ MirrorAPI mirror1(orb1.supervisor(), cliConfig3); // NB this one will be changed
+ MirrorAPI mirror2(orb2.supervisor(), cliConfig2);
- RegisterAPI reg1(orb1, cliConfig1);
- RegisterAPI reg2(orb2, cliConfig2);
+ RegisterAPI reg1(orb1.supervisor(), cliConfig1);
+ RegisterAPI reg2(orb2.supervisor(), cliConfig2);
- orb1.Listen(18526);
- orb2.Listen(18527);
- std::string myspec1 = createSpec(orb1.GetListenPort());
- std::string myspec2 = createSpec(orb2.GetListenPort());
- orb1.Start();
- orb2.Start();
+ orb1.supervisor().Listen(18526);
+ orb2.supervisor().Listen(18527);
+ std::string myspec1 = createSpec(orb1.supervisor().GetListenPort());
+ std::string myspec2 = createSpec(orb2.supervisor().GetListenPort());
reg1.registerName("A");
reg2.registerName("B");
@@ -183,16 +181,14 @@ Test::Main()
reg1.registerName("A");
reg2.registerName("B");
- FRT_Supervisor orb3;
- FRT_Supervisor orb4;
- RegisterAPI reg3(orb3, cliConfig1);
- RegisterAPI reg4(orb4, cliConfig2);
- orb3.Listen(18528);
- orb4.Listen(18529);
- std::string myspec3 = createSpec(orb3.GetListenPort());
- std::string myspec4 = createSpec(orb4.GetListenPort());
- orb3.Start();
- orb4.Start();
+ fnet::frt::StandaloneFRT orb3;
+ fnet::frt::StandaloneFRT orb4;
+ RegisterAPI reg3(orb3.supervisor(), cliConfig1);
+ RegisterAPI reg4(orb4.supervisor(), cliConfig2);
+ orb3.supervisor().Listen(18528);
+ orb4.supervisor().Listen(18529);
+ std::string myspec3 = createSpec(orb3.supervisor().GetListenPort());
+ std::string myspec4 = createSpec(orb4.supervisor().GetListenPort());
reg3.registerName("B");
reg4.registerName("A");
@@ -217,9 +213,5 @@ Test::Main()
serverOne.stop();
serverTwo.stop();
- orb1.ShutDown(true);
- orb2.ShutDown(true);
- orb3.ShutDown(true);
- orb4.ShutDown(true);
TEST_DONE();
}
diff --git a/slobrok/src/tests/mirrorapi/mirrorapi.cpp b/slobrok/src/tests/mirrorapi/mirrorapi.cpp
index f77dfd80986..23cd201c551 100644
--- a/slobrok/src/tests/mirrorapi/mirrorapi.cpp
+++ b/slobrok/src/tests/mirrorapi/mirrorapi.cpp
@@ -21,7 +21,7 @@ TEST_SETUP(Test);
class Server : public FRT_Invokable
{
private:
- FRT_Supervisor _orb;
+ fnet::frt::StandaloneFRT _server;
std::string _name;
std::string _slobrokSpec;
@@ -34,12 +34,12 @@ public:
Server::Server(std::string name, int port, std::string slobrokSpec)
- : _orb(),
+ : _server(),
_name(name),
_slobrokSpec(slobrokSpec)
{
{
- FRT_ReflectionBuilder rb(&_orb);
+ FRT_ReflectionBuilder rb(&_server.supervisor());
//---------------------------------------------------------------------
rb.DefineMethod("slobrok.callback.listNamesServed", "", "S",
FRT_METHOD(Server::rpc_listNamesServed), this);
@@ -47,8 +47,7 @@ Server::Server(std::string name, int port, std::string slobrokSpec)
rb.ReturnDesc("names", "The rpcserver names on this server");
//---------------------------------------------------------------------
}
- _orb.Listen(port);
- _orb.Start();
+ _server.supervisor().Listen(port);
}
@@ -56,14 +55,14 @@ void
Server::reg()
{
char spec[64];
- sprintf(spec, "tcp/localhost:%d", _orb.GetListenPort());
+ sprintf(spec, "tcp/localhost:%d", _server.supervisor().GetListenPort());
- FRT_RPCRequest *req = _orb.AllocRPCRequest();
+ FRT_RPCRequest *req = _server.supervisor().AllocRPCRequest();
req->SetMethodName("slobrok.registerRpcServer");
req->GetParams()->AddString(_name.c_str());
req->GetParams()->AddString(spec);
- FRT_Target *sb = _orb.GetTarget(_slobrokSpec.c_str());
+ FRT_Target *sb = _server.supervisor().GetTarget(_slobrokSpec.c_str());
sb->InvokeSync(req, 5.0);
sb->SubRef();
req->SubRef();
@@ -79,10 +78,7 @@ Server::rpc_listNamesServed(FRT_RPCRequest *req)
}
-Server::~Server()
-{
- _orb.ShutDown(true);
-}
+Server::~Server() = default;
//-----------------------------------------------------------------------------
@@ -140,10 +136,9 @@ Test::Main()
cloud::config::SlobroksConfig::Slobrok slobrok;
slobrok.connectionspec = "tcp/localhost:18501";
specBuilder.slobrok.push_back(slobrok);
- FRT_Supervisor orb;
- MirrorAPI mirror(orb, config::ConfigUri::createFromInstance(specBuilder));
+ fnet::frt::StandaloneFRT server;
+ MirrorAPI mirror(server.supervisor(), config::ConfigUri::createFromInstance(specBuilder));
EXPECT_TRUE(!mirror.ready());
- orb.Start();
FastOS_Thread::Sleep(1000);
a.reg();
@@ -224,6 +219,5 @@ Test::Main()
.add("A/x/w", "tcp/localhost:18502")));
mock.stop();
- orb.ShutDown(true);
TEST_DONE();
}
diff --git a/slobrok/src/tests/oldapi/old.cpp b/slobrok/src/tests/oldapi/old.cpp
index 42cec186a08..26cf94613bd 100644
--- a/slobrok/src/tests/oldapi/old.cpp
+++ b/slobrok/src/tests/oldapi/old.cpp
@@ -19,9 +19,9 @@ TEST_SETUP(Test);
class Server : public FRT_Invokable
{
private:
- FRT_Supervisor _orb;
- std::string _name;
- std::string _slobrokSpec;
+ fnet::frt::StandaloneFRT _server;
+ std::string _name;
+ std::string _slobrokSpec;
public:
Server(std::string name, int port, std::string slobrokSpec);
@@ -32,12 +32,12 @@ public:
Server::Server(std::string name, int port, std::string slobrokSpec)
- : _orb(),
+ : _server(),
_name(name),
_slobrokSpec(slobrokSpec)
{
{
- FRT_ReflectionBuilder rb(&_orb);
+ FRT_ReflectionBuilder rb(&_server.supervisor());
//---------------------------------------------------------------------
rb.DefineMethod("slobrok.callback.listNamesServed", "", "S",
FRT_METHOD(Server::rpc_listNamesServed), this);
@@ -45,8 +45,7 @@ Server::Server(std::string name, int port, std::string slobrokSpec)
rb.ReturnDesc("names", "The rpcserver names on this server");
//---------------------------------------------------------------------
}
- _orb.Listen(port);
- _orb.Start();
+ _server.supervisor().Listen(port);
}
@@ -54,14 +53,14 @@ void
Server::reg()
{
char spec[64];
- sprintf(spec, "tcp/localhost:%d", _orb.GetListenPort());
+ sprintf(spec, "tcp/localhost:%d", _server.supervisor().GetListenPort());
- FRT_RPCRequest *req = _orb.AllocRPCRequest();
+ FRT_RPCRequest *req = _server.supervisor().AllocRPCRequest();
req->SetMethodName("slobrok.registerRpcServer");
req->GetParams()->AddString(_name.c_str());
req->GetParams()->AddString(spec);
- FRT_Target *sb = _orb.GetTarget(_slobrokSpec.c_str());
+ FRT_Target *sb = _server.supervisor().GetTarget(_slobrokSpec.c_str());
sb->InvokeSync(req, 5.0);
sb->SubRef();
req->SubRef();
@@ -77,10 +76,7 @@ Server::rpc_listNamesServed(FRT_RPCRequest *req)
}
-Server::~Server()
-{
- _orb.ShutDown(true);
-}
+Server::~Server() = default;
//-----------------------------------------------------------------------------
@@ -136,10 +132,9 @@ Test::Main()
std::vector<std::string> slobrokSpecs;
slobrokSpecs.push_back("tcp/localhost:18531");
- FRT_Supervisor orb;
- MirrorOld mirror(orb, slobrokSpecs);
+ fnet::frt::StandaloneFRT server;
+ MirrorOld mirror(server.supervisor(), slobrokSpecs);
EXPECT_TRUE(!mirror.ready());
- orb.Start();
FastOS_Thread::Sleep(1000);
a.reg();
@@ -217,6 +212,5 @@ Test::Main()
.add("A/x/w", "tcp/localhost:18532")));
mock.stop();
- orb.ShutDown(true);
TEST_DONE();
}
diff --git a/slobrok/src/tests/registerapi/registerapi.cpp b/slobrok/src/tests/registerapi/registerapi.cpp
index 2b356319ba0..ac7e662c6f2 100644
--- a/slobrok/src/tests/registerapi/registerapi.cpp
+++ b/slobrok/src/tests/registerapi/registerapi.cpp
@@ -83,12 +83,12 @@ Test::Main()
slobrokSpecs.slobrok.push_back(sb);
slobrok::ConfiguratorFactory config(config::ConfigUri::createFromInstance(slobrokSpecs));
- FRT_Supervisor orb;
+ fnet::frt::StandaloneFRT server;
+ FRT_Supervisor & orb = server.supervisor();
RegisterAPI reg(orb, config);
MirrorAPI mirror(orb, config);
orb.Listen(18549);
std::string myspec = createSpec(orb);
- orb.Start();
reg.registerName("A/x/w");
EXPECT_TRUE(reg.busy());
@@ -216,6 +216,5 @@ Test::Main()
.add("F/y/w", myspec.c_str())));
mock.stop();
- orb.ShutDown(true);
TEST_DONE();
}
diff --git a/slobrok/src/tests/standalone/standalone.cpp b/slobrok/src/tests/standalone/standalone.cpp
index 136f8125c8b..9d3fd694ee1 100644
--- a/slobrok/src/tests/standalone/standalone.cpp
+++ b/slobrok/src/tests/standalone/standalone.cpp
@@ -9,7 +9,7 @@
class Server : public FRT_Invokable
{
private:
- FRT_Supervisor _orb;
+ fnet::frt::StandaloneFRT _server;
std::string _name;
public:
@@ -20,11 +20,11 @@ public:
Server::Server(std::string name, int port)
- : _orb(),
+ : _server(),
_name(name)
{
{
- FRT_ReflectionBuilder rb(&_orb);
+ FRT_ReflectionBuilder rb(&_server.supervisor());
//---------------------------------------------------------------------
rb.DefineMethod("slobrok.callback.listNamesServed", "", "S",
FRT_METHOD(Server::rpc_listNamesServed), this);
@@ -32,8 +32,7 @@ Server::Server(std::string name, int port)
rb.ReturnDesc("names", "The rpcserver names on this server");
//---------------------------------------------------------------------
}
- _orb.Listen(port);
- _orb.Start();
+ _server.supervisor().Listen(port);
}
@@ -46,16 +45,13 @@ Server::rpc_listNamesServed(FRT_RPCRequest *req)
}
-Server::~Server()
-{
- _orb.ShutDown(true);
-}
+Server::~Server() = default;
namespace {
bool checkOk(FRT_RPCRequest *req)
{
- if (req == NULL) {
+ if (req == nullptr) {
fprintf(stderr, "req is null pointer, this is bad\n");
return false;
}
@@ -80,7 +76,7 @@ private:
public:
SubReferer(T* &t) : _t(t) {}
~SubReferer() {
- if (_t != NULL) _t->SubRef();
+ if (_t != nullptr) _t->SubRef();
}
};
@@ -118,14 +114,13 @@ TEST("standalone") {
slobrok::SlobrokServer slobrokServer(18541);
Stopper<slobrok::SlobrokServer> ssCleaner(slobrokServer);
- FRT_Supervisor orb;
- orb.Start();
- ShutDowner<FRT_Supervisor> orbCleaner(orb);
+ fnet::frt::StandaloneFRT server;
+ FRT_Supervisor & orb = server.supervisor();
FRT_Target *sb = orb.GetTarget(18541);
SubReferer<FRT_Target> sbCleaner(sb);
- FRT_RPCRequest *req = NULL;
+ FRT_RPCRequest *req = nullptr;
SubReferer<FRT_RPCRequest> reqCleaner(req);
for (int retry=0; retry < 5*61; retry++) {
diff --git a/slobrok/src/tests/startsome/rpc_info.cpp b/slobrok/src/tests/startsome/rpc_info.cpp
index 036c486fe4f..0f8739d12be 100644
--- a/slobrok/src/tests/startsome/rpc_info.cpp
+++ b/slobrok/src/tests/startsome/rpc_info.cpp
@@ -12,16 +12,16 @@ public:
void GetReq(FRT_RPCRequest **req, FRT_Supervisor *supervisor)
{
- if ((*req) != NULL)
+ if ((*req) != nullptr)
(*req)->SubRef();
(*req) = supervisor->AllocRPCRequest();
}
void FreeReqs(FRT_RPCRequest *r1, FRT_RPCRequest *r2)
{
- if (r1 != NULL)
+ if (r1 != nullptr)
r1->SubRef();
- if (r2 != NULL)
+ if (r2 != nullptr)
r2->SubRef();
}
@@ -75,11 +75,11 @@ public:
}
bool verbose = (_argc > 2 && strcmp(_argv[2], "verbose") == 0);
- FRT_Supervisor supervisor;
+ fnet::frt::StandaloneFRT server;
+ FRT_Supervisor & supervisor = server.supervisor();
FRT_Target *target = supervisor.GetTarget(_argv[1]);
- FRT_RPCRequest *m_list = NULL;
- FRT_RPCRequest *info = NULL;
- supervisor.Start();
+ FRT_RPCRequest *m_list = nullptr;
+ FRT_RPCRequest *info = nullptr;
GetReq(&info, &supervisor);
info->SetMethodName("frt.rpc.ping");
@@ -87,7 +87,6 @@ public:
if (info->IsError()) {
fprintf(stderr, "Error talking to %s\n", _argv[1]);
FreeReqs(m_list, info);
- supervisor.ShutDown(true);
return 1;
}
@@ -125,7 +124,6 @@ public:
}
FreeReqs(m_list, info);
target->SubRef();
- supervisor.ShutDown(true);
return 0;
}
};
diff --git a/slobrok/src/tests/startsome/tstdst.cpp b/slobrok/src/tests/startsome/tstdst.cpp
index 4723b3819d7..c119ed3c026 100644
--- a/slobrok/src/tests/startsome/tstdst.cpp
+++ b/slobrok/src/tests/startsome/tstdst.cpp
@@ -132,7 +132,7 @@ RPCHooks::rpc_stop(FRT_RPCRequest *req)
TstEnv::TstEnv(int sbp, int myp, const char *n)
: _transport(new FNET_Transport()),
- _supervisor(new FRT_Supervisor(_transport, NULL)),
+ _supervisor(new FRT_Supervisor(_transport)),
_myport(myp),
_sbport(sbp),
_rpcHooks(NULL),
diff --git a/slobrok/src/vespa/slobrok/server/sbenv.cpp b/slobrok/src/vespa/slobrok/server/sbenv.cpp
index 4e510b61e70..91a283b17f3 100644
--- a/slobrok/src/vespa/slobrok/server/sbenv.cpp
+++ b/slobrok/src/vespa/slobrok/server/sbenv.cpp
@@ -86,7 +86,7 @@ ConfigTask::PerformTask()
SBEnv::SBEnv(const ConfigShim &shim)
: _transport(std::make_unique<FNET_Transport>()),
- _supervisor(std::make_unique<FRT_Supervisor>(_transport.get(), nullptr)),
+ _supervisor(std::make_unique<FRT_Supervisor>(_transport.get())),
_configShim(shim),
_configurator(shim.factory().create(*this)),
_shuttingDown(false),