# # Feature: revise end_pos & relay log flag & timestamp in consensus log # Testcase: # 0. normal trx, large trx, large event # 1. leader transfer # 2. configure change # 3. learner with replication lag # 4. learner shutdown and restart # --source include/have_debug_new.inc --connect (conn1,127.0.0.1,root,,test,$MYPORT_1) flush local logs; --connect (conn2,127.0.0.1,root,,test,$MYPORT_2) flush local logs; --connect (conn3,127.0.0.1,root,,test,$MYPORT_3) flush local logs; --connection conn1 create table t1 (id int); insert into t1 values(1); let $MYPORT_CONSENSUS_1 = query_get_value("select $MYPORT_1+40 as c1", c1, 1); let $MYPORT_CONSENSUS_2 = query_get_value("select $MYPORT_2+40 as c1", c1, 1); let $MYPORT_CONSENSUS_3 = query_get_value("select $MYPORT_3+40 as c1", c1, 1); --replace_result $MYPORT_CONSENSUS_3 MYPORT_CONSENSUS_3 #eval change consensus_follower "127.0.0.1:$MYPORT_CONSENSUS_3" to consensus_learner; eval call dbms_consensus.downgrade_follower("127.0.0.1:$MYPORT_CONSENSUS_3"); --replace_result $MYPORT_CONSENSUS_3 MYPORT_CONSENSUS_3 #eval drop consensus_learner "127.0.0.1:$MYPORT_CONSENSUS_3"; eval call dbms_consensus.drop_learner("127.0.0.1:$MYPORT_CONSENSUS_3"); insert into t1 values(1); #change consensus_leader to 2; --replace_result $MYPORT_CONSENSUS_2 MYPORT_CONSENSUS_2 eval call dbms_consensus.change_leader("127.0.0.1:$MYPORT_CONSENSUS_2"); --connection conn2 --enable_reconnect let $wait_condition= select role='Leader' and server_ready_for_rw='Yes' from information_schema.alisql_cluster_local; --source include/wait_condition.inc --let $master_binlog2= query_get_value(SHOW MASTER STATUS, File, 1) insert into t1 values(1); --replace_result $MYPORT_CONSENSUS_1 MYPORT_CONSENSUS_1 #change consensus_leader to 1; eval call dbms_consensus.change_leader("127.0.0.1:$MYPORT_CONSENSUS_1"); --connection conn3 --enable_reconnect --let $master_binlog3= query_get_value(SHOW MASTER STATUS, File, 1) --connection conn1 --enable_reconnect let $wait_condition= select role='Leader' and server_ready_for_rw='Yes' from information_schema.alisql_cluster_local; --source include/wait_condition.inc create table t2 (id int, data longblob); # test large trx begin; insert into t2 values(1, repeat('a', 300*1024)); insert into t2 values(1, repeat('a', 300*1024)); insert into t2 values(1, repeat('a', 300*1024)); insert into t2 values(1, repeat('a', 300*1024)); commit; #test large event insert into t2 values(1, repeat('a', 3*1024*1024)); sleep 5; insert into t1 values(1); --replace_result $MYPORT_CONSENSUS_3 MYPORT_CONSENSUS_3 #eval add consensus_learner "127.0.0.1:$MYPORT_CONSENSUS_3"; eval call dbms_consensus.add_learner("127.0.0.1:$MYPORT_CONSENSUS_3"); --replace_result $MYPORT_CONSENSUS_3 MYPORT_CONSENSUS_3 #eval change consensus_learner "127.0.0.1:$MYPORT_CONSENSUS_3" to consensus_follower; eval call dbms_consensus.upgrade_learner("127.0.0.1:$MYPORT_CONSENSUS_3"); insert into t1 values(1); --source include/wait_follower_catchup.inc --replace_result $MYPORT_CONSENSUS_3 MYPORT_CONSENSUS_3 eval set global consensus_flow_control="127.0.0.1:$MYPORT_CONSENSUS_3 -2"; # server 3 restart --connection conn3 --enable_reconnect --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.3.expect shutdown; --connection conn1 insert into t1 values(1); sleep 5; set global consensus_flow_control=""; insert into t1 values(1); sleep 1; --source include/wait_follower_catchup.inc # just show linenumbers in result to make sure mysqlbinlog parse all binlog events successfully --connection conn1 --enable_reconnect --let $MYSQLD_DATADIR= `select @@datadir;` --let $master_binlog= query_get_value(SHOW MASTER STATUS, File, 1) --exec $MYSQL_BINLOG --debug-consensuslog-revise-check=1 --verbose $MYSQLD_DATADIR/$master_binlog | wc -l --connection conn2 --enable_reconnect --let $MYSQLD_DATADIR= `select @@datadir;` --let $master_binlog= query_get_value(SHOW MASTER STATUS, File, 1) --exec $MYSQL_BINLOG --debug-consensuslog-revise-check=1 --verbose $MYSQLD_DATADIR/$master_binlog | wc -l --connection conn3 --enable_reconnect --let $MYSQLD_DATADIR= `select @@datadir;` --let $master_binlog= query_get_value(SHOW MASTER STATUS, File, 1) --exec $MYSQL_BINLOG --debug-consensuslog-revise-check=1 --verbose $MYSQLD_DATADIR/$master_binlog | wc -l --connection default --enable_reconnect drop table t1; drop table t2;