Commit 060ec5b6 authored by f4rnham's avatar f4rnham Committed by Kristian Nielsen

MDEV-7130: MASTER_POS_WAIT(log_name,log_pos,timeout,"connection_name") hangs,...

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
parent b616991a
...@@ -18,4 +18,26 @@ show slave status; ...@@ -18,4 +18,26 @@ show slave status;
select master_pos_wait('foo', 98); select master_pos_wait('foo', 98);
master_pos_wait('foo', 98) master_pos_wait('foo', 98)
NULL 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 include/rpl_end.inc
...@@ -25,5 +25,36 @@ echo "*** must be NULL ***"; ...@@ -25,5 +25,36 @@ echo "*** must be NULL ***";
select master_pos_wait('foo', 98); select master_pos_wait('foo', 98);
# End of 4.1 tests # 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 --let $rpl_only_running_threads= 1
--source include/rpl_end.inc --source include/rpl_end.inc
...@@ -3943,11 +3943,11 @@ longlong Item_master_pos_wait::val_int() ...@@ -3943,11 +3943,11 @@ longlong Item_master_pos_wait::val_int()
} }
#ifdef HAVE_REPLICATION #ifdef HAVE_REPLICATION
longlong pos = (ulong)args[1]->val_int(); 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; String connection_name_buff;
LEX_STRING connection_name; LEX_STRING connection_name;
Master_info *mi; Master_info *mi;
if (arg_count == 4) if (arg_count >= 4)
{ {
String *con; String *con;
if (!(con= args[3]->val_str(&connection_name_buff))) if (!(con= args[3]->val_str(&connection_name_buff)))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment