Fix for Bug#33065: Mysql not writing general query logs after
sending SIGHUP. There were two problems: - after some recent fix, the server started to crash after receiving SIGHUP. That happened because LEX of new THD-object was not properly initialized. - user-specified log options were ignored when logs were reopened. The fix is to 1) initialize LEX and 2) take user-specified options into account. There is no test case in this CS, because our test suite does not support sending SIGHUP to the server. sql/mysqld.cc: Use proper logging after SIGHUP. sql/sql_parse.cc: Initialize LEX of new THD -- it is required to avoid crash in SIGHUP handling.
This commit is contained in:
parent
ffd88cb2bd
commit
d8c8fd5b4f
@ -2573,8 +2573,18 @@ pthread_handler_t signal_hand(void *arg __attribute__((unused)))
|
||||
(TABLE_LIST*) 0, ¬_used); // Flush logs
|
||||
}
|
||||
/* reenable logs after the options were reloaded */
|
||||
logger.set_handlers(LOG_FILE, opt_slow_log ? LOG_TABLE:LOG_NONE,
|
||||
opt_log ? LOG_TABLE:LOG_NONE);
|
||||
if (log_output_options & LOG_NONE)
|
||||
{
|
||||
logger.set_handlers(LOG_FILE,
|
||||
opt_slow_log ? LOG_TABLE : LOG_NONE,
|
||||
opt_log ? LOG_TABLE : LOG_NONE);
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.set_handlers(LOG_FILE,
|
||||
opt_slow_log ? log_output_options : LOG_NONE,
|
||||
opt_log ? log_output_options : LOG_NONE);
|
||||
}
|
||||
break;
|
||||
#ifdef USE_ONE_SIGNAL_HAND
|
||||
case THR_SERVER_ALARM:
|
||||
|
@ -6448,6 +6448,7 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables,
|
||||
{
|
||||
thd->thread_stack= (char*) &tmp_thd;
|
||||
thd->store_globals();
|
||||
lex_start(thd);
|
||||
}
|
||||
if (thd)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user