← Back to team overview

maria-developers team mailing list archive

Re: crash in slave replication with XA transaction

 

Hello all,

Does anyone have any feedback on this issue? We currently have a
customer affected by this issue.

Thanks
-Zardosht

On Tue, Jun 5, 2012 at 11:14 AM, Rich Prohaska <prohaska@xxxxxxxxxxx> wrote:
> We made a slightly different change for MariaDB 5.5.24 in the
> TC_LOG_BINLOG::log_and_order function.
>
> $ diff log.cc.orig log.cc
> 7424a7425,7426
>>   if (thd_get_ha_data(thd, binlog_hton) == NULL)
>>     thd->binlog_setup_trx_data();
>
> Is this correct?
>
> Is this sufficient?
>
> Thanks
> RIch Prohaska
>
> On Tue, Jun 5, 2012 at 10:14 AM, Zardosht Kasheff <zardosht@xxxxxxxxx> wrote:
>> Hello all,
>>
>> We see this on Maria 5.2 and Maria 5.5 as well. Does the following fix work?
>>
>> -Zardosht
>>
>>
>> ---------- Forwarded message ----------
>> From: Rich Prohaska <prohaska@xxxxxxxxxxx>
>> Date: Mon, Jun 4, 2012 at 1:23 PM
>> Subject: crash in slave replication with XA transaction
>> To: internals@xxxxxxxxxxxxxxx
>>
>>
>> Hello,
>>
>> 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
>> 6595a6596,6597
>>>   if (thd_get_ha_data(thd, binlog_hton) == NULL)
>>>     thd->binlog_setup_trx_data();
>>
>> Is this a correct fix?  If so, are there other places that need a
>> similar change?
>>
>> Thanks
>> Rich Prohaska
>>
>>
>> The transaction is:
>> create table t1 (a int primary key) engine=innodb;
>> create table t2 (a int primary key) engine=tokudb;
>> set autocommit=0;
>> insert into t1 values (1);
>> insert into t2 values (2);
>> commit;
>>
>> the slave crashes while handling the commit binlog entry.
>>
>> --
>> MySQL Internals Mailing List
>> For list archives: http://lists.mysql.com/internals
>> To unsubscribe:    http://lists.mysql.com/internals


References