MXS-2218 Treat all routing workers the same way

All routing workers are now started an stopped the same way.
This commit is contained in:
Johan Wikman
2019-01-07 16:23:38 +02:00
parent 35dfa05767
commit d50ae1fb8a
3 changed files with 20 additions and 32 deletions

View File

@ -287,17 +287,16 @@ public:
static int get_current_id(); static int get_current_id();
/** /**
* Starts all routing workers but the main worker (the one running in * Starts all routing workers.
* the main thread).
* *
* @return True, if all secondary workers could be started. * @return True, if all workers could be started.
*/ */
static bool start_threaded_workers(); static bool start_workers();
/** /**
* Waits for all threaded workers. * Waits for all routing workers.
*/ */
static void join_threaded_workers(); static void join_workers();
/** /**
* Deprecated * Deprecated

View File

@ -2231,7 +2231,7 @@ int main(int argc, char** argv)
/*< /*<
* Start the routing workers running in their own thread. * Start the routing workers running in their own thread.
*/ */
if (!RoutingWorker::start_threaded_workers()) if (!RoutingWorker::start_workers())
{ {
const char* logerr = "Failed to start routing workers."; const char* logerr = "Failed to start routing workers.";
print_log_n_stderr(true, true, logerr, logerr, 0); print_log_n_stderr(true, true, logerr, logerr, 0);
@ -2279,8 +2279,6 @@ int main(int argc, char** argv)
goto return_main; goto return_main;
} }
worker->start();
main_worker->run(); main_worker->run();
/** Stop administrative interface */ /** Stop administrative interface */
@ -2297,11 +2295,10 @@ int main(int argc, char** argv)
*/ */
hkfinish(); hkfinish();
worker->join();
/*< /*<
* Wait for worker threads to exit. * Wait for worker threads to exit.
*/ */
RoutingWorker::join_threaded_workers(); RoutingWorker::join_workers();
MXS_NOTICE("All workers have shut down."); MXS_NOTICE("All workers have shut down.");

View File

@ -476,15 +476,11 @@ int RoutingWorker::get_current_id()
} }
// static // static
bool RoutingWorker::start_threaded_workers() bool RoutingWorker::start_workers()
{ {
bool rv = true; bool rv = true;
for (int i = this_unit.id_min_worker; i <= this_unit.id_max_worker; ++i) for (int i = this_unit.id_min_worker; i <= this_unit.id_max_worker; ++i)
{
// The main RoutingWorker will run in the main thread, so
// we exclude that.
if (i != this_unit.id_main_worker)
{ {
RoutingWorker* pWorker = this_unit.ppWorkers[i]; RoutingWorker* pWorker = this_unit.ppWorkers[i];
mxb_assert(pWorker); mxb_assert(pWorker);
@ -497,24 +493,20 @@ bool RoutingWorker::start_threaded_workers()
break; break;
} }
} }
}
return rv; return rv;
} }
// static // static
void RoutingWorker::join_threaded_workers() void RoutingWorker::join_workers()
{ {
for (int i = this_unit.id_min_worker; i <= this_unit.id_max_worker; i++) for (int i = this_unit.id_min_worker; i <= this_unit.id_max_worker; i++)
{
if (i != this_unit.id_main_worker)
{ {
RoutingWorker* pWorker = this_unit.ppWorkers[i]; RoutingWorker* pWorker = this_unit.ppWorkers[i];
mxb_assert(pWorker); mxb_assert(pWorker);
pWorker->join(); pWorker->join();
} }
}
} }
// static // static