mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
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:
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user