[arch-commits] Commit in mariadb/trunk (2 files)
Christian Hesse
eworm at archlinux.org
Wed Mar 13 10:51:18 UTC 2019
Date: Wednesday, March 13, 2019 @ 10:51:17
Author: eworm
Revision: 347827
upgpkg: mariadb 10.3.13-4
MDEV-18577: Indexes problem on import dump SQL
https://jira.mariadb.org/browse/MDEV-18577
Added:
mariadb/trunk/0008-MDEV-18577-Indexes-problem-on-import-dump-SQL.patch
Modified:
mariadb/trunk/PKGBUILD
----------------------------------------------------------+
0008-MDEV-18577-Indexes-problem-on-import-dump-SQL.patch | 121 +++++++++++++
PKGBUILD | 12 -
2 files changed, 130 insertions(+), 3 deletions(-)
Added: 0008-MDEV-18577-Indexes-problem-on-import-dump-SQL.patch
===================================================================
--- 0008-MDEV-18577-Indexes-problem-on-import-dump-SQL.patch (rev 0)
+++ 0008-MDEV-18577-Indexes-problem-on-import-dump-SQL.patch 2019-03-13 10:51:17 UTC (rev 347827)
@@ -0,0 +1,121 @@
+commit e73060b6c9b3655cadcd34c66fc7811d214c1673
+Author: Jan Lindström <jan.lindstrom at mariadb.com>
+Date: Tue Mar 12 15:44:10 2019 +0200
+
+ MDEV-18577: Indexes problem on import dump SQL
+
+ Problem was that we skipped background persistent statistics calculation
+ on applier nodes if thread is marked as high priority (a.k.a BF).
+ However, on applier nodes all DDL which is replicate will be executed
+ as high priority i.e BF.
+
+ Fixed by allowing background persistent statistics calculation on
+ applier nodes even when thread is marked as BF. This could lead
+ BF lock waits but for queries on that node needs that statistics.
+
+diff --git a/include/mysql/service_wsrep.h b/include/mysql/service_wsrep.h
+index 267c8cb4e90..ee28856ac73 100644
+--- a/include/mysql/service_wsrep.h
++++ b/include/mysql/service_wsrep.h
+@@ -112,6 +112,7 @@ extern struct wsrep_service_st {
+ int (*wsrep_trx_order_before_func)(MYSQL_THD, MYSQL_THD);
+ void (*wsrep_unlock_rollback_func)();
+ void (*wsrep_set_data_home_dir_func)(const char *data_dir);
++ my_bool (*wsrep_thd_is_applier_func)(MYSQL_THD);
+ } *wsrep_service;
+
+ #ifdef MYSQL_DYNAMIC_PLUGIN
+@@ -155,6 +156,7 @@ extern struct wsrep_service_st {
+ #define wsrep_trx_order_before(T1,T2) wsrep_service->wsrep_trx_order_before_func(T1,T2)
+ #define wsrep_unlock_rollback() wsrep_service->wsrep_unlock_rollback_func()
+ #define wsrep_set_data_home_dir(A) wsrep_service->wsrep_set_data_home_dir_func(A)
++#define wsrep_thd_is_applier(T) wsrep_service->wsrep_thd_is_applier(T)
+
+ #define wsrep_debug get_wsrep_debug()
+ #define wsrep_log_conflicts get_wsrep_log_conflicts()
+@@ -214,7 +216,7 @@ void wsrep_thd_set_conflict_state(THD *thd, enum wsrep_conflict_state state);
+ bool wsrep_thd_ignore_table(THD *thd);
+ void wsrep_unlock_rollback();
+ void wsrep_set_data_home_dir(const char *data_dir);
+-
++my_bool wsrep_thd_is_applier(MYSQL_THD thd);
+ #endif
+
+ #ifdef __cplusplus
+diff --git a/sql/sql_plugin_services.ic b/sql/sql_plugin_services.ic
+index 7fb5524016a..3d6cf0a0723 100644
+--- a/sql/sql_plugin_services.ic
++++ b/sql/sql_plugin_services.ic
+@@ -181,7 +181,8 @@ static struct wsrep_service_st wsrep_handler = {
+ wsrep_trx_is_aborting,
+ wsrep_trx_order_before,
+ wsrep_unlock_rollback,
+- wsrep_set_data_home_dir
++ wsrep_set_data_home_dir,
++ wsrep_thd_is_applier
+ };
+
+ static struct thd_specifics_service_st thd_specifics_handler=
+diff --git a/sql/wsrep_dummy.cc b/sql/wsrep_dummy.cc
+index 795e2d19252..7297dbfe0fd 100644
+--- a/sql/wsrep_dummy.cc
++++ b/sql/wsrep_dummy.cc
+@@ -141,3 +141,6 @@ void wsrep_unlock_rollback()
+
+ void wsrep_set_data_home_dir(const char *)
+ { }
++
++my_bool wsrep_thd_is_applier(MYSQL_THD thd)
++{ return false; }
+diff --git a/sql/wsrep_thd.cc b/sql/wsrep_thd.cc
+index a3d1961ade2..dab9f91b381 100644
+--- a/sql/wsrep_thd.cc
++++ b/sql/wsrep_thd.cc
+@@ -698,3 +698,13 @@ void wsrep_thd_auto_increment_variables(THD* thd,
+ *increment= thd->variables.auto_increment_increment;
+ }
+ }
++
++my_bool wsrep_thd_is_applier(MYSQL_THD thd)
++{
++ my_bool is_applier= false;
++
++ if (thd && thd->wsrep_applier)
++ is_applier= true;
++
++ return (is_applier);
++}
+diff --git a/storage/innobase/dict/dict0stats_bg.cc b/storage/innobase/dict/dict0stats_bg.cc
+index 55bcafddc70..7d30555748c 100644
+--- a/storage/innobase/dict/dict0stats_bg.cc
++++ b/storage/innobase/dict/dict0stats_bg.cc
+@@ -164,10 +164,26 @@ void dict_stats_update_if_needed_func(dict_table_t* table)
+ && dict_stats_auto_recalc_is_enabled(table)) {
+
+ #ifdef WITH_WSREP
+- if (thd && wsrep_on(thd) && wsrep_thd_is_BF(thd, 0)) {
++ /* Do not add table to background
++ statistic calculation if this thread is not a
++ applier (as all DDL, which is replicated (i.e
++ is binlogged in master node), will be executed
++ with high priority (a.k.a BF) in slave nodes)
++ and is BF. This could again lead BF lock
++ waits in applier node but it is better than
++ no persistent index/table statistics at
++ applier nodes. TODO: allow BF threads
++ wait for these InnoDB internal SQL-parser
++ generated row locks and allow BF thread
++ lock waits to be enqueued at head of waiting
++ queue. */
++ if (thd
++ && !wsrep_thd_is_applier(thd)
++ && wsrep_on(thd)
++ && wsrep_thd_is_BF(thd, 0)) {
+ WSREP_DEBUG("Avoiding background statistics"
+- " calculation for table %s",
+- table->name.m_name);
++ " calculation for table %s.",
++ table->name.m_name);
+ return;
+ }
+ #endif /* WITH_WSREP */
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2019-03-13 09:56:40 UTC (rev 347826)
+++ PKGBUILD 2019-03-13 10:51:17 UTC (rev 347827)
@@ -5,7 +5,7 @@
pkgname=('mariadb-libs' 'mariadb-clients' 'mariadb' 'mytop')
pkgdesc='Fast SQL database server, derived from MySQL'
pkgver=10.3.13
-pkgrel=3
+pkgrel=4
arch=('x86_64')
license=('GPL')
url='https://mariadb.org/'
@@ -17,7 +17,8 @@
'0002-systemd-sysusers-tmpfiles.patch'
'0004-do-not-break-main-configuration-with-instantiated-one.patch'
'0005-fix-galera_recovery-with-fs.protected_regular-enabled.patch'
- '0007-MDEV-18605-Loss-of-column-aliases-by-using-view-and-.patch')
+ '0007-MDEV-18605-Loss-of-column-aliases-by-using-view-and-.patch'
+ '0008-MDEV-18577-Indexes-problem-on-import-dump-SQL.patch')
sha256sums=('b2aa857ef5b84f85a7ea60a1eac7b34c0ca5151c71a0d44ce2d7fb028d71459a'
'SKIP'
'5b74e328e75369dfb68491a06dd53bd736e34f87281103ae0dd2f50401dc70d3'
@@ -24,7 +25,8 @@
'1cd009b473d5965c7cbe6d48fff272030a2ccdd9c7e67b4f837d03252786a09a'
'd12806e4f90cc0fc081205dd4c0a5e0e7c455844f04276811b61b57fd24f5545'
'66e0acac7436fd8925710ef5cc66ba1a8f63a385ce374f01ae83096cc33d97a0'
- '98f0bd85e1729133d236831e934a3dd0c9bc6deebbff6aebe8a4bda17e457ac4')
+ '98f0bd85e1729133d236831e934a3dd0c9bc6deebbff6aebe8a4bda17e457ac4'
+ '9862b64ea29d3d94434e6b8f422df97e7528b331b793d7a50f22f176d4886325')
prepare() {
cd $pkgbase-$pkgver/
@@ -52,6 +54,10 @@
# MDEV-18605: Loss of column aliases by using view and group
# https://jira.mariadb.org/browse/MDEV-18605
patch -Np1 < ../0007-MDEV-18605-Loss-of-column-aliases-by-using-view-and-.patch
+
+ # MDEV-18577: Indexes problem on import dump SQL
+ # https://jira.mariadb.org/browse/MDEV-18577
+ patch -Np1 < ../0008-MDEV-18577-Indexes-problem-on-import-dump-SQL.patch
}
build() {
More information about the arch-commits
mailing list