Fixed slow bootstrap introduced in 10.6
The problem was that the signal thread was not killed when using unireg_abort(). The bug was introduced by: MDEV-30260: Slave crashed:reload_acl_and_cache during shutdown Other things fixed: - Don't produce memory leaks with safemalloc if all threads was not ended properly (not useful)
This commit is contained in:
parent
c1f3eff53f
commit
814dc46748
@ -153,7 +153,7 @@ char *guess_malloc_library();
|
|||||||
void sf_report_leaked_memory(my_thread_id id);
|
void sf_report_leaked_memory(my_thread_id id);
|
||||||
int sf_sanity();
|
int sf_sanity();
|
||||||
extern my_thread_id (*sf_malloc_dbug_id)(void);
|
extern my_thread_id (*sf_malloc_dbug_id)(void);
|
||||||
#define SAFEMALLOC_REPORT_MEMORY(X) sf_report_leaked_memory(X)
|
#define SAFEMALLOC_REPORT_MEMORY(X) if (!sf_leaking_memory) sf_report_leaked_memory(X)
|
||||||
#else
|
#else
|
||||||
#define SAFEMALLOC_REPORT_MEMORY(X) do {} while(0)
|
#define SAFEMALLOC_REPORT_MEMORY(X) do {} while(0)
|
||||||
#endif
|
#endif
|
||||||
|
@ -220,7 +220,11 @@ void my_thread_global_end(void)
|
|||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"Error in my_thread_global_end(): %d threads didn't exit\n",
|
"Error in my_thread_global_end(): %d threads didn't exit\n",
|
||||||
THR_thread_count);
|
THR_thread_count);
|
||||||
#endif
|
#endif /* HAVE_PTHREAD_KILL */
|
||||||
|
#ifdef SAFEMALLOC
|
||||||
|
/* We know we will have memoryleaks, suppress the leak report */
|
||||||
|
sf_leaking_memory= 1;
|
||||||
|
#endif /* SAFEMALLOC */
|
||||||
all_threads_killed= 0;
|
all_threads_killed= 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -234,9 +238,7 @@ void my_thread_global_end(void)
|
|||||||
that could use them.
|
that could use them.
|
||||||
*/
|
*/
|
||||||
if (all_threads_killed)
|
if (all_threads_killed)
|
||||||
{
|
|
||||||
my_thread_destroy_internal_mutex();
|
my_thread_destroy_internal_mutex();
|
||||||
}
|
|
||||||
my_thread_global_init_done= 0;
|
my_thread_global_init_done= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1889,6 +1889,7 @@ extern "C" void unireg_abort(int exit_code)
|
|||||||
wsrep_sst_auth_free();
|
wsrep_sst_auth_free();
|
||||||
#endif // WITH_WSREP
|
#endif // WITH_WSREP
|
||||||
|
|
||||||
|
wait_for_signal_thread_to_end();
|
||||||
clean_up(!opt_abort && (exit_code || !opt_bootstrap)); /* purecov: inspected */
|
clean_up(!opt_abort && (exit_code || !opt_bootstrap)); /* purecov: inspected */
|
||||||
DBUG_PRINT("quit",("done with cleanup in unireg_abort"));
|
DBUG_PRINT("quit",("done with cleanup in unireg_abort"));
|
||||||
mysqld_exit(exit_code);
|
mysqld_exit(exit_code);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user