mirror of
https://github.com/MariaDB/server.git
synced 2025-12-07 17:42:39 +03:00
Merge branch 'codership-10.4-MDEV-22666-v2' into 10.4
This commit is contained in:
@@ -70,3 +70,20 @@ a b
|
||||
2 1
|
||||
disconnect node_2a;
|
||||
drop table t1;
|
||||
connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2;
|
||||
connection node_2a;
|
||||
CREATE TABLE t1 (i int primary key);
|
||||
SET DEBUG_SYNC = "before_wsrep_ordered_commit SIGNAL bwoc_reached WAIT_FOR bwoc_continue";
|
||||
INSERT INTO t1 VALUES (1);
|
||||
connection node_2;
|
||||
SET DEBUG_SYNC = "now WAIT_FOR bwoc_reached";
|
||||
SET DEBUG_SYNC = "now SIGNAL bwoc_continue";
|
||||
SET DEBUG_SYNC='RESET';
|
||||
connection node_2a;
|
||||
connection node_2;
|
||||
select * from t1;
|
||||
i
|
||||
1
|
||||
disconnect node_2a;
|
||||
connection node_2;
|
||||
drop table t1;
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
--source include/galera_cluster.inc
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_debug.inc
|
||||
--source include/have_debug_sync.inc
|
||||
|
||||
#
|
||||
# Test case 1: Start a transaction on node_2a and kill it
|
||||
@@ -140,4 +143,48 @@ select * from t1;
|
||||
drop table t1;
|
||||
|
||||
|
||||
#
|
||||
# Test case 7:
|
||||
# run a transaction in node 2, and set a sync point to pause the transaction
|
||||
# in commit phase.
|
||||
# Through another connection to node 2, kill the committing transaction by
|
||||
# KILL QUERY command
|
||||
#
|
||||
|
||||
--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2
|
||||
--connection node_2a
|
||||
--let $connection_id = `SELECT CONNECTION_ID()`
|
||||
|
||||
CREATE TABLE t1 (i int primary key);
|
||||
|
||||
# Set up sync point
|
||||
SET DEBUG_SYNC = "before_wsrep_ordered_commit SIGNAL bwoc_reached WAIT_FOR bwoc_continue";
|
||||
|
||||
# Send insert which will block in the sync point above
|
||||
--send INSERT INTO t1 VALUES (1)
|
||||
|
||||
--connection node_2
|
||||
SET DEBUG_SYNC = "now WAIT_FOR bwoc_reached";
|
||||
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
# victim has passed the point of no return, kill is not possible anymore
|
||||
--eval KILL QUERY $connection_id
|
||||
--enable_result_log
|
||||
--enable_query_log
|
||||
|
||||
SET DEBUG_SYNC = "now SIGNAL bwoc_continue";
|
||||
SET DEBUG_SYNC='RESET';
|
||||
--connection node_2a
|
||||
--error 0,1213
|
||||
--reap
|
||||
|
||||
--connection node_2
|
||||
# victim was able to complete the INSERT
|
||||
select * from t1;
|
||||
|
||||
--disconnect node_2a
|
||||
|
||||
--connection node_2
|
||||
drop table t1;
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
--source include/galera_cluster.inc
|
||||
--source include/have_innodb.inc
|
||||
--source include/big_test.inc
|
||||
|
||||
--connection node_1
|
||||
|
||||
@@ -299,6 +299,7 @@ extern "C" void wsrep_commit_ordered(THD *thd)
|
||||
thd->wsrep_trx().state() == wsrep::transaction::s_committing &&
|
||||
!wsrep_commit_will_write_binlog(thd))
|
||||
{
|
||||
DEBUG_SYNC(thd, "before_wsrep_ordered_commit");
|
||||
thd->wsrep_cs().ordered_commit();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1511,12 +1511,6 @@ inline void trx_t::commit_in_memory(const mtr_t *mtr)
|
||||
if (fts_trx)
|
||||
trx_finalize_for_fts(this, undo_no != 0);
|
||||
|
||||
trx_mutex_enter(this);
|
||||
dict_operation= TRX_DICT_OP_NONE;
|
||||
|
||||
DBUG_LOG("trx", "Commit in memory: " << this);
|
||||
state= TRX_STATE_NOT_STARTED;
|
||||
|
||||
#ifdef WITH_WSREP
|
||||
/* Serialization history has been written and the transaction is
|
||||
committed in memory, which makes this commit ordered. Release commit
|
||||
@@ -1528,6 +1522,11 @@ inline void trx_t::commit_in_memory(const mtr_t *mtr)
|
||||
}
|
||||
lock.was_chosen_as_wsrep_victim= false;
|
||||
#endif /* WITH_WSREP */
|
||||
trx_mutex_enter(this);
|
||||
dict_operation= TRX_DICT_OP_NONE;
|
||||
|
||||
DBUG_LOG("trx", "Commit in memory: " << this);
|
||||
state= TRX_STATE_NOT_STARTED;
|
||||
|
||||
assert_freed();
|
||||
trx_init(this);
|
||||
|
||||
Reference in New Issue
Block a user