Skip to content
  • Andrei Elkin's avatar
    8c7818a6
    Bug#21942487 ASSERTION `STATIC_CAST<SQL_CMD_XA_COMMIT*>(THD->LEX->M_SQL_CMD)-> GET_XA_OPT() · 8c7818a6
    Andrei Elkin authored
    Bug#22273964 	INNODB: FAILING ASSERTION: TOTAL_TRX >= TRX_SYS->N_PREPARED_TRX
    
    **Problem description**
    
    An assertion of Bug#21942487
    
    static_cast<Sql_cmd_xa_commit*>(thd->lex->m_sql_cmd)->
                                  get_xa_opt() == XA_ONE_PHASE
    
    #8  0x0000000000e3a5e1 in ha_commit_low
    #9  0x00000000015158e6 in TC_LOG_DUMMY::commit
    #10 0x0000000001529bc3 in Sql_cmd_xa_commit::trans_xa_commit
    
    was caused by incorrect assumption by XA binlogging of wl6860 in
    that @@session.pseudo_slave_mode can be only set 1 through binlog.
    If fact the var can be set so manually.
    
    Another assert in Bug#22273964 takes place for the very same reason.
    
    **Solution**
    
    The most reliable way to identify that the executing thread
    is a binlog applier must include both the checking of rli_fake
    and @@session.pseudo_slave_mode.
    The former merely checking of the session variable as atttemp to
    identify the binlog applier is replaced by checking the conjuction
    of the two properties.
    
    Notice that load containting SET @@session.pseudo_slave_mode=1 and
    BINLOG '' pseudo-queries is not necessary authentic to mysqlbinlog output.
    Nevertheless it must be processable when it's manually engineered such way.
    A test is included to prove that as well.
    
    **Note**
    Beware of Bug #19502202 SERVER SHUTDOWN HANG SEEN IN SOME INNODB & RPL TESTS
    at testing with binlog.binlog_xa_prepared_disconnect that still fails sporadically.
    8c7818a6
    Bug#21942487 ASSERTION `STATIC_CAST<SQL_CMD_XA_COMMIT*>(THD->LEX->M_SQL_CMD)-> GET_XA_OPT()
    Andrei Elkin authored
    Bug#22273964 	INNODB: FAILING ASSERTION: TOTAL_TRX >= TRX_SYS->N_PREPARED_TRX
    
    **Problem description**
    
    An assertion of Bug#21942487
    
    static_cast<Sql_cmd_xa_commit*>(thd->lex->m_sql_cmd)->
                                  get_xa_opt() == XA_ONE_PHASE
    
    #8  0x0000000000e3a5e1 in ha_commit_low
    #9  0x00000000015158e6 in TC_LOG_DUMMY::commit
    #10 0x0000000001529bc3 in Sql_cmd_xa_commit::trans_xa_commit
    
    was caused by incorrect assumption by XA binlogging of wl6860 in
    that @@session.pseudo_slave_mode can be only set 1 through binlog.
    If fact the var can be set so manually.
    
    Another assert in Bug#22273964 takes place for the very same reason.
    
    **Solution**
    
    The most reliable way to identify that the executing thread
    is a binlog applier must include both the checking of rli_fake
    and @@session.pseudo_slave_mode.
    The former merely checking of the session variable as atttemp to
    identify the binlog applier is replaced by checking the conjuction
    of the two properties.
    
    Notice that load containting SET @@session.pseudo_slave_mode=1 and
    BINLOG '' pseudo-queries is not necessary authentic to mysqlbinlog output.
    Nevertheless it must be processable when it's manually engineered such way.
    A test is included to prove that as well.
    
    **Note**
    Beware of Bug #19502202 SERVER SHUTDOWN HANG SEEN IN SOME INNODB & RPL TESTS
    at testing with binlog.binlog_xa_prepared_disconnect that still fails sporadically.
Loading