maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #08086
Re: [Commits] Rev 4562: MDEV-7402 'reset master' hangs, waits for signalled COND_xid_list in lp:~maria-captains/maria/10.0
-
To:
maria-developers@xxxxxxxxxxxxxxxxxxx
-
From:
Kristian Nielsen <knielsen@xxxxxxxxxxxxxxx>
-
Date:
Mon, 19 Jan 2015 14:07:02 +0100
-
In-reply-to:
<20150118130748.GA15299@meddwl.fritz.box> (Sergei Golubchik's message of "Sun, 18 Jan 2015 14:07:48 +0100")
-
User-agent:
Gnus/5.13 (Gnus v5.13) Emacs/23.4 (gnu/linux)
Sergei Golubchik <serg@xxxxxxxxxxx> writes:
> ------------------------------------------------------------
> revno: 4562
> revision-id: sergii@xxxxxxxxx-20150118130747-rs67yzzk8a7ebwdd
> parent: sergii@xxxxxxxxx-20150118002113-snztyzwvzc500c2m
> fixes bug: https://mariadb.atlassian.net/browse/MDEV-7402
> committer: Sergei Golubchik <sergii@xxxxxxxxx>
> branch nick: 10.0
> timestamp: Sun 2015-01-18 14:07:47 +0100
> message:
> MDEV-7402 'reset master' hangs, waits for signalled COND_xid_list
>
> Using a boolean flag for 'there is a RESET MASTER in progress' doesn't
> work very well for multiple concurrent RESET MASTER statements.
Ok to push with a testcase like the below, as we discussed.
- Kristian.
-----------------------------------------------------------------------
--echo *** MDEV-7402: 'reset master' hangs, waits for signalled COND_xid_list ***
--source include/wait_for_binlog_checkpoint.inc
connect(con3,localhost,root,,);
# Make the binlog background thread wait before clearing the pending checkpoint.
# The bug was that one RESET MASTER would clear the reset_master_pending
# flag set by another RESET MASTER; this could cause the wakeup from the
# binlog background thread not to be sent, and thus the second RESET MASTER
# to wait infinitely.
SET debug_sync="reset_logs_after_set_reset_master_pending SIGNAL reset_master_ready WAIT_FOR reset_master_cont";
send RESET MASTER;
--connection default
SET @old_dbug= @@global.DEBUG_DBUG;
SET GLOBAL debug_dbug="+d,inject_binlog_background_thread_before_mark_xid_done";
SET debug_sync="now WAIT_FOR reset_master_ready";
RESET MASTER;
SET debug_sync="now WAIT_FOR injected_binlog_background_thread";
SET GLOBAL debug_dbug=@old_dbug;
SET debug_sync="now SIGNAL reset_master_cont";
--connection con3
REAP;
--connection default
SET debug_sync = 'reset';