Commit 41b9884d authored by unknown's avatar unknown
Browse files

Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.0

into  a193-229-222-105.elisa-laajakaista.fi:/home/jani/mysql-5.0

parents 7b2a3d50 37511b3b
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -1653,6 +1653,15 @@ int fetch_master_table(THD *thd, const char *db_name, const char *table_name,
    if (connect_to_master(thd, mysql, mi))
    {
      my_error(ER_CONNECT_TO_MASTER, MYF(0), mysql_error(mysql));
      /*
        We need to clear the active VIO since, theoretically, somebody
        might issue an awake() on this thread.  If we are then in the
        middle of closing and destroying the VIO inside the
        mysql_close(), we will have a problem.
       */
#ifdef SIGNAL_WITH_VIO_CLOSE
      thd->clear_active_vio();
#endif
      mysql_close(mysql);
      DBUG_RETURN(1);
    }
@@ -3709,6 +3718,17 @@ log space");
  VOID(pthread_mutex_unlock(&LOCK_thread_count));
  if (mysql)
  {
    /*
      Here we need to clear the active VIO before closing the
      connection with the master.  The reason is that THD::awake()
      might be called from terminate_slave_thread() because somebody
      issued a STOP SLAVE.  If that happends, the close_active_vio()
      can be called in the middle of closing the VIO associated with
      the 'mysql' object, causing a crash.
    */
#ifdef SIGNAL_WITH_VIO_CLOSE
    thd->clear_active_vio();
#endif
    mysql_close(mysql);
    mi->mysql=0;
  }