summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/rpl_rotate_logs.result2
-rw-r--r--mysql-test/t/rpl_rotate_logs.test10
-rw-r--r--sql/slave.cc1
-rw-r--r--sql/sql_repl.cc2
4 files changed, 11 insertions, 4 deletions
diff --git a/mysql-test/r/rpl_rotate_logs.result b/mysql-test/r/rpl_rotate_logs.result
index 741c53fe52b..f49006e8e05 100644
--- a/mysql-test/r/rpl_rotate_logs.result
+++ b/mysql-test/r/rpl_rotate_logs.result
@@ -5,7 +5,7 @@ Could not initialize master info structure, check permisions on master.info
slave start;
Could not initialize master info structure, check permisions on master.info
change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root';
-Could not initialize master info
+Could not initialize master info structure, check permisions on master.info
reset slave;
change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root';
reset master;
diff --git a/mysql-test/t/rpl_rotate_logs.test b/mysql-test/t/rpl_rotate_logs.test
index 9f7f44d7c28..c4dc5de38da 100644
--- a/mysql-test/t/rpl_rotate_logs.test
+++ b/mysql-test/t/rpl_rotate_logs.test
@@ -16,14 +16,20 @@ system cat /dev/null > var/slave-data/master.info;
system chmod 000 var/slave-data/master.info;
connection slave;
drop table if exists t1, t2, t3, t4;
+# START SLAVE will fail because it can't read the file (mode 000) (system error 13)
--error 1201
slave start;
system chmod 600 var/slave-data/master.info;
+# It will fail again because the file is empty so the slave cannot get valuable
+# info about how to connect to the master from it (failure in
+# init_strvar_from_file() in init_master_info()).
--error 1201
slave start;
--replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT
-# Will get error 13 on Unix systems becasue file is not readable
-!eval change master to master_host='127.0.0.1',master_port=$MASTER_MYPORT, master_user='root';
+# CHANGE MASTER will fail because it first parses master.info before changing it
+# (so when master.info is bad, people have to use RESET SLAVE first).
+--error 1201
+eval change master to master_host='127.0.0.1',master_port=$MASTER_MYPORT, master_user='root';
reset slave;
--replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT
eval change master to master_host='127.0.0.1',master_port=$MASTER_MYPORT, master_user='root';
diff --git a/sql/slave.cc b/sql/slave.cc
index dc9ce9715d8..6c29d1a98bc 100644
--- a/sql/slave.cc
+++ b/sql/slave.cc
@@ -1644,6 +1644,7 @@ int show_master_info(THD* thd, MASTER_INFO* mi)
if (mi->host[0])
{
+ DBUG_PRINT("info",("host is set: '%s'", mi->host));
String *packet= &thd->packet;
packet->length(0);
diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc
index a651d8002fd..e3af076da1f 100644
--- a/sql/sql_repl.cc
+++ b/sql/sql_repl.cc
@@ -828,7 +828,7 @@ int change_master(THD* thd, MASTER_INFO* mi)
// TODO: see if needs re-write
if (init_master_info(mi, master_info_file, relay_log_info_file, 0))
{
- send_error(&thd->net, 0, "Could not initialize master info");
+ send_error(&thd->net, ER_MASTER_INFO);
unlock_slave_threads(mi);
DBUG_RETURN(1);
}