Commit 366fd92e authored by unknown's avatar unknown

Fix for nightly build test failure (test update).

More messages.
Testcase for bug 651.


client/mysqltest.c:
  More explicit error message if MASTER_POS_WAIT() returns NULL.
mysql-test/r/rpl_loaddata.result:
  result update
mysql-test/r/rpl_master_pos_wait.result:
  result update
mysql-test/t/rpl000001.test:
  sync_with_master (=MASTER_POS_WAIT()) was called when we could expect the SQL slave thread had stopped.
  As I yesterday changed code so that "SQL thread stops => MASTER_POS_WAIT() returns NULL immediately" (bugfix),
  sync_with_master received NULL (on build.mysql.com, not on my machine; this is a question of milliseconds,
  if the slave server will process MASTER_POS_WAIT() before or after the slave SQL thread has stopped), and
  in mysqltest.c, sync_with_master complained that it could not sync.
  So I just remove this sync_with_master, which does not make sense anymore: we just wait for the slave SQL
  thread to stop.
mysql-test/t/rpl_loaddata.test:
  Discovered we had wait_for_slave_to_stop, so used it as it automates things.
mysql-test/t/rpl_master_pos_wait.test:
  Discovered we had 'send' to send a query without waiting for the resultn so could had a testcase for bug 651.
  Shorter timeouts as there is no risk the position is reached.
sql/slave.cc:
  A longer DBUG_PRINT.
parent 0783f900
......@@ -996,7 +996,8 @@ int do_sync_with_master2(const char* p)
if (!(row = mysql_fetch_row(res)))
die("line %u: empty result in %s", start_lineno, query_buf);
if (!row[0])
die("Error on slave while syncing with master");
die("line %u: could not sync with master ('%s' returned NULL)",
start_lineno, query_buf);
mysql_free_result(res);
last_result=0;
if (rpl_parse)
......
......@@ -25,6 +25,3 @@ drop table t3;
create table t1(a int, b int, unique(b));
insert into t1 values(1,10);
load data infile '../../std_data/rpl_loaddata.dat' into table t1;
show status like 'slave_running';
Variable_name Value
Slave_running OFF
......@@ -4,6 +4,10 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
slave start;
select master_pos_wait('master-bin.999999',0,10);
master_pos_wait('master-bin.999999',0,10)
select master_pos_wait('master-bin.999999',0,2);
master_pos_wait('master-bin.999999',0,2)
-1
select master_pos_wait('master-bin.999999',0);
stop slave sql_thread;
master_pos_wait('master-bin.999999',0)
NULL
......@@ -90,8 +90,8 @@ connection master;
--error 1053;
reap;
connection slave;
sync_with_master;
#give the slave a chance to exit
# The SQL slave thread should now have stopped because the query was killed on
# the master (so it has a non-zero error code in the binlog).
wait_for_slave_to_stop;
# The following test can't be done because the result of Pos will differ
......
......@@ -42,9 +42,5 @@ load data infile '../../std_data/rpl_loaddata.dat' into table t1;
save_master_pos;
connection slave;
# don't sync_with_master because the slave SQL thread should be stopped because
# of the error so MASTER_POS_WAIT() will not return; just sleep and hope the
# slave SQL thread will have had time to stop.
sleep 1;
show status like 'slave_running';
# The SQL slave thread should be stopped now.
wait_for_slave_to_stop;
......@@ -5,5 +5,11 @@ save_master_pos;
connection slave;
sync_with_master;
# Ask for a master log that has certainly not been reached yet
# timeout= 10 seconds
select master_pos_wait('master-bin.999999',0,10);
# timeout= 2 seconds
select master_pos_wait('master-bin.999999',0,2);
# Testcase for bug 651 (master_pos_wait() hangs if slave idle and STOP SLAVE).
send select master_pos_wait('master-bin.999999',0);
connection slave1;
stop slave sql_thread;
connection slave;
reap;
......@@ -2445,8 +2445,17 @@ reconnect done to recover from failed read");
for no reason, but this function will do a clean read, notice the clean
value and exit immediately.
*/
DBUG_PRINT("info", ("ignore_log_space_limit=%d", (int)
mi->rli.ignore_log_space_limit));
#ifndef DBUG_OFF
{
char llbuf1[22], llbuf2[22];
DBUG_PRINT("info", ("log_space_limit=%s log_space_total=%s \
ignore_log_space_limit=%d",
llstr(mi->rli.log_space_limit,llbuf1),
llstr(mi->rli.log_space_total,llbuf2),
(int) mi->rli.ignore_log_space_limit));
}
#endif
if (mi->rli.log_space_limit && mi->rli.log_space_limit <
mi->rli.log_space_total &&
!mi->rli.ignore_log_space_limit)
......
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