1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

MDEV-10235: Deadlock in CREATE TABLE .. AS SELECT .. if result set is empty in Galera

In CTAS, handlers get registered under statement transaction
(st_transactions::stmt), while ha_fake_trx_id(), used by CTAS,
looked under standard transaction (st_transactions::all) for
registered handlers, and thus it failed to grab a fake transaction
ID. As a result, with no valid transaction ID, wsrep commit failed
with an error.

ha_fake_trx_id() now looks for handlers registered under 'stmt'
in case 'all' is empty. Also modified the logic to print warning
only once if none of the registered handlers have fake_trx_id.
This commit is contained in:
Nirbhay Choubey
2016-06-27 18:21:00 -04:00
parent ad3584bf72
commit 90f222ea7d
6 changed files with 53 additions and 8 deletions

View File

@@ -67,7 +67,6 @@ push @::global_suppressions,
qr|WSREP: gcs_caused\(\) returned .*|,
qr|WSREP: Protocol violation. JOIN message sender .* is not in state transfer \(SYNCED\). Message ignored.|,
qr(WSREP: Action message in non-primary configuration from member [0-9]*),
qr(WSREP: cannot get fake InnoDB transaction ID),
);