mirror of
https://github.com/MariaDB/server.git
synced 2025-08-31 22:22:30 +03:00
MDEV-8725: Assertion `!(thd->rgi_slave && thd-> rgi_slave->did_mark_start_commit)' failed in ha_rollback_trans
The assertion is there to catch cases where we rollback while mark_start_commit() is active. This can allow following event groups to be replicated too early, causing conflicts. But in this case, we have an _explicit_ ROLLBACK event in the binlog, which should not assert. We fix this by delaying the mark_start_commit() in the explicit ROLLBACK case. It seems safest to delay this in ROLLBACK case anyway, and there should be no reason to try to optimise this corner case.
This commit is contained in:
@@ -1689,6 +1689,24 @@ a b
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL debug_dbug=@old_dbug;
|
||||
include/start_slave.inc
|
||||
*** MDEV-8725: Assertion on ROLLBACK statement in the binary log ***
|
||||
BEGIN;
|
||||
INSERT INTO t2 VALUES (200);
|
||||
INSERT INTO t1 VALUES (200);
|
||||
INSERT INTO t2 VALUES (201);
|
||||
ROLLBACK;
|
||||
SELECT * FROM t1 WHERE a>=200 ORDER BY a;
|
||||
a
|
||||
200
|
||||
SELECT * FROM t2 WHERE a>=200 ORDER BY a;
|
||||
a
|
||||
include/save_master_gtid.inc
|
||||
include/sync_with_master_gtid.inc
|
||||
SELECT * FROM t1 WHERE a>=200 ORDER BY a;
|
||||
a
|
||||
200
|
||||
SELECT * FROM t2 WHERE a>=200 ORDER BY a;
|
||||
a
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL slave_parallel_threads=@old_parallel_threads;
|
||||
include/start_slave.inc
|
||||
|
Reference in New Issue
Block a user