Fix monitor shutdown and restart

Monitor restart was not working.
This commit is contained in:
Esa Korhonen
2018-07-02 19:07:24 +03:00
parent 03491a45f0
commit 7ded2c436f
2 changed files with 17 additions and 11 deletions

View File

@ -225,6 +225,9 @@ monitor_start(MXS_MONITOR *monitor, const MXS_CONFIG_PARAMETER* params)
{ {
spinlock_acquire(&monitor->lock); spinlock_acquire(&monitor->lock);
// Only start the monitor if it's newly created or currently stopped.
if (monitor->state == MONITOR_STATE_ALLOC || monitor->state == MONITOR_STATE_STOPPED)
{
if (journal_is_stale(monitor, monitor->journal_max_age)) if (journal_is_stale(monitor, monitor->journal_max_age))
{ {
MXS_WARNING("Removing stale journal file for monitor '%s'.", monitor->name); MXS_WARNING("Removing stale journal file for monitor '%s'.", monitor->name);
@ -239,6 +242,7 @@ monitor_start(MXS_MONITOR *monitor, const MXS_CONFIG_PARAMETER* params)
{ {
MXS_ERROR("Failed to start monitor '%s'.", monitor->name); MXS_ERROR("Failed to start monitor '%s'.", monitor->name);
} }
}
spinlock_release(&monitor->lock); spinlock_release(&monitor->lock);
} }

View File

@ -503,6 +503,8 @@ void Worker::run()
bool Worker::start(size_t stack_size) bool Worker::start(size_t stack_size)
{ {
m_started = true; m_started = true;
m_should_shutdown = false;
m_shutdown_initiated = false;
if (!thread_start(&m_thread, &Worker::thread_main, this, stack_size)) if (!thread_start(&m_thread, &Worker::thread_main, this, stack_size))
{ {