← Back to team overview

maria-developers team mailing list archive

Re: Galera-10.0 still does not work with rollbacks


seppo.jaakola@xxxxxxxxxxxxx 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 ...

      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.

Follow ups