We are running MySQL 5.5.21 with both InnoDB and TokuDB as XA storage
engines. When one runs a transaction that inserts into an InnoDB
table and a TokuDB table, the commit crashes the replication slave at
log.cc line 6602 because cache_mngr == NULL. We found a pattern in
various log functions in log.cc that calls binlog_setup_trx_data to
initialize the txn state.
This change fixes our immediate problem.
$ diff log.cc.orig log.cc
> if (thd_get_ha_data(thd, binlog_hton) == NULL)
Is this a correct fix? If so, are there other places that need a
The transaction is:
create table t1 (a int primary key) engine=innodb;
create table t2 (a int primary key) engine=tokudb;
insert into t1 values (1);
insert into t2 values (2);
the slave crashes while handling the commit binlog entry.