← Back to team overview

maria-developers team mailing list archive

Re: Fwd: crash in slave replication with XA transaction

 

Hi!

>>>>> "Rich" == Rich Prohaska <prohaska@xxxxxxxxxxx> writes:

Rich> Hello,
Rich> Thanks for the feedback on how to fix our replication slave crash.
Rich> I hacked the mariadb 5.5.23 and ended up with the attached patch.
Rich> Rich Prohaska

> --- log.cc.orig	2012-06-08 16:36:34.007231363 -0400
> +++ log.cc	2012-06-08 16:36:36.218354938 -0400
> @@ -1838,6 +1838,7 @@
>  {
>    int error= 0;
>    DBUG_ENTER("binlog_commit");
> +  thd->binlog_setup_trx_data();

It would be good to have error checking if the above failed.

>    binlog_cache_mngr *const cache_mngr=
>      (binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
>  
> @@ -1894,6 +1895,7 @@
>  {
>    DBUG_ENTER("binlog_rollback");
>    int error= 0;
> +  thd->binlog_setup_trx_data();

It would be good to have error checking if the above failed.

<cut>

> @@ -4846,6 +4848,7 @@
>    if (binlog_table_maps == 0)
>      binlog_start_trans_and_stmt();
>  
> +  this->binlog_setup_trx_data();
>    binlog_cache_mngr *const cache_mngr=
>      (binlog_cache_mngr*) thd_get_ha_data(this, binlog_hton);

I would move the call this->binlog_setup_trx_data() before

   if (binlog_table_maps == 0)
     binlog_start_trans_and_stmt();

As binlog_start_trans_and_stmt() will also need the structure.

> @@ -4941,6 +4944,7 @@
>  {
>    DBUG_ENTER("MYSQL_BIN_LOG::remove_pending_rows_event");
>  
> +  thd->binlog_setup_trx_data();

Add error checking. Same to other places.

Otherwise ok!

Regards,
Monty


References