You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bug#19928622: ASSERTION `! IS_SET()' FAILED. | ABORT IN
DIAGNOSTICS_AREA::SET_OK_STATUS
Analysis:
========
When XA transaction is active trying to execute an internal
rollback will result in error ER_XAER_RMFAIL.i.e ERROR 1399
(XAE07): XAER_RMFAIL: The command cannot be executed when
global transaction is in the ACTIVE state. In the bug
scenario a format description BINLOG command is being
executed.
While applying Format_description event there a peace of
code which handles a special scenario. i.e a transaction
NEVER spans on 2 or more binlogs: if we have an active
transaction at this point, the master died while writing
the transaction to the binary log, i.e. while flushing
the binlog cache to the binlog. XA guarantees that master
has rolled back. So we roll back. This rollback fails as
an XA transaction is active and results in error 1399 and
error diagnostic area is set to DA_ERROR. Post execution
of the roll back, code tries to execute my_ok(thd). This
my_ok(thd) expects diagnostic are to be DA_EMPTY since this
contradicts with DA_ERROR an assert is generated.
Fix:
===
The above mentioned rollback scenario should happen only
for real slave when transaction spans across multiple
binlogs. Roll back should not happen if the
Format_description comes through BINLOG command from client.
Hence avoid the call to rollback so that the
Format_description event gets applied successfully.
0 commit comments