# # This test checks that innodb_disallow_writes works as expected # # Note that we need to enable binlog for this test: If the commit # to InnoDB is done in one phase, the transaction is committed in # memory before it is persisted to disk. This means that the # innodb_disallow_writes=ON may not prevent transaction to # become visible to other readers. On the other hand, if the # commit is two phase (as it is with binlog), the transaction # will be blocked in prepare phase. # --source include/galera_cluster.inc --source include/have_innodb.inc --source include/have_log_bin.inc # Open a separate connection to be used to run SHOW PROCESSLIST --let $galera_connection_name = node_1a --let $galera_server_number = 1 --source include/galera_connect.inc --connection node_1a SET SESSION wsrep_sync_wait = 0; --connection node_1 CREATE TABLE t1 (f1 INTEGER) Engine=InnoDB; SET GLOBAL innodb_disallow_writes=ON; --send INSERT INTO t1 VALUES (1); --connection node_1a SELECT COUNT(*) = 1 FROM t1; let $wait_condition = SELECT 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO = 'INSERT INTO t1 VALUES (1)' AND State = 'Commit'; --source include/wait_condition.inc SELECT COUNT(*) = 1 FROM t1; SET GLOBAL innodb_disallow_writes=OFF; --connection node_1 --reap SELECT COUNT(*) = 1 FROM t1; --connection node_2 SELECT COUNT(*) = 1 FROM t1; DROP TABLE t1;