Bug #25770 error when using binlog from circ replicaiotn
Submitted: 23 Jan 2007 8:36 Modified: 29 Mar 2007 6:48
Reporter: Tomas Ulin Email Updates:
Status: Duplicate Impact on me:
None 
Category:MySQL Server: Row Based Replication ( RBR ) Severity:S1 (Critical)
Version:5.1 OS:
Assigned to: Assigned Account CPU Architecture:Any

[23 Jan 2007 8:36] Tomas Ulin
Description:
see below

How to repeat:
./mysql-test-run.pl --start-and-exit --debug --mysqld=--binlog-format=row rpl_ndb_basic

cp master-bin.000001 var/log/.

slave> start slave;

crash...  after about 10 seconds
[23 Jan 2007 8:37] Tomas Ulin
master-bin.00001

Attachment: master-bin.000001 (application/octet-stream, text), 818 bytes.

[10 Mar 2007 17:42] Andrei Elkin
The reason of the bug is that the trailing row event of the transaction group got denied since it was originated by the slave itself. However the table level lock
was made for that event at the first event execution.

Hence, the trailing event's reseting work that involves table unlock should be performed even though the event is rejected.
[12 Mar 2007 15:59] Lars Thalmann
REFINED PROBLEM DESCRIPTION
---------------------------

When using circular (row-based) replication between clusters A <--> B,
is can happen that B receives the events:

  row (from A)
  row (from B itself)
  commit

The problem is the that the second event does some cleanup and when it
is ignored (due to same server id), the clean up does not happen.

SOLUTION
--------

Fix so that even though the second row is ignored the cleanup is done
anyway.  

(Note that since NDB sends rows from multiple "real" transactions in
its replicated "epoch" transaction, parts of the epoch transaction
must be ignored in the slave when those parts of the epoch transaction
where actually created by the slave itself.)
[29 Mar 2007 6:48] Andrei Elkin
the parent is Bug#25688.