Details
Description
Dispite prepare phase have been rich you will get nothing when doing a xa recover if the client get disconnected befor commit
In the following php script an error is generated to force the COMMIT to failed cf:XA COMMITEE and close the connection.
<?php
$dt = date_create();
$xid = date_timestamp_get($dt);
echo "xid : ".$xid;
$logger1 = new mysqli('localhost', 'root', 'xxxxx', 'test');
if (mysqli_connect_error()) {
die('Erreur de connexion (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
}
$potest = new mysqli('192.168.45.166', 'test', 'xxxxxxx', 'test');
if (mysqli_connect_error()) {
$logger1->close();
die('Erreur de connexion (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
}
echo 'SuccËs logger1 ' . $logger1->host_info . "\n";
echo 'SuccËs potest ' . $potest->host_info . "\n";
##################################
$queryXA = 'XA START "'.$xid.'"';
$queryRes = $logger1->query($queryXA);
if (!$queryRes) {
$message = 'RequÍte invalide logger1: ' . $logger1->error . "\n";
$message .= 'RequÍte complËte : ' . $queryXA;
$logger1->close();
$potest->close();
die($message);
}
$queryRes = $potest->query($queryXA);
if (!$queryRes) {
$message = 'RequÍte invalide potest: ' . $potest->error . "\n";
$message .= 'RequÍte complËte : ' . $queryXA;
$logger1->close();
$potest->close();
die($message);
}
##################################
##################################
$queryXA = 'INSERT INTO mthoxa(xamtho_tc) values ("'.$xid.'")';
$queryRes = $logger1->query($queryXA);
if (!$queryRes) {
$message = 'RequÍte invalide logger1: ' . $logger1->error . "\n";
$message .= 'RequÍte complËte : ' . $queryXA;
$logger1->close();
$potest->close();
die($message);
}
$queryRes = $potest->query($queryXA);
if (!$queryRes) {
$message = 'RequÍte invalide logger1: ' . $logger1->error . "\n";
$message .= 'RequÍte complËte : ' . $queryXA;
$logger1->close();
$potest->close();
die($message);
}
##################################
##################################
$queryXA = 'XA END "'.$xid.'"';
$queryRes = $logger1->query($queryXA);
if (!$queryRes) {
$message = 'RequÍte invalide logger1: ' . $logger1->error . "\n";
$message .= 'RequÍte complËte : ' . $queryXA;
$logger1->close();
$potest->close();
die($message);
}
$queryRes = $potest->query($queryXA);
if (!$queryRes) {
$message = 'RequÍte invalide potest: ' . $potest->error . "\n";
$message .= 'RequÍte complËte : ' . $queryXA;
$logger1->close();
$potest->close();
die($message);
}
##################################
##################################
$queryXA = 'XA PREPARE "'.$xid.'"';
$queryRes = $logger1->query($queryXA);
if (!$queryRes) {
$message = 'RequÍte invalide logger1: ' . $logger1->error . "\n";
$message .= 'RequÍte complËte : ' . $queryXA;
$logger1->close();
$potest->close();
die($message);
}
$queryRes = $potest->query($queryXA);
if (!$queryRes) {
$message = 'RequÍte invalide potest: ' . $potest->error . "\n";
$message .= 'RequÍte complËte : ' . $queryXA;
$logger1->close();
$potest->close();
die($message);
}
##################################
##################################
$queryXA = 'XA COMMIT "'.$xid.'"';
$queryRes = $logger1->query($queryXA);
if (!$queryRes) {
$message = 'RequÍte invalide logger1: ' . $logger1->error . "\n";
$message .= 'RequÍte complËte : ' . $queryXA;
$logger1->close();
$potest->close();
die($message);
}
$queryXA = 'XA COMMITEE "'.$xid.'"';
$queryRes = $potest->query($queryXA);
if (!$queryRes) {
$message = 'RequÍte invalide potest: ' . $potest->error . "\n";
$message .= 'RequÍte complËte : ' . $queryXA;
$queryXA = 'XA RECOVER';
$queryRes = $potest->query($queryXA);
while ($r=$queryRes->fetch_assoc())
print_r($r);
$logger1->close();
$potest->close();
die($message);
}
##################################
$logger1->close();
$potest->close();
echo "Finish !\n"
?>
Gliffy Diagrams
Attachments
Issue Links
- duplicates
-
MDEV-7974 backport fix for mysql bug#12161 (XA and binlog)
-
- Open
-
- links to
Activity
- All
- Comments
- Work Log
- History
- Activity
- Transitions
Launchpad bug id: 803649