mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Merge romeo.(none):/home/bkroot/mysql-5.1-new-rpl
into romeo.(none):/home/bk/b23171-mysql-5.1-new-rpl mysql-test/r/rpl_row_tabledefs_2myisam.result: Auto merged mysql-test/r/rpl_row_tabledefs_3innodb.result: Auto merged sql/rpl_rli.cc: Auto merged sql/rpl_rli.h: Auto merged sql/rpl_utility.cc: Auto merged sql/rpl_utility.h: Auto merged sql/slave.h: Auto merged sql/log.cc: Manual merge sql/log_event.cc: Manual merge sql/log_event.h: Manual merge sql/slave.cc: Manual merge sql/sql_binlog.cc: Manual merge
This commit is contained in:
18
sql/log.cc
18
sql/log.cc
@@ -1548,7 +1548,13 @@ static int binlog_commit(handlerton *hton, THD *thd, bool all)
|
||||
(binlog_trx_data*) thd->ha_data[binlog_hton->slot];
|
||||
DBUG_ASSERT(mysql_bin_log.is_open());
|
||||
|
||||
if (all && trx_data->empty())
|
||||
/*
|
||||
The condition here has to be identical to the one inside
|
||||
binlog_end_trans(), guarding the write of the transaction cache to
|
||||
the binary log.
|
||||
*/
|
||||
if ((all || !(thd->options & (OPTION_BEGIN | OPTION_NOT_AUTOCOMMIT))) &&
|
||||
trx_data->empty())
|
||||
{
|
||||
// we're here because trans_log was flushed in MYSQL_BIN_LOG::log_xid()
|
||||
trx_data->reset();
|
||||
@@ -2499,7 +2505,7 @@ bool MYSQL_BIN_LOG::open(const char *log_name,
|
||||
/*
|
||||
Set 'created' to 0, so that in next relay logs this event does not
|
||||
trigger cleaning actions on the slave in
|
||||
Format_description_log_event::exec_event().
|
||||
Format_description_log_event::apply_event_impl().
|
||||
*/
|
||||
description_event_for_queue->created= 0;
|
||||
/* Don't set log_pos in event header */
|
||||
@@ -3206,8 +3212,10 @@ void MYSQL_BIN_LOG::new_file_impl(bool need_lock)
|
||||
{
|
||||
tc_log_page_waits++;
|
||||
pthread_mutex_lock(&LOCK_prep_xids);
|
||||
while (prepared_xids)
|
||||
while (prepared_xids) {
|
||||
DBUG_PRINT("info", ("prepared_xids=%lu", prepared_xids));
|
||||
pthread_cond_wait(&COND_prep_xids, &LOCK_prep_xids);
|
||||
}
|
||||
pthread_mutex_unlock(&LOCK_prep_xids);
|
||||
}
|
||||
|
||||
@@ -5061,8 +5069,10 @@ void TC_LOG_BINLOG::unlog(ulong cookie, my_xid xid)
|
||||
{
|
||||
pthread_mutex_lock(&LOCK_prep_xids);
|
||||
DBUG_ASSERT(prepared_xids > 0);
|
||||
if (--prepared_xids == 0)
|
||||
if (--prepared_xids == 0) {
|
||||
DBUG_PRINT("info", ("prepared_xids=%lu", prepared_xids));
|
||||
pthread_cond_signal(&COND_prep_xids);
|
||||
}
|
||||
pthread_mutex_unlock(&LOCK_prep_xids);
|
||||
rotate_and_purge(0); // as ::write() did not rotate
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user