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,19 +225,23 @@ monitor_start(MXS_MONITOR *monitor, const MXS_CONFIG_PARAMETER* params)
{ {
spinlock_acquire(&monitor->lock); spinlock_acquire(&monitor->lock);
if (journal_is_stale(monitor, monitor->journal_max_age)) // Only start the monitor if it's newly created or currently stopped.
if (monitor->state == MONITOR_STATE_ALLOC || monitor->state == MONITOR_STATE_STOPPED)
{ {
MXS_WARNING("Removing stale journal file for monitor '%s'.", monitor->name); if (journal_is_stale(monitor, monitor->journal_max_age))
remove_server_journal(monitor); {
} MXS_WARNING("Removing stale journal file for monitor '%s'.", monitor->name);
remove_server_journal(monitor);
}
if ((*monitor->api->startMonitor)(monitor->instance, params)) if ((*monitor->api->startMonitor)(monitor->instance, params))
{ {
monitor->state = MONITOR_STATE_RUNNING; monitor->state = MONITOR_STATE_RUNNING;
} }
else else
{ {
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))
{ {