polardbxengine/mysql-test/suite/rpl/t/rpl_parallel_conf_limits.test

130 lines
2.9 KiB
Plaintext

#
# WL#5569 MTS
#
# The test verifies correctness of MTS execution when system meets
# various limits due to few configuration options:
#
# A. @@global.slave_pending_jobs_size_max
# B. @@global.slave_parallel_workers
#
--source include/not_group_replication_plugin.inc
# no support for Query-log-event in this test
--source include/have_binlog_format_row.inc
--source include/master-slave.inc
connection slave;
create view coord_wait_list as
SELECT id from Information_Schema.processlist
where state like 'Waiting for Slave Worker%';
# restart in Parallel
let $workers= 4;
source include/stop_slave.inc;
set @save.slave_parallel_workers= @@global.slave_parallel_workers;
eval set @@global.slave_parallel_workers= $workers;
#
# A. Prescribed number of Worker threads is honored
#
connection slave;
create view worker_wait_list as
SELECT id from Information_Schema.processlist
where state like 'Waiting for an event from Coordinator';
source include/stop_slave.inc;
# relates to B preparation
let $mts_max_q_size=1024;
set @save_slave_pending_jobs_size_max = @@global.slave_pending_jobs_size_max;
eval set @@global.slave_pending_jobs_size_max= $mts_max_q_size;
source include/start_slave.inc;
let $count= $workers;
let $table= worker_wait_list;
source include/wait_until_rows_count.inc;
--echo Configured number of Workers is started.
#
# B. Max size of Worker queues
#
connection master;
create database d0;
create table d0.t0 (a int auto_increment primary key, b text null) engine=innodb;
--source include/sync_slave_sql_with_master.inc
begin;
insert into d0.t0 set a= 1;
# master trans structure aims at testing C's wait loop
let $i_loop= 10;
connection master;
begin;
--disable_query_log
eval insert into d0.t0 set a= 1, b= REPEAT('b', 1);
while ($i_loop)
{
eval insert into d0.t0 set b= REPEAT('b', 1);
eval insert into d0.t0 set b= REPEAT('b', 1);
eval insert into d0.t0 set b= REPEAT('b', 1);
eval insert into d0.t0 set b= REPEAT('b', 1);
eval insert into d0.t0 set b= REPEAT('b', 1);
eval insert into d0.t0 set b= REPEAT('b', 1);
eval insert into d0.t0 set b= REPEAT('b', 2* $mts_max_q_size/3);
dec $i_loop;
}
--enable_query_log
commit;
let $d0_t0_count=`select count(*) from d0.t0`;
connection slave;
--echo *** Coordinator must be waiting for Workers have released pending events mem ***
let $count= 1;
let $table= coord_wait_list;
source include/wait_until_rows_count.inc;
rollback;
let $count= $d0_t0_count;
let $table= d0.t0;
source include/wait_until_rows_count.inc;
# cleanup of the max size
set @@global.slave_pending_jobs_size_max= @save_slave_pending_jobs_size_max;
#
# cleanup
#
connection master;
drop database d0;
--source include/sync_slave_sql_with_master.inc
#connection slave;
drop view coord_wait_list;
drop view worker_wait_list;
set @@global.slave_parallel_workers= @save.slave_parallel_workers;
--source include/rpl_end.inc