Problems with Multiple XA Storage Engines in MySQL 5.6

Registered by rich prohaska

While integrating TokuDB into MySQL 5.6, we found that MySQL 5.6 does not support more than one XA storage engine. For example, there is an assert in the ha_recover function that fires when the total number of XA storage engines is too big. After disabling this assert, we found lots of bugs in the MySQL 5.6 implementation of the TC_LOG_MMAP class, which is used when running with the binlog turned off.

There are two alternatives that we know about to fix this problem in MySQL 5.6

First, we could merge code from MariaDB 5.5 into MySQL 5.6. The advantage of this approach is that we have been running this code with TokuDB in MariaDB 5.5 for a long time, so we have confidence in its correctness.

Second, we found that MySQL 5.7.2 has made changes to allow multiple XA storage engines. This is great news for TokuDB since we have one less MySQL patch to have to worry about. Our simple scan of the MySQL 5.7 source showed only one XA storage engine - InnoDB. Where are the others? How did this feature get tested?

We merged MariaDB's implemention into our version of MySQL 5.6. These changes can be found here:
https://github.com/Tokutek/mysql56/commit/ff6bc5def164a9e8fd89c9a8275cfc1c6068c677
and
https://github.com/Tokutek/mysql56/commit/e1b314d7c47a670ea7ed30e24de7115d56e0768c

Blueprint information

Status:
Complete
Approver:
None
Priority:
High
Drafter:
None
Direction:
Approved
Assignee:
Laurynas Biveinis
Definition:
Approved
Series goal:
Accepted for 5.6
Implementation:
Implemented
Milestone target:
milestone icon 5.6.16-64.0
Started by
Laurynas Biveinis
Completed by
Laurynas Biveinis

Whiteboard

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.