mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
merge mysql-5.1-rep+2-delivery1 --> mysql-5.1-rpl-merge
Conflicts: Text conflict in .bzr-mysql/default.conf Text conflict in mysql-test/extra/rpl_tests/rpl_loaddata.test Text conflict in mysql-test/r/mysqlbinlog2.result Text conflict in mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result Text conflict in mysql-test/suite/binlog/r/binlog_unsafe.result Text conflict in mysql-test/suite/rpl/r/rpl_insert_id.result Text conflict in mysql-test/suite/rpl/r/rpl_loaddata.result Text conflict in mysql-test/suite/rpl/r/rpl_stm_auto_increment_bug33029.result Text conflict in mysql-test/suite/rpl/r/rpl_udf.result Text conflict in mysql-test/suite/rpl/t/rpl_slow_query_log.test Text conflict in sql/field.h Text conflict in sql/log.cc Text conflict in sql/log_event.cc Text conflict in sql/log_event_old.cc Text conflict in sql/mysql_priv.h Text conflict in sql/share/errmsg.txt Text conflict in sql/sp.cc Text conflict in sql/sql_acl.cc Text conflict in sql/sql_base.cc Text conflict in sql/sql_class.h Text conflict in sql/sql_db.cc Text conflict in sql/sql_delete.cc Text conflict in sql/sql_insert.cc Text conflict in sql/sql_lex.cc Text conflict in sql/sql_lex.h Text conflict in sql/sql_load.cc Text conflict in sql/sql_table.cc Text conflict in sql/sql_update.cc Text conflict in sql/sql_view.cc Conflict adding files to storage/innobase. Created directory. Conflict because storage/innobase is not versioned, but has versioned children. Versioned directory. Conflict adding file storage/innobase. Moved existing file to storage/innobase.moved. Conflict adding files to storage/innobase/handler. Created directory. Conflict because storage/innobase/handler is not versioned, but has versioned children. Versioned directory. Contents conflict in storage/innobase/handler/ha_innodb.cc
This commit is contained in:
48
sql/slave.cc
48
sql/slave.cc
@ -464,6 +464,7 @@ int terminate_slave_threads(Master_info* mi,int thread_mask,bool skip_lock)
|
||||
DBUG_RETURN(0); /* successfully do nothing */
|
||||
int error,force_all = (thread_mask & SLAVE_FORCE_ALL);
|
||||
pthread_mutex_t *sql_lock = &mi->rli.run_lock, *io_lock = &mi->run_lock;
|
||||
pthread_mutex_t *log_lock= mi->rli.relay_log.get_log_lock();
|
||||
|
||||
if (thread_mask & (SLAVE_IO|SLAVE_FORCE_ALL))
|
||||
{
|
||||
@ -475,6 +476,22 @@ int terminate_slave_threads(Master_info* mi,int thread_mask,bool skip_lock)
|
||||
skip_lock)) &&
|
||||
!force_all)
|
||||
DBUG_RETURN(error);
|
||||
|
||||
pthread_mutex_lock(log_lock);
|
||||
|
||||
DBUG_PRINT("info",("Flushing relay log and master info file."));
|
||||
if (current_thd)
|
||||
thd_proc_info(current_thd, "Flushing relay log and master info files.");
|
||||
if (flush_master_info(mi, TRUE /* flush relay log */))
|
||||
DBUG_RETURN(ER_ERROR_DURING_FLUSH_LOGS);
|
||||
|
||||
if (my_sync(mi->rli.relay_log.get_log_file()->file, MYF(MY_WME)))
|
||||
DBUG_RETURN(ER_ERROR_DURING_FLUSH_LOGS);
|
||||
|
||||
if (my_sync(mi->fd, MYF(MY_WME)))
|
||||
DBUG_RETURN(ER_ERROR_DURING_FLUSH_LOGS);
|
||||
|
||||
pthread_mutex_unlock(log_lock);
|
||||
}
|
||||
if (thread_mask & (SLAVE_SQL|SLAVE_FORCE_ALL))
|
||||
{
|
||||
@ -486,8 +503,21 @@ int terminate_slave_threads(Master_info* mi,int thread_mask,bool skip_lock)
|
||||
skip_lock)) &&
|
||||
!force_all)
|
||||
DBUG_RETURN(error);
|
||||
|
||||
pthread_mutex_lock(log_lock);
|
||||
|
||||
DBUG_PRINT("info",("Flushing relay-log info file."));
|
||||
if (current_thd)
|
||||
thd_proc_info(current_thd, "Flushing relay-log info file.");
|
||||
if (flush_relay_log_info(&mi->rli))
|
||||
DBUG_RETURN(ER_ERROR_DURING_FLUSH_LOGS);
|
||||
|
||||
if (my_sync(mi->rli.info_fd, MYF(MY_WME)))
|
||||
DBUG_RETURN(ER_ERROR_DURING_FLUSH_LOGS);
|
||||
|
||||
pthread_mutex_unlock(log_lock);
|
||||
}
|
||||
DBUG_RETURN(0);
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
|
||||
@ -1592,6 +1622,12 @@ int register_slave_on_master(MYSQL* mysql, Master_info *mi,
|
||||
pos= net_store_data(pos, (uchar*) report_user, report_user_len);
|
||||
pos= net_store_data(pos, (uchar*) report_password, report_password_len);
|
||||
int2store(pos, (uint16) report_port); pos+= 2;
|
||||
/*
|
||||
Fake rpl_recovery_rank, which was removed in BUG#13963,
|
||||
so that this server can register itself on old servers,
|
||||
see BUG#49259.
|
||||
*/
|
||||
int4store(pos, /* rpl_recovery_rank */ 0); pos+= 4;
|
||||
/* The master will fill in master_id */
|
||||
int4store(pos, 0); pos+= 4;
|
||||
|
||||
@ -4205,8 +4241,9 @@ MYSQL *rpl_connect_master(MYSQL *mysql)
|
||||
rli Relay log information
|
||||
|
||||
NOTES
|
||||
- As this is only called by the slave thread, we don't need to
|
||||
have a lock on this.
|
||||
- As this is only called by the slave thread or on STOP SLAVE, with the
|
||||
log_lock grabbed and the slave thread stopped, we don't need to have
|
||||
a lock here.
|
||||
- If there is an active transaction, then we don't update the position
|
||||
in the relay log. This is to ensure that we re-execute statements
|
||||
if we die in the middle of an transaction that was rolled back.
|
||||
@ -4257,7 +4294,10 @@ bool flush_relay_log_info(Relay_log_info* rli)
|
||||
error=1;
|
||||
rli->sync_counter= 0;
|
||||
}
|
||||
/* Flushing the relay log is done by the slave I/O thread */
|
||||
/*
|
||||
Flushing the relay log is done by the slave I/O thread
|
||||
or by the user on STOP SLAVE.
|
||||
*/
|
||||
DBUG_RETURN(error);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user