summaryrefslogtreecommitdiffstats
path: root/logd
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2019-03-29 08:45:50 +0000
committerGeir Storli <geirst@verizonmedia.com>2019-03-29 08:45:50 +0000
commit24e3f9a0da95f11d0603a727e1ea0c860422de2e (patch)
tree6086fe8449745f148e5b86615fba029608064d24 /logd
parentd0dd5320ca4d41847b5b789d2a8c6f7c21061b5b (diff)
Move ownership of supervisor out of rpc forwarder.
Diffstat (limited to 'logd')
-rw-r--r--logd/src/logd/rpc_forwarder.cpp8
-rw-r--r--logd/src/logd/rpc_forwarder.h4
-rw-r--r--logd/src/tests/rpc_forwarder/rpc_forwarder_test.cpp19
3 files changed, 23 insertions, 8 deletions
diff --git a/logd/src/logd/rpc_forwarder.cpp b/logd/src/logd/rpc_forwarder.cpp
index 4dbf9e768bc..e515f463db4 100644
--- a/logd/src/logd/rpc_forwarder.cpp
+++ b/logd/src/logd/rpc_forwarder.cpp
@@ -17,26 +17,24 @@ using vespalib::make_string;
namespace logdemon {
-RpcForwarder::RpcForwarder(Metrics& metrics, const vespalib::string &hostname, int rpc_port,
+RpcForwarder::RpcForwarder(Metrics& metrics, FRT_Supervisor& supervisor,
+ const vespalib::string &hostname, int rpc_port,
double rpc_timeout_secs, size_t max_messages_per_request)
: _metrics(metrics),
_connection_spec(make_string("tcp/%s:%d", hostname.c_str(), rpc_port)),
_rpc_timeout_secs(rpc_timeout_secs),
_max_messages_per_request(max_messages_per_request),
- _supervisor(),
_target(),
_messages(),
_bad_lines(0),
_forward_filter()
{
- _supervisor.Start();
- _target = _supervisor.GetTarget(_connection_spec.c_str());
+ _target = supervisor.GetTarget(_connection_spec.c_str());
}
RpcForwarder::~RpcForwarder()
{
_target->SubRef();
- _supervisor.ShutDown(true);
}
namespace {
diff --git a/logd/src/logd/rpc_forwarder.h b/logd/src/logd/rpc_forwarder.h
index 79ffb2154bc..3212da08195 100644
--- a/logd/src/logd/rpc_forwarder.h
+++ b/logd/src/logd/rpc_forwarder.h
@@ -21,14 +21,14 @@ private:
vespalib::string _connection_spec;
double _rpc_timeout_secs;
size_t _max_messages_per_request;
- FRT_Supervisor _supervisor;
FRT_Target* _target;
std::vector<ns_log::LogMessage> _messages;
int _bad_lines;
ForwardMap _forward_filter;
public:
- RpcForwarder(Metrics& metrics, const vespalib::string& logserver_host, int logserver_rpc_port,
+ RpcForwarder(Metrics& metrics, FRT_Supervisor& supervisor,
+ const vespalib::string& logserver_host, int logserver_rpc_port,
double rpc_timeout_secs, size_t max_messages_per_request);
~RpcForwarder() override;
void set_forward_filter(const ForwardMap& forward_filter) { _forward_filter = forward_filter; }
diff --git a/logd/src/tests/rpc_forwarder/rpc_forwarder_test.cpp b/logd/src/tests/rpc_forwarder/rpc_forwarder_test.cpp
index 4c87f5a025e..30ca5e19d44 100644
--- a/logd/src/tests/rpc_forwarder/rpc_forwarder_test.cpp
+++ b/logd/src/tests/rpc_forwarder/rpc_forwarder_test.cpp
@@ -94,16 +94,33 @@ struct MockMetricsManager : public DummyMetricsManager {
}
};
+class ClientSupervisor {
+private:
+ FRT_Supervisor _supervisor;
+public:
+ ClientSupervisor()
+ : _supervisor()
+ {
+ _supervisor.Start();
+ }
+ ~ClientSupervisor() {
+ _supervisor.ShutDown(true);
+ }
+ FRT_Supervisor& get() { return _supervisor; }
+
+};
+
struct RpcForwarderTest : public ::testing::Test {
RpcServer server;
std::shared_ptr<MockMetricsManager> metrics_mgr;
Metrics metrics;
+ ClientSupervisor supervisor;
RpcForwarder forwarder;
RpcForwarderTest()
: server(),
metrics_mgr(std::make_shared<MockMetricsManager>()),
metrics(metrics_mgr),
- forwarder(metrics, "localhost", server.get_listen_port(), 60.0, 3)
+ forwarder(metrics, supervisor.get(), "localhost", server.get_listen_port(), 60.0, 3)
{
ForwardMap forward_filter;
forward_filter[ns_log::Logger::error] = true;