Annotate rows events on slave doesnt' work without slave's binlog

Bug #872754 reported by Oleg Tsarev
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
MariaDB
New
Undecided
Kristian Nielsen
Percona Server moved to https://jira.percona.com/projects/PS
Fix Released
High
Oleg Tsarev
Rnt-5.1
Fix Released
High
Oleg Tsarev

Bug Description

master: --binlog_annotate_rows_log_events
slave: --slave_annotate_rows_log_event --log_slave_updates=0

slave fails with error:
[ERROR] Slave I/O: Got fatal error 1236 from master when reading data from binary log: 'log event entry exceeded max_allowed_packet; Increase max_allowed_packet on master', Error_code: 1236

if master idle more than --slave_net_timeout.

Test-case in attachment.

I investigated it, and found the following:
1) master doesn't replicate Annotate_rows_log_event to slave if one of the following is true:
  a) --replicate_annotate_rows_event is OFF
  b) --log_slave_updates is OFF
2) While slave executes events, it calculates mi->master_log_pos (Exec_Master_Log_Pos).
If master doesn't replicate Annotate_rows_log_event to slave, mi->master_log_pos is incorrect (less than log_pos-on-master to sizeof(Annotate_rows_log_event) that weren't sent from master to slave).
3) After slave_net_timeout slave reconnects to master and sends mi->master_log_pos to it.
As a result, master tries to read event from its log from incorrect position.

Possible fixes:
1) always replicate Annotate_rows_log_event from master to slave. If you do this, option "--replicate_annotate_rows_events" doesn't have sense (always true) and should be removed
2) fix the Master Dump Thread - when "--replicate_annotate_rows_events" disabled or slave run with "--log_slave_updates=0", master should notify slave about skipped events (probably as filtered event or send Rotate_log_event )- I don't sure what this is possible or correct fix (just idea)

Tags: cr i13894
Revision history for this message
Oleg Tsarev (tsarev) wrote :

Test-case for MariaDB

Revision history for this message
Oleg Tsarev (tsarev) wrote :

Test-case for Percona-Server rnt-5.1

Changed in percona-server:
assignee: nobody → Oleg Tsarev (tsarev)
status: New → Confirmed
importance: Undecided → High
tags: added: cr i13894
Changed in maria:
status: New → Confirmed
Revision history for this message
Kristian Nielsen (knielsen) wrote :

I think this will be fixed in mariadb when MWL#234 is merged.

Changed in maria:
assignee: nobody → Kristian Nielsen (knielsen)
status: Confirmed → New
Oleg Tsarev (tsarev)
Changed in percona-server:
status: Confirmed → Fix Committed
Changed in percona-server:
assignee: Oleg Tsarev (tsarev) → Alexey Kopytov (akopytov)
status: Fix Committed → In Progress
Stewart Smith (stewart)
Changed in percona-server:
assignee: Alexey Kopytov (akopytov) → Oleg Tsarev (tsarev)
status: In Progress → Fix Committed
Oleg Tsarev (tsarev)
Changed in percona-server:
status: Fix Committed → Fix Released
Revision history for this message
Shahriyar Rzayev (rzayev-sehriyar) wrote :

Percona now uses JIRA for bug reports so this bug report is migrated to: https://jira.percona.com/browse/PS-506

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.