[MDEV-25055] XA ROLLBACK reports ER_XAER_NOTA for another connection's XA PREPARE Created: 2021-03-04  Updated: 2023-03-30

Status: Open
Project: MariaDB Server
Component/s: XA
Affects Version/s: 10.2, 10.6
Fix Version/s: 10.5

Type: Bug Priority: Minor
Reporter: Marko Mäkelä Assignee: Unassigned
Resolution: Unresolved Votes: 1
Labels: None

Issue Links:
Relates
relates to MDEV-742 LP:803649 - Xa recovery failed on cli... Closed

 Description   

The following test returns an error for the first XA ROLLBACK statement. I think that at least starting with 10.5 (thanks to the changes of MDEV-742) it should be possible to detach the transaction from the original connection and allow another connection to execute the XA COMMIT or XA ROLLBACK.

--source include/have_innodb.inc
create table test(x int) engine=innodb;
xa start 0x01,0x01,0x01;
insert into test(x) values (1);
xa end 0x01,0x01,0x01;
xa prepare 0x01,0x01,0x01;
xa recover;
connect other,localhost,root,,;
xa recover;
--error ER_XAER_NOTA
xa rollback 0x01,0x01,0x01;
disconnect other;
connection default;
xa rollback 0x01,0x01,0x01;
drop table test;

Note: XA RECOVER will list the transaction to both connections.



 Comments   
Comment by Valerii Kravchuk [ 2023-03-30 ]

Still repeatable with 10.6.13 build from current GitHb sources, just in case:

Yuliyas-Air:mysql-test Valerii$ ./mtr --suite=innodb MDEV-25055
Logging: ./mtr  --suite=innodb MDEV-25055
VS config: 
vardir: /Users/Valerii/dbs/maria10.6/mysql-test/var
Checking leftover processes...
Removing old var directory...
Creating var directory '/Users/Valerii/dbs/maria10.6/mysql-test/var'...
Checking supported features...
MariaDB Version 10.6.13-MariaDB
 - SSL connections supported
Collecting tests...
Installing system database...
 
==============================================================================
 
TEST                                      RESULT   TIME (ms) or COMMENT
--------------------------------------------------------------------------
 
worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 16000..16019
create table test(x int) engine=innodb;
xa start 0x01,0x01,0x01;
insert into test(x) values (1);
xa end 0x01,0x01,0x01;
xa prepare 0x01,0x01,0x01;
xa recover;
formatID	gtrid_length	bqual_length	data
1	1	1	
connect other,localhost,root,,;
xa recover;
formatID	gtrid_length	bqual_length	data
1	1	1	
xa rollback 0x01,0x01,0x01;
ERROR XAE04: XAER_NOTA: Unknown XID
disconnect other;
connection default;
xa rollback 0x01,0x01,0x01;
drop table test;
innodb.MDEV-25055 'innodb'               [ pass ]     41
--------------------------------------------------------------------------
The servers were restarted 0 times
Spent 0.041 of 18 seconds executing testcases
 
Completed: All 1 tests were successful.

Generated at Thu Feb 08 09:34:46 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.