Bug #80828 Failure to generate GTID still leads to inconsistency
Submitted: 22 Mar 2016 21:47 Modified: 23 Mar 2016 7:53
Reporter: Davi Arnaut (OCA) Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: Replication Severity:S2 (Serious)
Version:5.6.29 OS:Any
Assigned to: CPU Architecture:Any

[22 Mar 2016 21:47] Davi Arnaut
Description:
The fix for Bug#77393 missed a crucial component of the bug report. The problem is that
even though the transaction returns an error, it is still committed! If a error is returned the
transaction should not be committed. This should be orthogonal to binlog_error_action,
there is no point is letting the data get inconsistent if it can be prevented.

How to repeat:
See test case for Bug#77393

mysql> SELECT * FROM t1;
+---+
| a |
+---+
| 1 |
+---+
1 row in set (0.00 sec)

mysql> INSERT INTO t1 VALUES (2);
ERROR 1775 (HY000): Impossible to generate Global Transaction Identifier: the integer component reached the maximal value. Restart the server with a new server_uuid.
mysql> SELECT * FROM t1;
+---+
| a |
+---+
| 1 |
| 2 |
+---+
2 rows in set (0.00 sec)

Insert succeeded even though an error was returned.

Suggested fix:
Rollback transactions when there is an error is encountered.
[23 Mar 2016 7:53] Umesh Shastry
Hello Davi,

Thank you for the report and feedback.

Thanks,
Umesh