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:
@ -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
|
||||||
|
@ -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.");
|
||||||
|
|
||||||
|
@ -476,26 +476,21 @@ 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
|
RoutingWorker* pWorker = this_unit.ppWorkers[i];
|
||||||
// we exclude that.
|
mxb_assert(pWorker);
|
||||||
if (i != this_unit.id_main_worker)
|
|
||||||
{
|
|
||||||
RoutingWorker* pWorker = this_unit.ppWorkers[i];
|
|
||||||
mxb_assert(pWorker);
|
|
||||||
|
|
||||||
if (!pWorker->start())
|
if (!pWorker->start())
|
||||||
{
|
{
|
||||||
MXS_ALERT("Could not start routing worker %d of %d.", i, config_threadcount());
|
MXS_ALERT("Could not start routing worker %d of %d.", i, config_threadcount());
|
||||||
rv = false;
|
rv = false;
|
||||||
// At startup, so we don't even try to clean up.
|
// At startup, so we don't even try to clean up.
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -503,17 +498,14 @@ bool RoutingWorker::start_threaded_workers()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 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];
|
||||||
{
|
mxb_assert(pWorker);
|
||||||
RoutingWorker* pWorker = this_unit.ppWorkers[i];
|
|
||||||
mxb_assert(pWorker);
|
|
||||||
|
|
||||||
pWorker->join();
|
pWorker->join();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user