summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2022-05-25 14:24:51 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2022-05-25 14:24:51 +0300
commitea40c75c2793f15e57482a0b374ab48b81b8e3ac (patch)
tree45d86ac05d55e128b03691e5ef59493d526cddf8
parenta0e4853eff028fa9db9ba0421309e2bd1124ab26 (diff)
parent99c8aed00d832d838ee4b746dc6ae18a8f281709 (diff)
downloadmariadb-git-ea40c75c2793f15e57482a0b374ab48b81b8e3ac.tar.gz
Merge 10.4 into 10.5
-rw-r--r--mysql-test/suite/galera/disabled.def4
-rw-r--r--mysql-test/suite/galera/r/GCF-1081.result47
-rw-r--r--mysql-test/suite/galera/r/galera_kill_largechanges.result24
-rw-r--r--mysql-test/suite/galera/r/galera_var_retry_autocommit.result29
-rw-r--r--mysql-test/suite/galera/t/GCF-1081.test72
-rw-r--r--mysql-test/suite/galera/t/galera_kill_largechanges.test50
-rw-r--r--mysql-test/suite/galera/t/galera_pc_ignore_sb.cnf11
-rw-r--r--mysql-test/suite/galera/t/galera_var_retry_autocommit.test16
-rw-r--r--storage/innobase/include/trx0sys.h4
-rw-r--r--storage/innobase/lock/lock0lock.cc4
-rw-r--r--storage/innobase/srv/srv0srv.cc13
11 files changed, 44 insertions, 230 deletions
diff --git a/mysql-test/suite/galera/disabled.def b/mysql-test/suite/galera/disabled.def
index 188ff075be0..5556f1bf0da 100644
--- a/mysql-test/suite/galera/disabled.def
+++ b/mysql-test/suite/galera/disabled.def
@@ -10,7 +10,6 @@
#
##############################################################################
-GCF-1081 : MDEV-18283 Galera test failure on galera.GCF-1081
GCF-939 : MDEV-21520 galera.GCF-939
MW-329 : MDEV-19962 Galera test failure on MW-329
galera_as_slave_ctas : MDEV-28378 timeout
@@ -20,10 +19,7 @@ galera_bf_kill_debug : MDEV-24485 wsrep::client_state::do_acquire_ownership(): A
galera_bf_lock_wait : MDEV-21597 wsrep::transaction::start_transaction(): Assertion `active() == false' failed
galera_encrypt_tmp_files : Get error failed to enable encryption of temporary files
galera_gcache_recover_manytrx : MDEV-18834 Galera test failure
-galera_kill_largechanges : MDEV-18179 Galera test failure on galera.galera_kill_largechanges
-galera_mdl_race : MDEV-21524 galera.galera_mdl_race
galera_parallel_simple : MDEV-20318 galera.galera_parallel_simple fails
-galera_pc_ignore_sb : MDEV-20888 galera.galera_pc_ignore_sb
galera_pc_recovery : MDEV-25199 cluster fails to start up
galera_shutdown_nonprim : MDEV-21493 galera.galera_shutdown_nonprim
galera_trigger : MDEV-24048 galera.galera_trigger MTR fails: Result content mismatch
diff --git a/mysql-test/suite/galera/r/GCF-1081.result b/mysql-test/suite/galera/r/GCF-1081.result
deleted file mode 100644
index ede512ec6b1..00000000000
--- a/mysql-test/suite/galera/r/GCF-1081.result
+++ /dev/null
@@ -1,47 +0,0 @@
-connection node_2;
-connection node_1;
-connection node_1;
-CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1, 0), (3, 0);
-CREATE PROCEDURE proc_update ()
-BEGIN
-UPDATE t1 SET f2 = 1 where f1 > 0;
-END|
-connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1;
-SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_master_enter_sync';
-connection node_1;
-CALL proc_update ();;
-connection node_1a;
-SET SESSION wsrep_sync_wait = 0;
-SET SESSION wsrep_on = 0;
-SET SESSION wsrep_on = 1;
-connection node_1a;
-SET GLOBAL DEBUG = 'd,sync.wsrep_before_BF_victim_unlock';
-Warnings:
-Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
-connection node_2;
-INSERT INTO t1 VALUES (2, 2);;
-connection node_1a;
-SET SESSION DEBUG_SYNC = 'now WAIT_FOR sync.wsrep_before_BF_victim_unlock_reached';
-SET GLOBAL DEBUG = '';
-Warnings:
-Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
-connection node_1a;
-SET GLOBAL wsrep_provider_options = 'dbug=';
-SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_master_enter_sync';
-connection node_2;
-SELECT * FROM t1;
-f1 f2
-1 1
-2 2
-3 1
-connection node_1;
-SELECT * FROM t1;
-f1 f2
-1 1
-2 2
-3 1
-wsrep_local_replays
-1
-DROP PROCEDURE proc_update;
-DROP TABLE t1;
diff --git a/mysql-test/suite/galera/r/galera_kill_largechanges.result b/mysql-test/suite/galera/r/galera_kill_largechanges.result
deleted file mode 100644
index 99a8005e03e..00000000000
--- a/mysql-test/suite/galera/r/galera_kill_largechanges.result
+++ /dev/null
@@ -1,24 +0,0 @@
-connection node_2;
-connection node_1;
-connection node_1;
-connection node_2;
-connection node_1;
-SET GLOBAL wsrep_provider_options = 'pc.ignore_sb=true';
-CREATE TABLE ten (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO ten VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10),(11);
-CREATE TABLE t1 (f1 VARCHAR(128)) ENGINE=InnoDB;
-connection node_2;
-Killing server ...
-connection node_1;
-INSERT INTO t1 SELECT REPEAT('a', 128) FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5, ten AS a6;
-connection node_2;
-connection node_2a;
-SELECT COUNT(*) FROM t1;
-COUNT(*)
-1771561
-SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
-VARIABLE_VALUE
-2
-connection node_1;
-DROP TABLE t1;
-DROP TABLE ten;
diff --git a/mysql-test/suite/galera/r/galera_var_retry_autocommit.result b/mysql-test/suite/galera/r/galera_var_retry_autocommit.result
index b8943464cb7..56c2c995402 100644
--- a/mysql-test/suite/galera/r/galera_var_retry_autocommit.result
+++ b/mysql-test/suite/galera/r/galera_var_retry_autocommit.result
@@ -12,9 +12,9 @@ connection node_2;
TRUNCATE TABLE t1;
connection node_1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
-SELECT COUNT(*) = 0 FROM t1;
-COUNT(*) = 0
-1
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+0
SET DEBUG_SYNC = 'RESET';
DROP TABLE t1;
connection node_1;
@@ -27,9 +27,9 @@ SET DEBUG_SYNC = 'now WAIT_FOR before_cert';
connection node_2;
TRUNCATE TABLE t1;
connection node_1;
-SELECT COUNT(*) = 1 FROM t1;
-COUNT(*) = 1
-1
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+0
SET DEBUG_SYNC = 'RESET';
DROP TABLE t1;
connection node_1;
@@ -44,18 +44,17 @@ connection node_2;
TRUNCATE TABLE t1;
connection node_1a;
SET DEBUG_SYNC = 'now WAIT_FOR wsrep_retry_autocommit_reached';
-SELECT COUNT(*) = 0 FROM t1;
-COUNT(*) = 0
-1
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+0
SET DEBUG_SYNC = 'now SIGNAL wsrep_retry_autocommit_continue WAIT_FOR before_cert';
connection node_2;
TRUNCATE TABLE t1;
connection node_1a;
-SELECT COUNT(*) = 0 FROM t1;
-COUNT(*) = 0
-1
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+0
connection node_1;
-ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
SET DEBUG_SYNC = 'RESET';
SET GLOBAL debug_dbug = NULL;
DROP TABLE t1;
@@ -66,8 +65,8 @@ SET GLOBAL debug_dbug = '+d,sync.wsrep_retry_autocommit';
SET DEBUG_SYNC = 'wsrep_before_certification SIGNAL before_cert WAIT_FOR continue EXECUTE 64';
INSERT INTO t1 VALUES (5);
connection node_1;
-SELECT COUNT(*) = 1 FROM t1;
-COUNT(*) = 1
+SELECT COUNT(*) FROM t1;
+COUNT(*)
1
SET DEBUG_SYNC = 'RESET';
SET GLOBAL debug_dbug = NULL;
diff --git a/mysql-test/suite/galera/t/GCF-1081.test b/mysql-test/suite/galera/t/GCF-1081.test
deleted file mode 100644
index 38553feda39..00000000000
--- a/mysql-test/suite/galera/t/GCF-1081.test
+++ /dev/null
@@ -1,72 +0,0 @@
-#
-# GCF-1081 - Assertion `!thd->sp_runtime_ctx`
-#
-# Test replaying of stored procedures
-#
-
---source include/galera_cluster.inc
---source include/have_innodb.inc
---source include/have_debug_sync.inc
---source include/galera_have_debug_sync.inc
-
---connection node_1
-
---let $wsrep_local_replays_old = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'`
-
-CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1, 0), (3, 0);
-
-DELIMITER |;
-CREATE PROCEDURE proc_update ()
-BEGIN
- UPDATE t1 SET f2 = 1 where f1 > 0;
-END|
-DELIMITER ;|
-
-# Block the SP
---connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
---let $galera_sync_point = commit_monitor_master_enter_sync
---source include/galera_set_sync_point.inc
-
---connection node_1
---send CALL proc_update ();
-
-# Wait until SP is blocked
---connection node_1a
-SET SESSION wsrep_sync_wait = 0;
---source include/galera_wait_sync_point.inc
-
-# Issue a conflicting insert on node #2
---connection node_1a
-SET GLOBAL debug_dbug = 'd,sync.wsrep_before_BF_victim_unlock';
-
---connection node_2
---send INSERT INTO t1 VALUES (2, 2);
-
-# Wait until it BF aborts the SP
---connection node_1a
-SET SESSION DEBUG_SYNC = 'now WAIT_FOR sync.wsrep_before_BF_victim_unlock_reached';
-SET GLOBAL debug_dbug = '';
-
-# Unblock the SP
---connection node_1a
---source include/galera_clear_sync_point.inc
---source include/galera_signal_sync_point.inc
-
---connection node_2
---reap
-SELECT * FROM t1;
-
-# SP succeeds
---connection node_1
---reap
-SELECT * FROM t1;
-
-# wsrep_local_replays has increased by 1
---let $wsrep_local_replays_new = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'`
---disable_query_log
---eval SELECT $wsrep_local_replays_new - $wsrep_local_replays_old AS wsrep_local_replays;
---enable_query_log
-
-DROP PROCEDURE proc_update;
-DROP TABLE t1;
diff --git a/mysql-test/suite/galera/t/galera_kill_largechanges.test b/mysql-test/suite/galera/t/galera_kill_largechanges.test
deleted file mode 100644
index c671764fa9e..00000000000
--- a/mysql-test/suite/galera/t/galera_kill_largechanges.test
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# This test kill -9-s a slave while a large update has been performed on the master. SST is performed.
-#
-
---source include/big_test.inc
---source include/galera_cluster.inc
-
-# Save original auto_increment_offset values.
---let $node_1=node_1
---let $node_2=node_2
---source include/auto_increment_offset_save.inc
-
---connection node_1
-# Enable the master to continue running during the split-brain situation that
-# occurs when the slave is killed
---let $wsrep_provider_options_orig = `SELECT @@wsrep_provider_options`
-SET GLOBAL wsrep_provider_options = 'pc.ignore_sb=true';
-
-CREATE TABLE ten (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO ten VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10),(11);
-CREATE TABLE t1 (f1 VARCHAR(128)) ENGINE=InnoDB;
-
---connection node_2
---source include/kill_galera.inc
-
---connection node_1
-# We create a 128Mb (or so) transaction that is larger than gcache. The size of the gcache is not adjustable dynamically
-INSERT INTO t1 SELECT REPEAT('a', 128) FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5, ten AS a6;
-
---connection node_2
---source include/start_mysqld.inc
-
---let $galera_connection_name = node_2a
---let $galera_server_number = 2
---source include/galera_connect.inc
---connection node_2a
-
-SELECT COUNT(*) FROM t1;
-SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
-
---connection node_1
---disable_query_log
---eval SET GLOBAL wsrep_provider_options = '$wsrep_provider_options_orig';
---enable_query_log
-
---let $node_2=node_2a
---source include/auto_increment_offset_restore.inc
-
-DROP TABLE t1;
-DROP TABLE ten;
diff --git a/mysql-test/suite/galera/t/galera_pc_ignore_sb.cnf b/mysql-test/suite/galera/t/galera_pc_ignore_sb.cnf
new file mode 100644
index 00000000000..ae48aa3ae0f
--- /dev/null
+++ b/mysql-test/suite/galera/t/galera_pc_ignore_sb.cnf
@@ -0,0 +1,11 @@
+!include ../galera_2nodes.cnf
+
+[mysqld]
+wsrep_debug=1
+
+[mysqld.1]
+wsrep_provider_options='base_port=@mysqld.1.#galera_port;gcache.size=1;pc.ignore_sb=true'
+
+[mysqld.2]
+wsrep_provider_options='base_port=@mysqld.2.#galera_port;gcache.size=1;pc.ignore_sb=true'
+
diff --git a/mysql-test/suite/galera/t/galera_var_retry_autocommit.test b/mysql-test/suite/galera/t/galera_var_retry_autocommit.test
index 6bed1b0120f..bd10e448e06 100644
--- a/mysql-test/suite/galera/t/galera_var_retry_autocommit.test
+++ b/mysql-test/suite/galera/t/galera_var_retry_autocommit.test
@@ -30,7 +30,7 @@ TRUNCATE TABLE t1;
--connection node_1
--error ER_LOCK_DEADLOCK
--reap
-SELECT COUNT(*) = 0 FROM t1;
+SELECT COUNT(*) FROM t1;
SET DEBUG_SYNC = 'RESET';
DROP TABLE t1;
@@ -54,8 +54,9 @@ SET DEBUG_SYNC = 'now WAIT_FOR before_cert';
TRUNCATE TABLE t1;
--connection node_1
+--error 0,ER_LOCK_DEADLOCK
--reap
-SELECT COUNT(*) = 1 FROM t1;
+SELECT COUNT(*) FROM t1;
SET DEBUG_SYNC = 'RESET';
DROP TABLE t1;
@@ -82,17 +83,17 @@ TRUNCATE TABLE t1;
--connection node_1a
SET DEBUG_SYNC = 'now WAIT_FOR wsrep_retry_autocommit_reached';
-SELECT COUNT(*) = 0 FROM t1;
+SELECT COUNT(*) FROM t1;
SET DEBUG_SYNC = 'now SIGNAL wsrep_retry_autocommit_continue WAIT_FOR before_cert';
--connection node_2
TRUNCATE TABLE t1;
--connection node_1a
-SELECT COUNT(*) = 0 FROM t1;
+SELECT COUNT(*) FROM t1;
--connection node_1
---error ER_LOCK_DEADLOCK
+--error 0,ER_LOCK_DEADLOCK
--reap
SET DEBUG_SYNC = 'RESET';
@@ -126,7 +127,7 @@ while ($count)
--connection node_1a
SET DEBUG_SYNC = 'now WAIT_FOR wsrep_retry_autocommit_reached';
- SELECT COUNT(*) = 1 FROM t1;
+ SELECT COUNT(*) FROM t1;
SET DEBUG_SYNC = 'now SIGNAL wsrep_retry_autocommit_continue';
--dec $count
@@ -135,8 +136,9 @@ while ($count)
--enable_query_log
--connection node_1
+--error 0,ER_LOCK_DEADLOCK
--reap
-SELECT COUNT(*) = 1 FROM t1;
+SELECT COUNT(*) FROM t1;
SET DEBUG_SYNC = 'RESET';
SET GLOBAL debug_dbug = NULL;
diff --git a/storage/innobase/include/trx0sys.h b/storage/innobase/include/trx0sys.h
index 424e4447b41..e033a3e1fe4 100644
--- a/storage/innobase/include/trx0sys.h
+++ b/storage/innobase/include/trx0sys.h
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2017, 2021, MariaDB Corporation.
+Copyright (c) 2017, 2022, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@@ -876,7 +876,7 @@ public:
/**
TRX_RSEG_HISTORY list length (number of committed transactions to purge)
*/
- MY_ALIGNED(CACHE_LINE_SIZE) Atomic_counter<uint32_t> rseg_history_len;
+ MY_ALIGNED(CACHE_LINE_SIZE) Atomic_counter<size_t> rseg_history_len;
/** List of all transactions. */
thread_safe_trx_ilist_t trx_list;
diff --git a/storage/innobase/lock/lock0lock.cc b/storage/innobase/lock/lock0lock.cc
index 381c59f4847..380f9201ef5 100644
--- a/storage/innobase/lock/lock0lock.cc
+++ b/storage/innobase/lock/lock0lock.cc
@@ -4545,14 +4545,14 @@ lock_print_info_summary(
fprintf(file,
"Purge done for trx's n:o < " TRX_ID_FMT
" undo n:o < " TRX_ID_FMT " state: %s\n"
- "History list length %u\n",
+ "History list length %zu\n",
purge_sys.tail.trx_no,
purge_sys.tail.undo_no,
purge_sys.enabled()
? (purge_sys.running() ? "running"
: purge_sys.paused() ? "stopped" : "running but idle")
: "disabled",
- uint32_t{trx_sys.rseg_history_len});
+ size_t{trx_sys.rseg_history_len});
#ifdef PRINT_NUM_OF_LOCK_STRUCTS
fprintf(file,
diff --git a/storage/innobase/srv/srv0srv.cc b/storage/innobase/srv/srv0srv.cc
index 121dfbbbf7d..a5857f7d653 100644
--- a/storage/innobase/srv/srv0srv.cc
+++ b/storage/innobase/srv/srv0srv.cc
@@ -523,9 +523,8 @@ static srv_sys_t srv_sys;
struct purge_coordinator_state
{
/** Snapshot of the last history length before the purge call.*/
- uint32 m_history_length;
- Atomic_counter<int> m_running;
- purge_coordinator_state() : m_history_length(), m_running(0) {}
+ size_t m_history_length= 0;
+ Atomic_counter<int> m_running{0};
};
static purge_coordinator_state purge_state;
@@ -1724,7 +1723,7 @@ static bool srv_purge_should_exit()
return true;
/* Slow shutdown was requested. */
- if (const uint32_t history_size= trx_sys.rseg_history_len)
+ if (const size_t history_size= trx_sys.rseg_history_len)
{
static time_t progress_time;
time_t now= time(NULL);
@@ -1733,7 +1732,7 @@ static bool srv_purge_should_exit()
progress_time= now;
#if defined HAVE_SYSTEMD && !defined EMBEDDED_LIBRARY
service_manager_extend_timeout(INNODB_EXTEND_TIMEOUT_INTERVAL,
- "InnoDB: to purge %u transactions",
+ "InnoDB: to purge %zu transactions",
history_size);
ib::info() << "to purge " << history_size << " transactions";
#endif
@@ -1784,13 +1783,13 @@ Atomic_counter<int> srv_purge_thread_count_changed;
/** Do the actual purge operation.
@param[in,out] n_total_purged total number of purged pages
@return length of history list before the last purge batch. */
-static uint32_t srv_do_purge(ulint* n_total_purged)
+static size_t srv_do_purge(ulint* n_total_purged)
{
ulint n_pages_purged;
static ulint count = 0;
static ulint n_use_threads = 0;
- static uint32_t rseg_history_len = 0;
+ static size_t rseg_history_len = 0;
ulint old_activity_count = srv_get_activity_count();
static ulint n_threads = srv_n_purge_threads;