List:Commits« Previous MessageNext Message »
From:Alexey Kopytov Date:November 22 2007 5:23pm
Subject:bk commit into 5.1 tree (kaa:1.2589) BUG#29976
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of kaa. When kaa does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2007-11-22 19:22:54+03:00, kaa@polly.(none) +1 -0
  Fix for bug #29976: Excessive Slave I/O errors in replication tests
  
  Problem:
  
  The "Slave I/O thread couldn't register on master" error sporadically
  occurred in replication tests because the slave I/O thread got
  killed by STOP SLAVE before or while registering on master.
  
  Fixed by checking the state of the I/O thread, and issueing
  the error only if it was not explicitely killed by a user.

  sql/slave.cc@stripped, 2007-11-22 19:22:47+03:00, kaa@polly.(none) +13 -8
    When the slave I/O thread fails to register on master, issue an error
    message only if it is not explicitely killed by a user with STOP SLAVE.

diff -Nrup a/sql/slave.cc b/sql/slave.cc
--- a/sql/slave.cc	2007-08-30 01:28:34 +04:00
+++ b/sql/slave.cc	2007-11-22 19:22:47 +03:00
@@ -137,6 +137,7 @@ static int terminate_slave_thread(THD *t
                                   pthread_cond_t* term_cond,
                                   volatile uint *slave_running,
                                   bool skip_lock);
+static bool check_io_slave_killed(THD *thd, Master_info *mi, const char *info);
 
 /*
   Find out which replications threads are running
@@ -821,7 +822,7 @@ static int get_master_version_and_clock(
     mi->clock_diff_with_master=
       (long) (time((time_t*) 0) - strtoul(master_row[0], 0, 10));
   }
-  else
+  else if (!check_io_slave_killed(mi->io_thd, mi, NULL))
   {
     mi->clock_diff_with_master= 0; /* The "most sensible" value */
     sql_print_warning("\"SELECT UNIX_TIMESTAMP()\" failed on master, "
@@ -1223,7 +1224,7 @@ int register_slave_on_master(MYSQL* mysq
     {
       *suppress_warnings= TRUE;                 // Suppress reconnect warning
     }
-    else
+    else if (!check_io_slave_killed(mi->io_thd, mi, NULL))
     {
       char buf[256];
       my_snprintf(buf, sizeof(buf), "%s (Errno: %d)", mysql_error(mysql), 
@@ -1985,7 +1986,7 @@ static bool check_io_slave_killed(THD *t
 {
   if (io_slave_killed(thd, mi))
   {
-    if (global_system_variables.log_warnings)
+    if (info && global_system_variables.log_warnings)
       sql_print_information(info);
     return TRUE;
   }
@@ -2170,11 +2171,15 @@ connected:
     thd->proc_info = "Registering slave on master";
     if (register_slave_on_master(mysql, mi, &suppress_warnings))
     {
-      sql_print_error("Slave I/O thread couldn't register on master");
-      if (check_io_slave_killed(thd, mi, "Slave I/O thread killed while \
-registering slave on master") ||
-          try_to_reconnect(thd, mysql, mi, &retry_count, suppress_warnings,
-                           reconnect_messages[SLAVE_RECON_ACT_REG]))
+      if (!check_io_slave_killed(thd, mi, "Slave I/O thread killed "
+                                "while registering slave on master"))
+      {
+        sql_print_error("Slave I/O thread couldn't register on master");
+        if (try_to_reconnect(thd, mysql, mi, &retry_count, suppress_warnings,
+                             reconnect_messages[SLAVE_RECON_ACT_REG]))
+          goto err;
+      }
+      else
         goto err;
       goto connected;
     }
Thread
bk commit into 5.1 tree (kaa:1.2589) BUG#29976Alexey Kopytov22 Nov
  • Re: bk commit into 5.1 tree (kaa:1.2589) BUG#29976Sven Sandberg23 Nov