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:
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
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

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

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)

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.


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

(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.