1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Fix for BUG#3017

"wrong Relay_Log_Pos if Rotate is in the middle of a transaction in relay log"
increment 'pending' instead of 'relay_log_pos'.
This commit is contained in:
guilhem@mysql.com
2004-03-01 00:46:31 +01:00
parent e175101a10
commit e022ba6063
2 changed files with 6 additions and 4 deletions

View File

@ -10,4 +10,4 @@ reset slave;
start slave; start slave;
show slave status; show slave status;
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space
127.0.0.1 root MASTER_PORT 1 master-bin.002 4 slave-relay-bin.002 161 master-bin.001 Yes No 0 Rolling back unfinished transaction (no COMMIT or ROLLBACK) from relay log. Probably cause is that the master died while writing the transaction to it's binary log. 0 79 # 127.0.0.1 root MASTER_PORT 1 master-bin.002 4 slave-relay-bin.002 120 master-bin.001 Yes No 0 Rolling back unfinished transaction (no COMMIT or ROLLBACK) from relay log. A probable cause is that the master died while writing the transaction to its binary log. 0 79 #

View File

@ -2121,7 +2121,7 @@ int Start_log_event::exec_event(struct st_relay_log_info* rli)
slave_print_error(rli, 0, slave_print_error(rli, 0,
"\ "\
Rolling back unfinished transaction (no COMMIT or ROLLBACK) from relay log. \ Rolling back unfinished transaction (no COMMIT or ROLLBACK) from relay log. \
Probably cause is that the master died while writing the transaction to it's \ A probable cause is that the master died while writing the transaction to its \
binary log."); binary log.");
return(1); return(1);
} }
@ -2221,13 +2221,15 @@ int Rotate_log_event::exec_event(struct st_relay_log_info* rli)
In that case, we don't want to touch the coordinates which correspond to the In that case, we don't want to touch the coordinates which correspond to the
beginning of the transaction. beginning of the transaction.
*/ */
if (!rli->inside_transaction) if (rli->inside_transaction)
rli->inc_pending(get_event_len());
else
{ {
memcpy(rli->master_log_name, new_log_ident, ident_len+1); memcpy(rli->master_log_name, new_log_ident, ident_len+1);
rli->master_log_pos= pos; rli->master_log_pos= pos;
rli->relay_log_pos += get_event_len();
DBUG_PRINT("info", ("master_log_pos: %lu", (ulong) rli->master_log_pos)); DBUG_PRINT("info", ("master_log_pos: %lu", (ulong) rli->master_log_pos));
} }
rli->relay_log_pos += get_event_len();
pthread_mutex_unlock(&rli->data_lock); pthread_mutex_unlock(&rli->data_lock);
pthread_cond_broadcast(&rli->data_cond); pthread_cond_broadcast(&rli->data_cond);
flush_relay_log_info(rli); flush_relay_log_info(rli);