mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 02:05:57 +01:00
local merge
This commit is contained in:
commit
fdb40d42e5
3 changed files with 15 additions and 7 deletions
|
@ -5284,11 +5284,8 @@ int MYSQL_BIN_LOG::wait_for_update_bin_log(THD* thd,
|
|||
const struct timespec *timeout)
|
||||
{
|
||||
int ret= 0;
|
||||
const char* old_msg = thd->proc_info;
|
||||
DBUG_ENTER("wait_for_update_bin_log");
|
||||
old_msg= thd->enter_cond(&update_cond, &LOCK_log,
|
||||
"Master has sent all binlog to slave; "
|
||||
"waiting for binlog to be updated");
|
||||
|
||||
if (!timeout)
|
||||
mysql_cond_wait(&update_cond, &LOCK_log);
|
||||
else
|
||||
|
|
|
@ -460,6 +460,7 @@ public:
|
|||
inline char* get_log_fname() { return log_file_name; }
|
||||
inline char* get_name() { return name; }
|
||||
inline mysql_mutex_t* get_log_lock() { return &LOCK_log; }
|
||||
inline mysql_cond_t* get_log_cond() { return &update_cond; }
|
||||
inline IO_CACHE* get_log_file() { return &log_file; }
|
||||
|
||||
inline void lock_index() { mysql_mutex_lock(&LOCK_index);}
|
||||
|
|
|
@ -448,6 +448,8 @@ void mysql_binlog_send(THD* thd, char* log_ident, my_off_t pos,
|
|||
const char *errmsg = "Unknown error";
|
||||
NET* net = &thd->net;
|
||||
mysql_mutex_t *log_lock;
|
||||
mysql_cond_t *log_cond;
|
||||
|
||||
bool binlog_can_be_corrupted= FALSE;
|
||||
#ifndef DBUG_OFF
|
||||
int left_events = max_binlog_dump_events;
|
||||
|
@ -591,7 +593,8 @@ impossible position";
|
|||
mysql_bin_log, and it's already inited, and it will be destroyed
|
||||
only at shutdown).
|
||||
*/
|
||||
log_lock = mysql_bin_log.get_log_lock();
|
||||
log_lock= mysql_bin_log.get_log_lock();
|
||||
log_cond= mysql_bin_log.get_log_cond();
|
||||
if (pos > BIN_LOG_HEADER_SIZE)
|
||||
{
|
||||
/* reset transmit packet for the event read from binary log
|
||||
|
@ -826,6 +829,7 @@ impossible position";
|
|||
#ifndef DBUG_OFF
|
||||
ulong hb_info_counter= 0;
|
||||
#endif
|
||||
const char* old_msg= thd->proc_info;
|
||||
signal_cnt= mysql_bin_log.signal_cnt;
|
||||
do
|
||||
{
|
||||
|
@ -834,6 +838,9 @@ impossible position";
|
|||
DBUG_ASSERT(heartbeat_ts && heartbeat_period != 0);
|
||||
set_timespec_nsec(*heartbeat_ts, heartbeat_period);
|
||||
}
|
||||
thd->enter_cond(log_cond, log_lock,
|
||||
"Master has sent all binlog to slave; "
|
||||
"waiting for binlog to be updated");
|
||||
ret= mysql_bin_log.wait_for_update_bin_log(thd, heartbeat_ts);
|
||||
DBUG_ASSERT(ret == 0 || (heartbeat_period != 0 && coord != NULL));
|
||||
if (ret == ETIMEDOUT || ret == ETIME)
|
||||
|
@ -849,12 +856,15 @@ impossible position";
|
|||
#endif
|
||||
/* reset transmit packet for the heartbeat event */
|
||||
if (reset_transmit_packet(thd, flags, &ev_offset, &errmsg))
|
||||
{
|
||||
thd->exit_cond(old_msg);
|
||||
goto err;
|
||||
}
|
||||
if (send_heartbeat_event(net, packet, coord))
|
||||
{
|
||||
errmsg = "Failed on my_net_write()";
|
||||
my_errno= ER_UNKNOWN_ERROR;
|
||||
mysql_mutex_unlock(log_lock);
|
||||
thd->exit_cond(old_msg);
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
|
@ -863,7 +873,7 @@ impossible position";
|
|||
DBUG_PRINT("wait",("binary log received update or a broadcast signal caught"));
|
||||
}
|
||||
} while (signal_cnt == mysql_bin_log.signal_cnt && !thd->killed);
|
||||
mysql_mutex_unlock(log_lock);
|
||||
thd->exit_cond(old_msg);
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue