diff --git a/storage/innobase/srv/srv0srv.cc b/storage/innobase/srv/srv0srv.cc index cc85416aac7..6388f84cdea 100644 --- a/storage/innobase/srv/srv0srv.cc +++ b/storage/innobase/srv/srv0srv.cc @@ -2780,7 +2780,7 @@ srv_purge_coordinator_suspend( rw_lock_x_lock(&purge_sys->latch); - stop = (srv_shutdown_state == SRV_SHUTDOWN_NONE + stop = (srv_shutdown_state <= SRV_SHUTDOWN_INITIATED && purge_sys->state == PURGE_STATE_STOP); if (!stop) { @@ -2856,7 +2856,7 @@ DECLARE_THREAD(srv_purge_coordinator_thread)( /* If there are no records to purge or the last purge didn't purge any records then wait for activity. */ - if (srv_shutdown_state == SRV_SHUTDOWN_NONE + if (srv_shutdown_state <= SRV_SHUTDOWN_INITIATED && srv_undo_sources && (purge_sys->state == PURGE_STATE_STOP || n_total_purged == 0)) { diff --git a/storage/innobase/srv/srv0start.cc b/storage/innobase/srv/srv0start.cc index 8efae318ee0..8479847f779 100644 --- a/storage/innobase/srv/srv0start.cc +++ b/storage/innobase/srv/srv0start.cc @@ -1092,7 +1092,7 @@ srv_start_wait_for_purge_to_start() ut_a(state != PURGE_STATE_DISABLED); - while (srv_shutdown_state == SRV_SHUTDOWN_NONE + while (srv_shutdown_state <= SRV_SHUTDOWN_INITIATED && srv_force_recovery < SRV_FORCE_NO_BACKGROUND && state == PURGE_STATE_INIT) {