Server IP : 172.67.216.182 / Your IP : 172.70.142.151 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/mysql-test/suite/group_replication/t/ |
Upload File : |
################################################################################ # This test proves that the plugin will leave the group when it cannot enable # the read mode in the server. # # Test: # 0) The test requires two servers. # 1) Bootstrap group with server 1. # 2) Restart server 2 with start_on_boot=1 (to enable it for the install). # 3) Insert some data on server 1. # 4) Uninstall and Install the plugin on member 2 (auto start enabled on 2) # Use a debug point to make the read mode fail when connecting. # 5) Verify that server 2 goes to ERROR state. Check that we cannot execute # transactions. # 6) Check all is fine after restarting group replication on server 2. # 7) Clean up. ################################################################################ --source include/big_test.inc --source include/have_debug.inc --let $group_replication_group_name= 7768a190-a421-11e5-a837-0800200c9a66 --source ../inc/have_group_replication_plugin.inc --source include/force_restart.inc --let $rpl_skip_group_replication_start= 1 --source ../inc/group_replication.inc --echo # --echo # Bootstrap group with server 1. --echo # --let $rpl_connection_name= server1 --source include/rpl_connection.inc --source ../inc/start_and_bootstrap_group_replication.inc --echo # --echo # Restart group replication on server 2 --echo # with group_replication_start_on_boot=1 --echo # --let $rpl_connection_name= server2 --source include/rpl_connection.inc set session sql_log_bin=0; call mtr.add_suppression("Error when activating super_read_only mode on start. The member will now exit the group."); call mtr.add_suppression("Transaction cannot be executed while Group Replication is on ERROR state.*"); call mtr.add_suppression("Run function 'before_commit' in plugin 'group_replication' failed*"); call mtr.add_suppression("The member is leaving a group without being on one"); call mtr.add_suppression("The group replication user is not present in the server. The user will be recreated, please do not remove it"); call mtr.add_suppression("Skipping leave operation: concurrent attempt to leave the group is on-going."); call mtr.add_suppression("On plugin shutdown it was not possible to enable the server read only mode.*"); set session sql_log_bin=1; SET @debug_save= @@GLOBAL.DEBUG; --let $allow_rpl_inited= 1 --let $_group_replication_local_address= `SELECT @@GLOBAL.group_replication_local_address` --let $_group_replication_group_seeds= `SELECT @@GLOBAL.group_replication_group_seeds` --let $_group_replication_group_whitelist= `SELECT @@GLOBAL.group_replication_ip_whitelist` --let $restart_parameters=restart:--group_replication_local_address=$_group_replication_local_address --group_replication_group_seeds=$_group_replication_group_seeds --group_replication_start_on_boot=1 --group_replication_ip_whitelist=$_group_replication_group_whitelist --replace_result $_group_replication_local_address GROUP_REPLICATION_LOCAL_ADDRESS $_group_replication_group_seeds GROUP_REPLICATION_GROUP_SEEDS $_group_replication_group_whitelist GROUP_REPLICATION_GROUP_WHITELIST --source include/restart_mysqld.inc # Needed as we are not using rpl_restart_server.inc --let $rpl_server_number= 2 --source include/rpl_reconnect.inc --let $group_replication_member_state= ONLINE --source ../inc/gr_wait_for_member_state.inc --echo # --echo # Add some data to server 1. --echo # --let $rpl_connection_name= server1 --source include/rpl_connection.inc CREATE TABLE t1 (c1 INT NOT NULL PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); -- source include/rpl_sync.inc --echo # --echo # On server 2 uninstall and install the plugin with auto start. --echo # With debug set to group_replication_read_mode_error it should fail. --echo # --let $rpl_connection_name= server2 --source include/rpl_connection.inc UNINSTALL PLUGIN group_replication; SET @@GLOBAL.DEBUG='d,group_replication_read_mode_error'; --replace_result $GROUP_REPLICATION GROUP_REPLICATION --eval INSTALL PLUGIN group_replication SONAME '$GROUP_REPLICATION' --let $group_replication_member_state= ERROR --source ../inc/gr_wait_for_member_state.inc --echo # --echo # Check that we cannot execute transactions --echo # --error ER_RUN_HOOK_ERROR INSERT INTO t1 VALUES (2); --let $skip_assert_read_only= 1 --source include/stop_group_replication.inc --echo # --echo # On server 2 after restarting GR all should be fine. --echo # SET @@GLOBAL.DEBUG= @debug_save; --source include/start_group_replication.inc INSERT INTO t1 VALUES (2); --let $rpl_connection_name= server1 --source include/rpl_connection.inc # The data should be there. --let $wait_condition= SELECT COUNT(*) = 2 FROM t1; --source include/wait_condition.inc --echo # --echo # Clean up --echo # DROP TABLE t1; --source ../inc/group_replication_end.inc