Hi,

I think I solved this issue by

#ifdef WITH_WSREP
if (!wsrep_emulate_bin_log)
    binlog_trans_log_truncate(thd, *(my_off_t*)sv);
#endif

This avoids using the uninitialized memory in Galera, this was error in merge.

R: Jan
 
seppo.jaakola@codership.com writes:

Did I understand it right that the problem is with "ROLLBACK TO
SAVEPOINT...", where the designated savepoint does not exist? Did you
No. It is a very simple issue.

The beginning of binlog_savepoint_set() reads:

    #ifdef WITH_WSREP
      if (wsrep_emulate_bin_log) DBUG_RETURN(0);
    #endif /* WITH_WSREP */

So binlog_savepoint_set() does nothing in the Galera case.

But binlog_savepoint_rollback() reads:

    #ifdef WITH_WSREP
      if (!wsrep_emulate_bin_log ...
    #endif
      {
        ...
      }

      binlog_trans_log_truncate(thd, *(my_off_t*)sv);

Note that the binlog_trans_log_truncate() call is outside the if, so it _is_
executed even in the Galera case.

So the WSREP patch tries to disable some binlog savepoint code but does it
incorrectly. It disables setting the savepoint but not rolling it back, so the
latter gets invalid data. It needs to match up, so that _set() and _rollback()
match each other in what they do.

This issue is in the maria-10.0-galera tree. I did not check other Galera
trees (not sure which trees to check).

 - Kristian.

_______________________________________________
Mailing list: https://launchpad.net/~maria-developers
Post to     : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp


--

--

Jan Lindström
Principal Engineer

MariaDB | MaxScale | skype: jan_p_lindstrom

www.skysql.com

Twitter Blog Facebook LinkedIn Google+