Commit 04ae1207 authored by Vicențiu Ciorbaru's avatar Vicențiu Ciorbaru

5.6.36-82.1

parent 360a4a03
......@@ -2789,7 +2789,10 @@ DECLARE_THREAD(buf_flush_page_cleaner_thread)(
when SRV_SHUTDOWN_CLEANUP is set other threads like the master
and the purge threads may be working as well. We start flushing
the buffer pool but can't be sure that no new pages are being
dirtied until we enter SRV_SHUTDOWN_FLUSH_PHASE phase. */
dirtied until we enter SRV_SHUTDOWN_FLUSH_PHASE phase. Because
the LRU manager thread is also flushing at SRV_SHUTDOWN_CLEANUP
but not SRV_SHUTDOWN_FLUSH_PHASE, we only leave the
SRV_SHUTDOWN_CLEANUP loop when the LRU manager quits. */
do {
n_flushed = page_cleaner_do_flush_batch(PCT_IO(100), LSN_MAX);
......@@ -2798,7 +2801,10 @@ DECLARE_THREAD(buf_flush_page_cleaner_thread)(
if (n_flushed == 0) {
os_thread_sleep(100000);
}
} while (srv_shutdown_state == SRV_SHUTDOWN_CLEANUP);
os_rmb;
} while (srv_shutdown_state == SRV_SHUTDOWN_CLEANUP
|| buf_lru_manager_is_active);
/* At this point all threads including the master and the purge
thread must have been suspended. */
......@@ -2815,6 +2821,11 @@ DECLARE_THREAD(buf_flush_page_cleaner_thread)(
buf_flush_wait_batch_end(NULL, BUF_FLUSH_LIST);
buf_flush_wait_LRU_batch_end();
#ifdef UNIV_DEBUG
os_rmb;
ut_ad(!buf_lru_manager_is_active);
#endif
bool success;
do {
......@@ -2877,6 +2888,7 @@ DECLARE_THREAD(buf_flush_lru_manager_thread)(
#endif /* UNIV_DEBUG_THREAD_CREATION */
buf_lru_manager_is_active = true;
os_wmb;
/* On server shutdown, the LRU manager thread runs through cleanup
phase to provide free pages for the master and purge threads. */
......@@ -2895,6 +2907,7 @@ DECLARE_THREAD(buf_flush_lru_manager_thread)(
}
buf_lru_manager_is_active = false;
os_wmb;
/* We count the number of threads in os_thread_exit(). A created
thread should always use that to exit and not use return() to exit. */
......
......@@ -47,7 +47,7 @@ Created 1/20/1994 Heikki Tuuri
#define INNODB_VERSION_BUGFIX MYSQL_VERSION_PATCH
#ifndef PERCONA_INNODB_VERSION
#define PERCONA_INNODB_VERSION 82.0
#define PERCONA_INNODB_VERSION 82.1
#endif
/* Enable UNIV_LOG_ARCHIVE in XtraDB */
......
......@@ -3499,6 +3499,7 @@ logs_empty_and_mark_files_at_shutdown(void)
before proceeding further. */
srv_shutdown_state = SRV_SHUTDOWN_FLUSH_PHASE;
count = 0;
os_rmb;
while (buf_page_cleaner_is_active || buf_lru_manager_is_active) {
if (srv_print_verbose_log && count == 0) {
ib_logf(IB_LOG_LEVEL_INFO,
......@@ -3510,6 +3511,7 @@ logs_empty_and_mark_files_at_shutdown(void)
if (count > 600) {
count = 0;
}
os_rmb;
}
mutex_enter(&log_sys->mutex);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment