diff options
Diffstat (limited to 'sql/slave.cc')
-rw-r--r-- | sql/slave.cc | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sql/slave.cc b/sql/slave.cc index 73a793e463f..10e4189c3b3 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -5763,14 +5763,18 @@ err_during_init: List_iterator<start_alter_info> info_iterator(mi->start_alter_list); while ((info= info_iterator++)) { - info->state= start_alter_state::SHUTDOWN_RECIEVED; + mysql_mutex_lock(&mi->start_alter_lock); + info->state= start_alter_state::ROLLBACK_ALTER; mysql_cond_broadcast(&info->start_alter_cond); + mysql_mutex_unlock(&mi->start_alter_lock); mysql_mutex_lock(&mi->start_alter_lock); - while(info->state == start_alter_state::SHUTDOWN_RECIEVED) + while(info->state == start_alter_state::ROLLBACK_ALTER) mysql_cond_wait(&info->start_alter_cond, &mi->start_alter_lock); - DBUG_ASSERT(info->state == start_alter_state::SHUTDOWN_COMPLETED); - info_iterator.remove(); mysql_mutex_unlock(&mi->start_alter_lock); + DBUG_ASSERT(info->state == start_alter_state::COMMITTED); + info_iterator.remove(); + mysql_cond_destroy(&info->start_alter_cond); + my_free(info); } /* When master_pos_wait() wakes up it will check this and terminate */ rli->slave_running= MYSQL_SLAVE_NOT_RUN; |