mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
MDEV-5206: Incorrect slave old-style position in MDEV-4506, parallel replication.
In parallel replication, there are two kinds of events which are executed in different ways. Normal events that are part of event groups/transactions are executed asynchroneously by being queued for a worker thread. Other events like format description and rotate and such are executed directly in the driver SQL thread. If the direct execution of the other events were to update the old-style position, then the position gets updated too far ahead, before the normal events that have been queued for a worker thread have been executed. So this patch adds some special cases to prevent such position updates ahead of time, and instead queues dummy events for the worker threads, so that they will at an appropriate time do the position updates instead. (Also fix a race in a test case that happened to trigger while running tests for this patch).
This commit is contained in:
@ -92,6 +92,7 @@ INSERT INTO t2 VALUES (foo(10,
|
||||
|
||||
--connection server_2
|
||||
FLUSH LOGS;
|
||||
--source include/wait_for_binlog_checkpoint.inc
|
||||
SET sql_log_bin=0;
|
||||
--delimiter ||
|
||||
CREATE FUNCTION foo(x INT, d1 VARCHAR(500), d2 VARCHAR(500))
|
||||
@ -148,6 +149,7 @@ SELECT * FROM t2 WHERE a >= 10 ORDER BY a;
|
||||
--let $binlog_file= slave-bin.000002
|
||||
--source include/show_binlog_events.inc
|
||||
FLUSH LOGS;
|
||||
--source include/wait_for_binlog_checkpoint.inc
|
||||
|
||||
# Restart all the slave parallel worker threads, to clear all debug_sync actions.
|
||||
--connection server_2
|
||||
@ -161,6 +163,7 @@ SET debug_sync='RESET';
|
||||
--echo *** Test that group-committed transactions on the master can replicate in parallel on the slave. ***
|
||||
--connection server_1
|
||||
FLUSH LOGS;
|
||||
--source include/wait_for_binlog_checkpoint.inc
|
||||
CREATE TABLE t3 (a INT PRIMARY KEY, b INT) ENGINE=InnoDB;
|
||||
# Create some sentinel rows so that the rows inserted in parallel fall into
|
||||
# separate gaps and do not cause gap lock conflicts.
|
||||
|
Reference in New Issue
Block a user