[MDEV-8794] Recovery failed! You must enable exactly 3 storage engines that support two-phase commit protocol Created: 2015-09-11 Updated: 2015-11-06 Resolved: 2015-11-06 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Plugins, XA |
| Affects Version/s: | 10.1 |
| Fix Version/s: | N/A |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Elena Stepanova | Assignee: | Sergei Golubchik |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||
| Sprint: | 10.1.9-2 | ||||||||
| Description |
|
Note: It does not matter which xa-capable engine is missing, and whether it is missing or it newly appeared, only the number matters. E.g. it can be reproduced by adding TokuDB instead of removing SEQUENCE; on the other hand, if you remove SEQUENCE and add TokuDB at once, the server starts all right, because the number of engines is the same.
Also, the number it reports looks weird. When there were two engines and one is gone, it asks for 3, etc. |
| Comments |
| Comment by Elena Stepanova [ 2015-10-30 ] |
|
Raising the priority because of |
| Comment by Sergei Golubchik [ 2015-11-06 ] |
|
This behavior is intentional. The check for the number of engines is supposed to catch user mistakes when one of XA-capable engines is disabled after the crash but before the recovery. Note that
It follows that all XA-capable engines from before the crash must be present during recovery, otherwise you risk "hanging" transactions and inconsistent data. This is not a bullet-proof check, if one wants to fool it and get inconstent data, he can unload XA-capable engine and replace it with a different XA-capable engine. Or one can simply delete the tc-log file. This check is only designed to prevents user mistakes, not malicious actions. The upgrade — sequence engine related — issue will be fixed in |