mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
BUG#38826 Race in MYSQL_LOG::purge_logs is impossible to debug in production
BUG#39325 Server crash inside MYSQL_LOG::purge_first_log halts replicaiton The patch reverses the order of the purging and updating events for log and relay-log.info/index files respectively. This solves the problem of having holes caused by crashes happening between updating info/index files and purging logs. This patch also contains an aditional test case for testing the crashing before purge logs. NOTE1: This is a combined patch for BUG#38826 and BUG#39325. This patch is based on bugteam tree and takes into account reviewers suggestions. NOTE2: Merge from 5.0-bugteam
This commit is contained in:
@ -233,6 +233,13 @@ class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG
|
||||
pthread_cond_t update_cond;
|
||||
ulonglong bytes_written;
|
||||
IO_CACHE index_file;
|
||||
/*
|
||||
purge_temp is a temp file used in purge_logs so that the index file
|
||||
can be updated before deleting files from disk, yielding better crash
|
||||
recovery. It is created on demand the first time purge_logs is called
|
||||
and then reused for subsequent calls. It is cleaned up in cleanup().
|
||||
*/
|
||||
IO_CACHE purge_temp;
|
||||
char index_file_name[FN_REFLEN];
|
||||
/*
|
||||
The max size before rotation (usable only if log_type == LOG_BIN: binary
|
||||
|
Reference in New Issue
Block a user