mariadb/mysql-test/suite/rpl
Brandon Nesterenko 555c12a541 MDEV-21087/MDEV-21433: ER_SLAVE_INCIDENT arrives at slave without failure specifics
Problem:
=======

This patch addresses two issues:

 1. An incident event can be incorrectly reported for transactions
which are rolled back successfully. That is, an incident event
should only be generated for failed “non-transactional transactions”
(i.e., those which modify non-transactional tables) because they
cannot be rolled back.

 2. When the mariadb slave (error) stops at receiving the incident
event there's no description of what led to it. Neither in the event
nor in the master's error log.

Solution:
========

Before reporting an incident event for a transaction, first validate
that it is “non-transactional” (i.e. cannot be safely rolled back).
To determine if a transaction is non-transactional,
  lex->stmt_accessed_table(LEX::STMT_WRITES_NON_TRANS_TABLE)
is used because it is set previously in
THD::decide_logging_format().

Additionally, when an incident event is written, write an error
message to the server’s error log to indicate the underlying issue.

Reviewed by:
===========
Andrei Elkin <andrei.elkin@mariadb.com>
2022-07-25 16:26:53 -06:00
..
extension mtr: use env for perl 2020-06-23 03:24:46 +02:00
include MDEV-21087/MDEV-21433: ER_SLAVE_INCIDENT arrives at slave without failure specifics 2022-07-25 16:26:53 -06:00
r MDEV-21087/MDEV-21433: ER_SLAVE_INCIDENT arrives at slave without failure specifics 2022-07-25 16:26:53 -06:00
t MDEV-21087/MDEV-21433: ER_SLAVE_INCIDENT arrives at slave without failure specifics 2022-07-25 16:26:53 -06:00
disabled.def enable rpl_semi_sync_after_sync and rpl_semi_sync_slave_compressed_protocol tests 2021-12-07 15:25:43 +01:00
my.cnf
README
rpl_1slave_base.cnf

How to run.
===========

./mysql-test-run.pl --suite=rpl --mysqld=--binlog-format=mixed