[MDEV-6549] Assertion `(thd->variables.option_bits & (1ULL << 25)) == 0' failed with parallel replication Created: 2014-08-07 Updated: 2014-08-13 Resolved: 2014-08-13 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | None |
| Affects Version/s: | 10.0.13 |
| Fix Version/s: | 10.0.14 |
| Type: | Bug | Priority: | Major |
| Reporter: | Elena Stepanova | Assignee: | Kristian Nielsen |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Attachments: |
|
| Description |
|
Stack trace from:
To reproduce:
Note: most likely not all slave-skip-errors values are needed, but some are. The failure happens sporadically in different places over the course of replicating the binary logs. For me it happens 2-3 times before the slave catches up with the master. The binary logs were created during a usual stress test on Power 8 machine and were not tampered with anyhow. Could not reproduce without parallel replication. |
| Comments |
| Comment by Kristian Nielsen [ 2014-08-11 ] |
|
Ok, I can reproduce as described. The thread that asserts turns out to have needed to do a deadlock retry of the transaction executed just before the one that asserts. It seems likely that the problem is missing cleanup of some transactional state flag in case of transaction retry. I'll dig into it. |
| Comment by Kristian Nielsen [ 2014-08-13 ] |
|
Ok, so the real problem here turned out to be as follows: When a replicated transaction updates (but does not commit yet) the update of As a side effect the code would also skip clearing OPTION_GTID_BEGIN when Good catch! |
| Comment by Kristian Nielsen [ 2014-08-13 ] |
|
Pushed to 10.0.14 |