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
The "show status" may be received by the server in a startup state, where it only can reject the statement, so that the client then react with 2013.
So, adding 2013 to the list of errors may help, as the "show status" will be repeated then.
- Make mysql-test-run.pl restart a crashed/stopped process if it was expected it should crash.
- Added testcase for "crash_commit_before", which tests behaviour when server crashes just before commit.
* The testcase first write a small var/tmp/master0.expect file indicating expected crash
* Then sets "DEBUG" variable to for example "d,crash_commit_before" and then executes a commit.
* The server will crash and be brought back up by mysql-test-run.pl
* Test case will then wait for the process to come back online before continuing.