Server IP : 104.21.38.3 / Your IP : 104.23.175.168 Web Server : Apache System : Linux krdc-ubuntu-s-2vcpu-4gb-amd-blr1-01.localdomain 5.15.0-142-generic #152-Ubuntu SMP Mon May 19 10:54:31 UTC 2025 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /www/server/mysql/src/mysql-test/suite/rpl/t/ |
Upload File : |
# ==== Purpose ==== # # 1) Test that it is not allowed to execute SET GTID_MODE = OFF when # there is an ongoing call to WAIT_FOR_EXECUTED_GTID_SET or # WAIT_FOR_EXECUTED_GTID_SET. # # ==== Implementation ==== # # Execute three iterations: # - In iterations 1 and 2, use WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS. # - In iterations 2 and 3, use WAIT_FOR_EXECUTED_GTID_SET. # # In each iteration, check that it is not allowed to set GTID_MODE=OFF # while the wait function is waiting; and check that it is allowed to # set all the other GTID_MODEs. In iteration 2, additionally check # that SET GTID_MODE=OFF is disallowed after releasing one of the # waiting threads. # # 2) Test that SELECT WAIT_FOR_EXECUTED_GTID_SET() gives an error if # gtid-mode=off. # Test sets GTID_MODE explicitly, so only meaningful to run in one GTID_MODE. --source include/not_gtid_enabled.inc # Not meaningful to run in more than one binlog_format. --source include/have_binlog_format_row.inc --source include/have_debug_sync.inc --source include/master-slave.inc --let $uuida= aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa --connection slave SET GLOBAL ENFORCE_GTID_CONSISTENCY = ON; --connection master SET GLOBAL ENFORCE_GTID_CONSISTENCY = ON; SET GLOBAL GTID_MODE = OFF_PERMISSIVE; --let $i= 0 while ($i < 3) { --echo ==== Iteration $i ==== # Set GTID_MODE --connection slave SET GLOBAL GTID_MODE = OFF_PERMISSIVE; SET GLOBAL GTID_MODE = ON_PERMISSIVE; SET GLOBAL GTID_MODE = ON; # Begin to wait. if ($i < 2) { --connection server_2 --let $id= `SELECT CONNECTION_ID()` # Multiply by 0 since the return value is nondeterministic. --send eval SELECT WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS('$uuida:1$i') * 0; --connection slave --let $wait_condition= SELECT COUNT(*) = 1 FROM performance_schema.threads WHERE PROCESSLIST_ID = $id AND PROCESSLIST_STATE = 'Waiting for the slave SQL thread to advance position' --source include/wait_condition_or_abort.inc } if ($i > 0) { --connection server_2_1 --let $id= `SELECT CONNECTION_ID()` SET @@SESSION.DEBUG_SYNC = 'begin_wait_for_executed_gtid_set SIGNAL reached_wait_function'; --send eval SELECT WAIT_FOR_EXECUTED_GTID_SET('$uuida:2$i'); --connection slave # Doesn't work because of BUG#20451305. #--let $wait_condition= SELECT COUNT(*) = 1 FROM performance_schema.threads WHERE PROCESSLIST_ID = $id AND PROCESSLIST_STATE = 'waiting for GTID to be written to binary log' #--source include/wait_condition_or_abort.inc SET @@SESSION.DEBUG_SYNC = 'now WAIT_FOR reached_wait_function'; } # Check that all GTID_MODEs except OFF are allowed. --connection slave SET GLOBAL GTID_MODE = ON; SET GLOBAL GTID_MODE = ON_PERMISSIVE; SET GLOBAL GTID_MODE = ON_PERMISSIVE; SET GLOBAL GTID_MODE = OFF_PERMISSIVE; SET GLOBAL GTID_MODE = OFF_PERMISSIVE; --error ER_CANT_SET_GTID_MODE SET GLOBAL GTID_MODE = OFF; # Release the waiters. if ($i < 2) { --connection master eval SET GTID_NEXT = '$uuida:1$i'; COMMIT; SET GTID_NEXT = 'AUTOMATIC'; --source include/sync_slave_sql_with_master.inc --connection server_2 --reap } # If $i==1, we released one waiter and the other is still ongoing, # so setting OFF is still an error. if ($i == 1) { --error ER_CANT_SET_GTID_MODE SET GLOBAL GTID_MODE = OFF; } if ($i > 0) { eval SET GTID_NEXT = '$uuida:2$i'; COMMIT; SET GTID_NEXT = 'AUTOMATIC'; --connection server_2_1 --reap } --connection slave SET GLOBAL GTID_MODE = OFF; --inc $i } --connection master SET GLOBAL GTID_MODE = OFF; --source include/sync_slave_sql_with_master.inc --echo # --echo # Test that SELECT WAIT_FOR_EXECUTED_GTID_SET() gives an error if --echo # gtid-mode=off. --echo # --error ER_GTID_MODE_OFF eval SELECT WAIT_FOR_EXECUTED_GTID_SET('master_uuid', 1-2); --connection slave SET GLOBAL ENFORCE_GTID_CONSISTENCY = OFF; --connection master SET GLOBAL ENFORCE_GTID_CONSISTENCY = OFF; --source include/rpl_end.inc