Hi,

i don't get rid of this :-)

I use mariadb "10.0.24+maria-1~trusty" on Ubuntu 14.04 and i tried to solve the situation by writing this hacky perl script :-)

The problem seems to be a bug. From my point of view the only solution might be to completely restore a existing mysqldump backup.
Are the other (quicker/better) solutions?

Source file
#!/usr/bin/env perl

use strict;
use warnings;

use DBI;

my $dbh = DBI->connect('DBI:mysql:foodb', 'root', 'mypassword'
                    ) || die "Could not connect to database: $DBI::errstr";

my $sth = $dbh->prepare('xa rollback ?');
my $results = $dbh->selectall_hashref('xa recover;', 'data');
foreach my $id (keys %$results) {
     my $xid = $results->{$id}->{data};

     #$xid =~ s/(.)/sprintf("%x",ord($1))/eg;
     #$xid = "0x".$xid;

     print "XID >>>".$xid."<<<";
     $sth->execute($xid) or die "Couldn't execute statement: " . $sth->errstr;
}

Source file MariaDB complains:
(the same also after converting the xid to hex)

# ./xa-hassle
DBD::mysql::st execute failed: XAER_NOTA: Unknown XID at ./xa-hassle line 20.
Couldn't execute statement: XAER_NOTA: Unknown XID at ./xa-hassle line 20.
XID >>>��XF+foo-bar-de05,server,P4837foo-bar-de05,server,P4837,<<<

Regards
Marc

Am 23.02.2016 um 17:50 schrieb Sergei Golubchik:
Hi, Marc!

While not exactly user-friendly, you can still run

$ mysql -e 'xa recover'|hexdump -C

You'll see hex data there.

Regards,
Sergei

On Feb 22, Marc Schöchlin wrote:
Hi Justin,

how can i get the hex representation of the the transaction identification strings?
("XA RECOVER CONVERT XID" seems only to be available on MySQL 5.7)

I have not tested this, but I think you will need to convert the strings to hex then do:
xa rollback 0xabcdef <-- where 0xabcdef is the hex representation of the string.

--Justin

On Sat, Feb 20, 2016 at 5:53 AM, Marc Schöchlin <ms@256bit.org <mailto:ms@256bit.org>> wrote:

Hi,

i currently have the situation that i cannot modify tables/indices beaus of XA transactions which are in progress.

mysql://root@localhost:/(none) - 11:37:55 > xa recover;
+----------+--------------+--------------+------------------------------------------------------------------+
| formatID | gtrid_length | bqual_length | data                                                             |
+----------+--------------+--------------+------------------------------------------------------------------+
|  4871251 |           35 |           29 | ^W<89>^B <E8>XF+foo-bar-de05,server,P4837foo-bar-de05,server,P4837,^A |
|  4871251 |           35 |           29 | ^N<89>^B <E8>XF+foo-bar-de05,server,P4837foo-bar-de05,server,P4837,^A |
+----------+--------------+--------------+------------------------------------------------------------------+
2 rows in set (0.00 sec)

The documentation (https://mariadb.com/kb/en/mariadb/xa-transactions/) suggests that xa transaction can be rolled back by using "xa rollback xid" but it seems that this is not possible because of the non-ascii characters.
As you can see in the attached Innodb status, these transactions a active for a log time now and should not be relevant anymore.
Naturally restarting the server should not help.....

-- 
GPG encryption available: 0x670DCBEC/pool.sks-keyservers.net
(https://www.256bit.org/keys/mschoechlin.pub.asc)