Bug#17733 Flushing logs causes daily server crash

Server crashes if a flush commmand is issued and binlog is closed.
- added check to prevent binlog access when binlog file isn't opened.
parent 8471897f
flush logs;
set global expire_logs_days = 3;
show variables like 'log%';
Variable_name Value
log ON
log_bin OFF
log_bin_trust_function_creators ON
log_error
log_queries_not_using_indexes OFF
log_slave_updates OFF
log_slow_queries OFF
log_warnings 1
flush logs;
show variables like 'log%';
Variable_name Value
log ON
log_bin OFF
log_bin_trust_function_creators ON
log_error
log_queries_not_using_indexes OFF
log_slave_updates OFF
log_slow_queries OFF
log_warnings 1
set global expire_logs_days = 0;
#
# Bug#17733 Flushing logs causes daily server crash
#
flush logs;
set global expire_logs_days = 3;
show variables like 'log%';
flush logs;
show variables like 'log%';
set global expire_logs_days = 0;
......@@ -4008,8 +4008,9 @@ mysql_execute_command(THD *thd)
case SQLCOM_FLUSH:
{
bool write_to_binlog;
if (check_global_access(thd,RELOAD_ACL) || check_db_used(thd, all_tables))
if (check_global_access(thd,RELOAD_ACL))
goto error;
/*
reload_acl_and_cache() will tell us if we are allowed to write to the
binlog or not.
......@@ -4031,6 +4032,7 @@ mysql_execute_command(THD *thd)
}
send_ok(thd);
}
break;
}
case SQLCOM_KILL:
......@@ -6696,7 +6698,10 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables,
tmp_write_to_binlog= 0;
mysql_log.new_file(1);
mysql_slow_log.new_file(1);
if( mysql_bin_log.is_open() )
{
mysql_bin_log.rotate_and_purge(RP_FORCE_ROTATE);
}
#ifdef HAVE_REPLICATION
pthread_mutex_lock(&LOCK_active_mi);
rotate_relay_log(active_mi);
......
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