# # Automatically turn on event_scheduler when leader is changed # --connection default # make sure this feature is still ok after any restart. --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --shutdown_server --source include/wait_until_disconnected.inc --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --enable_reconnect --source include/wait_until_connected_again.inc show global variables like "event_scheduler"; --connect (conn2,127.0.0.1,root,,test,$MYPORT_2) # make sure this feature is still ok after any restart. --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.2.expect --shutdown_server --source include/wait_until_disconnected.inc --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.2.expect --enable_reconnect --source include/wait_until_connected_again_old.inc show global variables like "event_scheduler"; --connection default create table t (id int primary key auto_increment , data int); insert into t (data) values (1); select data from t where id = 1; CREATE EVENT sectest ON SCHEDULE EVERY 1 second DO update t set data=data+1 where id=1; --let $value_old= query_get_value(select data from t where id = 1, data, 1) sleep 1; --let $value_new= query_get_value(select data from t where id = 1, data, 1) if ($value_old == $value_new) { --echo # event is not running } #change consensus_leader to 2; 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); --replace_result $MYPORT_CONSENSUS_2 MYPORT_CONSENSUS_2 eval call dbms_consensus.change_leader("127.0.0.1:$MYPORT_CONSENSUS_2"); --connection conn2 let $wait_condition= select role='leader' and server_ready_for_rw='Yes' from information_schema.alisql_cluster_local; --source include/wait_condition.inc show global variables like "event_scheduler"; --connection default --enable_reconnect show global variables like "event_scheduler"; --connection conn2 --let $value_old= query_get_value(select data from t where id = 1, data, 1) sleep 1; --let $value_new= query_get_value(select data from t where id = 1, data, 1) if ($value_old == $value_new) { --echo # event is not running } #change consensus_leader to 1; --replace_result $MYPORT_CONSENSUS_1 MYPORT_CONSENSUS_1 eval call dbms_consensus.change_leader("127.0.0.1:$MYPORT_CONSENSUS_1"); --connection default let $wait_condition= select role='leader' and server_ready_for_rw='Yes' from information_schema.alisql_cluster_local; --source include/wait_condition.inc show global variables like "event_scheduler"; --connection conn2 show global variables like "event_scheduler"; --connection default --let $value_old= query_get_value(select data from t where id = 1, data, 1) sleep 1; --let $value_new= query_get_value(select data from t where id = 1, data, 1) if ($value_old == $value_new) { --echo # event is not running } drop event sectest; --let $value_old= query_get_value(select data from t where id = 1, data, 1) sleep 1; --let $value_new= query_get_value(select data from t where id = 1, data, 1) if ($value_old != $value_new) { --echo # event is not stopped } drop table t;