MDEV-7130: MASTER_POS_WAIT(log_name,log_pos,timeout,"connection_name") hangs, does not respect the timeout
Changed also arg_count check for connection_name to prevent same bug if fifth argument is introduced in future
This commit is contained in:
parent
b616991a68
commit
060ec5b6b9
@ -18,4 +18,26 @@ show slave status;
|
||||
select master_pos_wait('foo', 98);
|
||||
master_pos_wait('foo', 98)
|
||||
NULL
|
||||
*** MDEV-7130: MASTER_POS_WAIT(log_name,log_pos,timeout,"connection_name") hangs, does not respect the timeout ***
|
||||
include/stop_slave.inc
|
||||
reset slave all;
|
||||
change master 'my_slave' to master_port=MASTER_MYPORT, master_host='127.0.0.1', master_user='root';
|
||||
set default_master_connection = 'my_slave';
|
||||
include/start_slave.inc
|
||||
# Call without connection name -- works (expected -1)
|
||||
select master_pos_wait('master-bin.000001',1000000,1);
|
||||
master_pos_wait('master-bin.000001',1000000,1)
|
||||
-1
|
||||
set default_master_connection = '';
|
||||
# Call for non-existing anonymous connection -- works (expected NULL)
|
||||
select master_pos_wait('master-bin.000001',1000000,1);
|
||||
master_pos_wait('master-bin.000001',1000000,1)
|
||||
NULL
|
||||
# Call with a valid connection name -- hangs before MDEV-7130 fix (expected -1)
|
||||
select master_pos_wait('master-bin.000001',1000000,1,"my_slave");
|
||||
master_pos_wait('master-bin.000001',1000000,1,"my_slave")
|
||||
-1
|
||||
STOP SLAVE 'my_slave';
|
||||
RESET SLAVE 'my_slave' ALL;
|
||||
change master to master_port=MASTER_MYPORT, master_host='127.0.0.1', master_user='root';
|
||||
include/rpl_end.inc
|
||||
|
@ -25,5 +25,36 @@ echo "*** must be NULL ***";
|
||||
select master_pos_wait('foo', 98);
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
|
||||
--echo *** MDEV-7130: MASTER_POS_WAIT(log_name,log_pos,timeout,"connection_name") hangs, does not respect the timeout ***
|
||||
|
||||
--connection slave
|
||||
--source include/stop_slave.inc
|
||||
reset slave all;
|
||||
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
||||
eval change master 'my_slave' to master_port=$MASTER_MYPORT, master_host='127.0.0.1', master_user='root';
|
||||
set default_master_connection = 'my_slave';
|
||||
--source include/start_slave.inc
|
||||
|
||||
--echo # Call without connection name -- works (expected -1)
|
||||
select master_pos_wait('master-bin.000001',1000000,1);
|
||||
|
||||
set default_master_connection = '';
|
||||
|
||||
--echo # Call for non-existing anonymous connection -- works (expected NULL)
|
||||
select master_pos_wait('master-bin.000001',1000000,1);
|
||||
|
||||
--echo # Call with a valid connection name -- hangs before MDEV-7130 fix (expected -1)
|
||||
select master_pos_wait('master-bin.000001',1000000,1,"my_slave");
|
||||
|
||||
STOP SLAVE 'my_slave';
|
||||
RESET SLAVE 'my_slave' ALL;
|
||||
|
||||
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
||||
eval change master to master_port=$MASTER_MYPORT, master_host='127.0.0.1', master_user='root';
|
||||
|
||||
# End of 10.0 tests
|
||||
|
||||
--let $rpl_only_running_threads= 1
|
||||
--source include/rpl_end.inc
|
||||
|
@ -3943,11 +3943,11 @@ longlong Item_master_pos_wait::val_int()
|
||||
}
|
||||
#ifdef HAVE_REPLICATION
|
||||
longlong pos = (ulong)args[1]->val_int();
|
||||
longlong timeout = (arg_count==3) ? args[2]->val_int() : 0 ;
|
||||
longlong timeout = (arg_count>=3) ? args[2]->val_int() : 0 ;
|
||||
String connection_name_buff;
|
||||
LEX_STRING connection_name;
|
||||
Master_info *mi;
|
||||
if (arg_count == 4)
|
||||
if (arg_count >= 4)
|
||||
{
|
||||
String *con;
|
||||
if (!(con= args[3]->val_str(&connection_name_buff)))
|
||||
|
Loading…
x
Reference in New Issue
Block a user