summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbhay Choubey <nirbhay@skysql.com>2014-05-22 18:31:04 -0400
committerNirbhay Choubey <nirbhay@skysql.com>2014-05-22 18:31:04 -0400
commitab4947463e68da1a01bd506f8f280ebdea3f1b46 (patch)
tree75ec757acf0955e19d1fac0f3fcac2a6593e0a2f
parent0bf3ed12a5338f0db4b652f839fee93a28d39195 (diff)
downloadmariadb-git-ab4947463e68da1a01bd506f8f280ebdea3f1b46.tar.gz
Merging changes from maria-5.5-galera and
some test fixes. bzr merge -r3479..3493 maria-5.5-galera
-rw-r--r--.bzrignore2
-rw-r--r--cmake/cpack_rpm.cmake5
-rw-r--r--cmake/wsrep.cmake2
-rw-r--r--debian/dist/Debian/control31
-rw-r--r--debian/dist/Ubuntu/control31
-rw-r--r--debian/mariadb-galera-test-10.0.dirs101
-rw-r--r--debian/mariadb-galera-test-10.0.files16
-rw-r--r--debian/mariadb-galera-test-10.0.links2
-rw-r--r--mysql-test/include/mtr_check.sql1
-rwxr-xr-xmysql-test/mysql-test-run.pl30
-rw-r--r--mysql-test/suite/galera/galera_2nodes.cnf4
-rw-r--r--mysql-test/suite/sys_vars/r/auto_increment_increment_func.result24
-rw-r--r--mysql-test/suite/sys_vars/r/auto_increment_offset_func.result44
-rw-r--r--mysql-test/suite/wsrep/r/variables.result71
-rw-r--r--mysql-test/suite/wsrep/t/binlog_format.opt2
-rw-r--r--mysql-test/suite/wsrep/t/pool_of_threads.opt2
-rw-r--r--mysql-test/suite/wsrep/t/variables.opt1
-rw-r--r--mysql-test/suite/wsrep/t/variables.test59
-rwxr-xr-xscripts/wsrep_sst_rsync.sh8
-rw-r--r--sql/mysqld.cc33
-rw-r--r--sql/rpl_record.cc17
-rw-r--r--sql/sql_parse.cc10
22 files changed, 425 insertions, 71 deletions
diff --git a/.bzrignore b/.bzrignore
index 0e7a70d167d..525efc10624 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -1097,9 +1097,11 @@ sql/share/slovak
sql/share/spanish
sql/share/swedish
sql/share/ukrainian
+scripts/wsrep_sst_common
scripts/wsrep_sst_mysqldump
scripts/wsrep_sst_rsync
scripts/wsrep_sst_xtrabackup
+scripts/wsrep_sst_xtrabackup-v2
CPackConfig.cmake
CPackSourceConfig.cmake
Docs/INFO_BIN
diff --git a/cmake/cpack_rpm.cmake b/cmake/cpack_rpm.cmake
index 1d373106d8d..9738de452b1 100644
--- a/cmake/cpack_rpm.cmake
+++ b/cmake/cpack_rpm.cmake
@@ -23,8 +23,7 @@ SET(CPACK_COMPONENT_SHAREDLIBRARIES_GROUP "shared")
SET(CPACK_COMPONENT_COMMON_GROUP "common")
SET(CPACK_COMPONENT_COMPAT_GROUP "compat")
SET(CPACK_COMPONENTS_ALL Server ManPagesServer IniFiles Server_Scripts
- SupportFiles Readme)
-
+ SupportFiles Readme Test)
SET(CPACK_RPM_PACKAGE_NAME "MariaDB-Galera")
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_RPM_PACKAGE_NAME}-${VERSION}-${RPM}-${CMAKE_SYSTEM_PROCESSOR}")
@@ -147,6 +146,8 @@ SETA(CPACK_RPM_test_PACKAGE_OBSOLETES
"MySQL-OurDelta-test")
SETA(CPACK_RPM_test_PACKAGE_PROVIDES
"MySQL-test")
+SET(CPACK_RPM_test_PACKAGE_CONFLICTS
+ "MariaDB-test")
SETA(CPACK_RPM_server_PACKAGE_REQUIRES
${CPACK_RPM_PACKAGE_REQUIRES}
diff --git a/cmake/wsrep.cmake b/cmake/wsrep.cmake
index aabf0020fc2..5057f14792b 100644
--- a/cmake/wsrep.cmake
+++ b/cmake/wsrep.cmake
@@ -23,7 +23,7 @@ SET(WSREP_PATCH_VERSION "10")
# MariaDB addition: Revision number of the last revision merged from
# codership branch visible in @@visible_comment.
# Branch : codership-mysql/5.5
-SET(WSREP_PATCH_REVNO "3968") # Should be updated on every merge.
+SET(WSREP_PATCH_REVNO "3991") # Should be updated on every merge.
# MariaDB: Obtain patch revision number:
# Update WSREP_PATCH_REVNO if WSREP_REV environment variable is set.
diff --git a/debian/dist/Debian/control b/debian/dist/Debian/control
index cb4164fabf3..6ac09eae460 100644
--- a/debian/dist/Debian/control
+++ b/debian/dist/Debian/control
@@ -4,15 +4,36 @@ Priority: optional
Maintainer: MariaDB Developers <maria-developers@lists.launchpad.net>
XSBC-Original-Maintainer: Maria Developers <maria-developers@lists.launchpad.net>
Uploaders: MariaDB Developers <maria-developers@lists.launchpad.net>
-Build-Depends: libtool (>= 1.4.2-7), procps | hurd, debhelper, file (>= 3.28), libncurses5-dev (>= 5.0-6), perl (>= 5.6.0), libwrap0-dev (>= 7.6-8.3), zlib1g-dev (>= 1:1.1.3-5), ${LIBREADLINE_DEV}, libssl-dev, libpam0g-dev, psmisc, po-debconf, chrpath, automake1.9, doxygen, texlive-latex-base, ghostscript | gs-gpl, dpatch, gawk, bison, lsb-release, hardening-wrapper, ${CMAKE_DEP}libaio-dev
+Build-Depends: libtool (>= 1.4.2-7), procps | hurd, debhelper, file (>= 3.28), libncurses5-dev (>= 5.0-6), perl (>= 5.6.0), libwrap0-dev (>= 7.6-8.3), zlib1g-dev (>= 1:1.1.3-5), ${LIBREADLINE_DEV}, libssl-dev, libpam0g-dev, psmisc, po-debconf, chrpath, automake1.9, doxygen, texlive-latex-base, ghostscript | gs-gpl, dpatch, gawk, bison, lsb-release, hardening-wrapper, ${CMAKE_DEP}libaio-dev, rsync, lsof
Standards-Version: 3.8.3
Homepage: http://mariadb.org/
Vcs-Browser: http://bazaar.launchpad.net/~maria-captains/maria/10.0/files
Vcs-Bzr: bzr://lp:maria
+Package: mariadb-galera-test-10.0
+Section: database
+Architecture: any
+Depends: mariadb-galera-server-10.0 (= ${source:Version}), mariadb-client-10.0 (>= ${source:Version})
+Suggests: patch
+Conflicts: mariadb-test, mariadb-galera-test (<< ${source:Version}),
+ mariadb-test-5.1, mariadb-test-5.2, mariadb-test-5.3,
+ mariadb-test-5.5, mariadb-test-10.0,
+ mariadb-server-5.5, mariadb-galera-server-5.5,
+ mariadb-server-10.0
+Replaces: mariadb-test (<< ${source:Version}), mariadb-galera-test (<< ${source:Version}),
+ mariadb-test-5.1, mariadb-test-5.2, mariadb-test-5.3,
+ mariadb-test-5.5
+Description: MariaDB database regression test suite
+ MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
+ server. SQL (Structured Query Language) is the most popular database query
+ language in the world. The main goals of MariaDB are speed, robustness and
+ ease of use.
+ .
+ This package includes the regression test suite.
+
Package: mariadb-galera-server-10.0
Architecture: any
-Suggests: tinyca, mailx, mariadb-test
+Suggests: tinyca, mailx, mariadb-galera-test
Recommends: libhtml-template-perl
Pre-Depends: mariadb-common, adduser (>= 3.40), debconf
Depends: mariadb-client-10.0 (>= ${source:Version}), libdbi-perl, perl (>= 5.6), ${shlibs:Depends}, ${misc:Depends}, psmisc, passwd, lsb-base (>= 3.0-10), libmariadbclient18 (>= ${binary:Version}), galera (>=25.2)
@@ -66,11 +87,11 @@ Description: MariaDB database client (metapackage depending on the latest versio
maintainers. Install this package if in doubt about which MariaDB version
you want, as this is the one we consider to be in the best shape.
-Package: mariadb-test
+Package: mariadb-galera-test
Section: database
Architecture: all
-Depends: mariadb-test-10.0 (= ${source:Version})
+Depends: mariadb-galera-test-10.0 (= ${source:Version})
Description: MariaDB database regression test suite (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of
- mariadb-test (currently mariadb-test-10.0), as determined by the MariaDB
+ mariadb-galera-test (currently mariadb-galera-test-10.0), as determined by the MariaDB
maintainers.
diff --git a/debian/dist/Ubuntu/control b/debian/dist/Ubuntu/control
index 1d07dffb50e..1a628771caa 100644
--- a/debian/dist/Ubuntu/control
+++ b/debian/dist/Ubuntu/control
@@ -4,15 +4,36 @@ Priority: optional
Maintainer: MariaDB Developers <maria-developers@lists.launchpad.net>
XSBC-Original-Maintainer: Maria Developers <maria-developers@lists.launchpad.net>
Uploaders: MariaDB Developers <maria-developers@lists.launchpad.net>
-Build-Depends: libtool (>= 1.4.2-7), procps | hurd, debhelper, file (>= 3.28), libncurses5-dev (>= 5.0-6), perl (>= 5.6.0), libwrap0-dev (>= 7.6-8.3), zlib1g-dev (>= 1:1.1.3-5), ${LIBREADLINE_DEV}, libssl-dev, libpam0g-dev, psmisc, po-debconf, chrpath, automake1.9, doxygen, texlive-latex-base, ghostscript | gs-gpl, dpatch, gawk, bison, lsb-release, hardening-wrapper, ${CMAKE_DEP}libaio-dev
+Build-Depends: libtool (>= 1.4.2-7), procps | hurd, debhelper, file (>= 3.28), libncurses5-dev (>= 5.0-6), perl (>= 5.6.0), libwrap0-dev (>= 7.6-8.3), zlib1g-dev (>= 1:1.1.3-5), ${LIBREADLINE_DEV}, libssl-dev, libpam0g-dev, psmisc, po-debconf, chrpath, automake1.9, doxygen, texlive-latex-base, ghostscript | gs-gpl, dpatch, gawk, bison, lsb-release, hardening-wrapper, ${CMAKE_DEP}libaio-dev, rsync, lsof
Standards-Version: 3.8.2
Homepage: http://mariadb.org/
Vcs-Browser: http://bazaar.launchpad.net/~maria-captains/maria/10.0/files
Vcs-Bzr: bzr://lp:maria
+Package: mariadb-galera-test-10.0
+Section: database
+Architecture: any
+Depends: mariadb-galera-server-10.0 (= ${source:Version}), mariadb-client-10.0 (>= ${source:Version})
+Suggests: patch
+Conflicts: mariadb-test, mariadb-galera-test (<< ${source:Version}),
+ mariadb-test-5.1, mariadb-test-5.2, mariadb-test-5.3,
+ mariadb-test-5.5, mariadb-test-10.0,
+ mariadb-server-5.5, mariadb-galera-server-5.5,
+ mariadb-server-10.0
+Replaces: mariadb-test (<< ${source:Version}), mariadb-galera-test (<< ${source:Version}),
+ mariadb-test-5.1, mariadb-test-5.2, mariadb-test-5.3,
+ mariadb-test-5.5
+Description: MariaDB database regression test suite
+ MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
+ server. SQL (Structured Query Language) is the most popular database query
+ language in the world. The main goals of MariaDB are speed, robustness and
+ ease of use.
+ .
+ This package includes the regression test suite.
+
Package: mariadb-galera-server-10.0
Architecture: any
-Suggests: tinyca, mailx, mariadb-test
+Suggests: tinyca, mailx, mariadb-galera-test
Recommends: libhtml-template-perl
Pre-Depends: mariadb-common, adduser (>= 3.40), debconf
Depends: mariadb-client-10.0 (>= ${source:Version}), libdbi-perl, perl (>= 5.6), ${shlibs:Depends}, ${misc:Depends}, psmisc, passwd, lsb-base (>= 3.0-10), libmariadbclient18 (>= ${binary:Version}), galera (>=25.2)
@@ -66,11 +87,11 @@ Description: MariaDB database client (metapackage depending on the latest versio
maintainers. Install this package if in doubt about which MariaDB version
you want, as this is the one we consider to be in the best shape.
-Package: mariadb-test
+Package: mariadb-galera-test
Section: database
Architecture: all
-Depends: mariadb-test-10.0 (= ${source:Version})
+Depends: mariadb-galera-test-10.0 (= ${source:Version})
Description: MariaDB database regression test suite (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of
- mariadb-test (currently mariadb-test-10.0), as determined by the MariaDB
+ mariadb-galera-test (currently mariadb-galera-test-10.0), as determined by the MariaDB
maintainers.
diff --git a/debian/mariadb-galera-test-10.0.dirs b/debian/mariadb-galera-test-10.0.dirs
new file mode 100644
index 00000000000..4e75b80c8b3
--- /dev/null
+++ b/debian/mariadb-galera-test-10.0.dirs
@@ -0,0 +1,101 @@
+usr/bin
+usr/share/man/man1
+usr/share/mysql/mysql-test
+usr/share/mysql/mysql-test/extra
+usr/share/mysql/mysql-test/extra/binlog_tests
+usr/share/mysql/mysql-test/extra/rpl_tests
+usr/share/mysql/mysql-test/lib
+usr/share/mysql/mysql-test/lib/My
+usr/share/mysql/mysql-test/lib/My/SafeProcess
+usr/share/mysql/mysql-test/lib/My/File
+usr/share/mysql/mysql-test/lib/v1
+usr/share/mysql/mysql-test/lib/v1/My
+usr/share/mysql/mysql-test/collections
+usr/share/mysql/mysql-test/t
+usr/share/mysql/mysql-test/r
+usr/share/mysql/mysql-test/include
+usr/share/mysql/mysql-test/suite
+usr/share/mysql/mysql-test/suite/parts
+usr/share/mysql/mysql-test/suite/parts/inc
+usr/share/mysql/mysql-test/suite/parts/t
+usr/share/mysql/mysql-test/suite/parts/r
+usr/share/mysql/mysql-test/suite/rpl_ndb
+usr/share/mysql/mysql-test/suite/rpl_ndb/t
+usr/share/mysql/mysql-test/suite/rpl_ndb/r
+usr/share/mysql/mysql-test/suite/bugs
+usr/share/mysql/mysql-test/suite/bugs/t
+usr/share/mysql/mysql-test/suite/bugs/r
+usr/share/mysql/mysql-test/suite/bugs/data
+usr/share/mysql/mysql-test/suite/rpl
+usr/share/mysql/mysql-test/suite/rpl/t
+usr/share/mysql/mysql-test/suite/rpl/r
+usr/share/mysql/mysql-test/suite/rpl/include
+usr/share/mysql/mysql-test/suite/innodb
+usr/share/mysql/mysql-test/suite/innodb/t
+usr/share/mysql/mysql-test/suite/innodb/r
+usr/share/mysql/mysql-test/suite/innodb/include
+usr/share/mysql/mysql-test/suite/manual
+usr/share/mysql/mysql-test/suite/manual/t
+usr/share/mysql/mysql-test/suite/manual/r
+usr/share/mysql/mysql-test/suite/stress
+usr/share/mysql/mysql-test/suite/stress/t
+usr/share/mysql/mysql-test/suite/stress/r
+usr/share/mysql/mysql-test/suite/stress/include
+usr/share/mysql/mysql-test/suite/jp
+usr/share/mysql/mysql-test/suite/jp/t
+usr/share/mysql/mysql-test/suite/jp/r
+usr/share/mysql/mysql-test/suite/jp/include
+usr/share/mysql/mysql-test/suite/jp/std_data
+usr/share/mysql/mysql-test/suite/ndb
+usr/share/mysql/mysql-test/suite/ndb/t
+usr/share/mysql/mysql-test/suite/ndb/r
+usr/share/mysql/mysql-test/suite/maria
+usr/share/mysql/mysql-test/suite/maria/t
+usr/share/mysql/mysql-test/suite/maria/r
+usr/share/mysql/mysql-test/suite/funcs_2
+usr/share/mysql/mysql-test/suite/funcs_2/lib
+usr/share/mysql/mysql-test/suite/funcs_2/t
+usr/share/mysql/mysql-test/suite/funcs_2/charset
+usr/share/mysql/mysql-test/suite/funcs_2/r
+usr/share/mysql/mysql-test/suite/funcs_2/include
+usr/share/mysql/mysql-test/suite/funcs_2/data
+usr/share/mysql/mysql-test/suite/binlog
+usr/share/mysql/mysql-test/suite/binlog/t
+usr/share/mysql/mysql-test/suite/binlog/r
+usr/share/mysql/mysql-test/suite/binlog/std_data
+usr/share/mysql/mysql-test/suite/ndb_team
+usr/share/mysql/mysql-test/suite/ndb_team/t
+usr/share/mysql/mysql-test/suite/ndb_team/r
+usr/share/mysql/mysql-test/suite/federated
+usr/share/mysql/mysql-test/suite/funcs_1
+usr/share/mysql/mysql-test/suite/funcs_1/cursors
+usr/share/mysql/mysql-test/suite/funcs_1/bitdata
+usr/share/mysql/mysql-test/suite/funcs_1/views
+usr/share/mysql/mysql-test/suite/funcs_1/storedproc
+usr/share/mysql/mysql-test/suite/funcs_1/triggers
+usr/share/mysql/mysql-test/suite/funcs_1/lib
+usr/share/mysql/mysql-test/suite/funcs_1/t
+usr/share/mysql/mysql-test/suite/funcs_1/r
+usr/share/mysql/mysql-test/suite/funcs_1/include
+usr/share/mysql/mysql-test/suite/funcs_1/datadict
+usr/share/mysql/mysql-test/suite/vcol
+usr/share/mysql/mysql-test/suite/vcol/inc
+usr/share/mysql/mysql-test/suite/vcol/t
+usr/share/mysql/mysql-test/suite/vcol/r
+usr/share/mysql/mysql-test/suite/oqgraph
+usr/share/mysql/mysql-test/suite/oqgraph/t
+usr/share/mysql/mysql-test/suite/oqgraph/r
+usr/share/mysql/mysql-test/suite/oqgraph/include
+usr/share/mysql/mysql-test/suite/wsrep
+usr/share/mysql/mysql-test/suite/wsrep/t
+usr/share/mysql/mysql-test/suite/wsrep/r
+usr/share/mysql/mysql-test/suite/galera
+usr/share/mysql/mysql-test/suite/galera/t
+usr/share/mysql/mysql-test/suite/galera/r
+usr/share/mysql/mysql-test/std_data
+usr/share/mysql/mysql-test/std_data/ndb_backup50
+usr/share/mysql/mysql-test/std_data/parts
+usr/share/mysql/mysql-test/std_data/ndb_backup51_data_le
+usr/share/mysql/mysql-test/std_data/ndb_backup51_data_be
+usr/share/mysql/mysql-test/std_data/ndb_backup51
+usr/share/mysql/mysql-test/std_data/funcs_1
diff --git a/debian/mariadb-galera-test-10.0.files b/debian/mariadb-galera-test-10.0.files
new file mode 100644
index 00000000000..ab455a828ea
--- /dev/null
+++ b/debian/mariadb-galera-test-10.0.files
@@ -0,0 +1,16 @@
+usr/lib/mysql/plugin/dialog_examples.so
+usr/lib/mysql/plugin/auth_test_plugin.so
+usr/lib/mysql/plugin/qa_auth_interface.so
+usr/lib/mysql/plugin/qa_auth_server.so
+usr/lib/mysql/plugin/qa_auth_client.so
+usr/lib/mysql/plugin/auth_0x0100.so
+usr/lib/mysql/plugin/mypluglib.so
+usr/lib/mysql/plugin/ha_test_sql_discovery.so
+usr/lib/mysql/plugin/daemon_example.ini
+usr/lib/mysql/plugin/libdaemon_example.so
+usr/lib/mysql/plugin/adt_null.so
+usr/bin/mysql_client_test
+usr/share/man/man1/mysql_client_test.1
+usr/bin/mysqltest
+usr/share/man/man1/mysqltest.1
+usr/share/mysql/mysql-test
diff --git a/debian/mariadb-galera-test-10.0.links b/debian/mariadb-galera-test-10.0.links
new file mode 100644
index 00000000000..082680fe5ed
--- /dev/null
+++ b/debian/mariadb-galera-test-10.0.links
@@ -0,0 +1,2 @@
+usr/share/mysql/mysql-test/mysql-test-run.pl usr/share/mysql/mysql-test/mysql-test-run
+usr/share/mysql/mysql-test/mysql-test-run.pl usr/share/mysql/mysql-test/mtr
diff --git a/mysql-test/include/mtr_check.sql b/mysql-test/include/mtr_check.sql
index e34e32ad1a6..edc15850d97 100644
--- a/mysql-test/include/mtr_check.sql
+++ b/mysql-test/include/mtr_check.sql
@@ -34,6 +34,7 @@ BEGIN
AND variable_name != 'INNODB_USE_NATIVE_AIO'
AND variable_name not like 'GTID%POS'
AND variable_name != 'GTID_BINLOG_STATE'
+ AND variable_name != 'WSREP_DATA_HOME_DIR'
ORDER BY variable_name;
-- Dump all databases, there should be none
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
index 4efca8ceb82..c04ac870e44 100755
--- a/mysql-test/mysql-test-run.pl
+++ b/mysql-test/mysql-test-run.pl
@@ -187,6 +187,8 @@ my @DEFAULT_SUITES= qw(
sys_vars-
unit-
vcol-
+ galera-
+ wsrep-
);
my $opt_suites;
@@ -412,6 +414,7 @@ sub main {
check_ndbcluster_support();
check_ssl_support();
check_debug_support();
+ check_wsrep_support();
if (!$opt_suites) {
$opt_suites= join ',', collect_default_suites(@DEFAULT_SUITES);
@@ -2398,6 +2401,22 @@ sub environment_setup {
}
# ----------------------------------------------------
+ # Setup env for wsrep
+ # ----------------------------------------------------
+ if (have_wsrep()) {
+ if (defined $ENV{'WSREP_PROVIDER'} ) {
+ # Nothing needs to be done! WSREP_PROVIDER env is already set and will be
+ # used.
+ } else {
+ my $file_wsrep_provider=
+ mtr_file_exists("/usr/lib/galera/libgalera_smm.so",
+ "/usr/lib64/galera/libgalera_smm.so");
+ $ENV{'WSREP_PROVIDER'}= $file_wsrep_provider;
+ }
+ mtr_verbose("WSREP_PROVIDER set to $ENV{'WSREP_PROVIDER'}");
+ }
+
+ # ----------------------------------------------------
# mysql clients
# ----------------------------------------------------
$ENV{'MYSQL_CHECK'}= client_arguments("mysqlcheck");
@@ -3174,6 +3193,17 @@ sub ndbcluster_start ($) {
return 0;
}
+sub have_wsrep() {
+ my $wsrep_on= $mysqld_variables{'wsrep-on'};
+ return defined $wsrep_on
+}
+
+sub check_wsrep_support() {
+ if (have_wsrep())
+ {
+ mtr_report(" - binaries built with wsrep patch");
+ }
+}
sub mysql_server_start($) {
my ($mysqld, $tinfo) = @_;
diff --git a/mysql-test/suite/galera/galera_2nodes.cnf b/mysql-test/suite/galera/galera_2nodes.cnf
index 1ef673e9582..21a45dec5f3 100644
--- a/mysql-test/suite/galera/galera_2nodes.cnf
+++ b/mysql-test/suite/galera/galera_2nodes.cnf
@@ -3,12 +3,12 @@
[mysqld.1]
binlog-format=row
-wsrep_provider=/usr/lib/galera/libgalera_smm.so
+wsrep_provider=@ENV.WSREP_PROVIDER
wsrep_cluster_address='gcomm://'
[mysqld.2]
binlog-format=row
-wsrep_provider=/usr/lib/galera/libgalera_smm.so
+wsrep_provider=@ENV.WSREP_PROVIDER
wsrep_cluster_address='gcomm://127.0.0.1:4567'
wsrep_provider_options='gmcast.listen_addr=tcp://127.0.0.1:4568'
diff --git a/mysql-test/suite/sys_vars/r/auto_increment_increment_func.result b/mysql-test/suite/sys_vars/r/auto_increment_increment_func.result
index a7ce4e99e20..df3ca1ab093 100644
--- a/mysql-test/suite/sys_vars/r/auto_increment_increment_func.result
+++ b/mysql-test/suite/sys_vars/r/auto_increment_increment_func.result
@@ -142,8 +142,8 @@ id name
116 Record_10
117 Record_11
119 Record_12
-120 Record_13
-121 Record_14
+121 Record_13
+123 Record_14
## Changing column's datatype to BigInt and verifying variable's behavior ##
ALTER table t1 MODIFY id BIGINT NOT NULL auto_increment;
INSERT into t1(name) values('Record_15');
@@ -159,10 +159,10 @@ id name
116 Record_10
117 Record_11
119 Record_12
-120 Record_13
-121 Record_14
-122 Record_15
-123 Record_16
+121 Record_13
+123 Record_14
+125 Record_15
+127 Record_16
'#--------------------FN_DYNVARS_001_07-------------------------#'
## Verifying behavior of variable with negative value ##
SET @@auto_increment_increment = -10;
@@ -181,12 +181,12 @@ id name
116 Record_10
117 Record_11
119 Record_12
-120 Record_13
-121 Record_14
-122 Record_15
-123 Record_16
-124 Record_17
-125 Record_18
+121 Record_13
+123 Record_14
+125 Record_15
+127 Record_16
+128 Record_17
+129 Record_18
## Disconnecting test_con2 ##
## Dropping table t1 ##
DROP table if exists t1;
diff --git a/mysql-test/suite/sys_vars/r/auto_increment_offset_func.result b/mysql-test/suite/sys_vars/r/auto_increment_offset_func.result
index 58ecf95dae3..d2b5b828c04 100644
--- a/mysql-test/suite/sys_vars/r/auto_increment_offset_func.result
+++ b/mysql-test/suite/sys_vars/r/auto_increment_offset_func.result
@@ -144,8 +144,8 @@ id name
125 Record_12
134 Record_13
140 Record_14
-141 Record_15
-142 Record_16
+150 Record_15
+160 Record_16
## Changing datatype of column id with primary key to BigInt ##
ALTER table t1 modify id BIGINT NOT NULL auto_increment;
INSERT into t1(name) values('Record_17');
@@ -166,10 +166,10 @@ id name
125 Record_12
134 Record_13
140 Record_14
-141 Record_15
-142 Record_16
-143 Record_17
-144 Record_18
+150 Record_15
+160 Record_16
+170 Record_17
+180 Record_18
'#--------------------FN_DYNVARS_002_07-------------------------#'
## Assigning -ve value to variable ##
SET @@auto_increment_offset = -10;
@@ -196,12 +196,12 @@ id name
125 Record_12
134 Record_13
140 Record_14
-141 Record_15
-142 Record_16
-143 Record_17
-144 Record_18
-145 Record_17
-146 Record_18
+150 Record_15
+160 Record_16
+170 Record_17
+180 Record_18
+181 Record_17
+191 Record_18
## Assigning value that is out of range of variable ##
SET @@auto_increment_offset = 65536;
Warnings:
@@ -229,16 +229,16 @@ id name
125 Record_12
134 Record_13
140 Record_14
-141 Record_15
-142 Record_16
-143 Record_17
-144 Record_18
-145 Record_17
-146 Record_18
-147 Record_17
-148 Record_18
-149 Record_19
-150 Record_20
+150 Record_15
+160 Record_16
+170 Record_17
+180 Record_18
+181 Record_17
+191 Record_18
+199 Record_17
+209 Record_18
+219 Record_19
+229 Record_20
## No effect of auto_increment_offset since value of this variable is greater ##
## than auto_increment_increment ##
## Dropping table ##
diff --git a/mysql-test/suite/wsrep/r/variables.result b/mysql-test/suite/wsrep/r/variables.result
index 38c9900a195..ae06b30941e 100644
--- a/mysql-test/suite/wsrep/r/variables.result
+++ b/mysql-test/suite/wsrep/r/variables.result
@@ -65,6 +65,7 @@ wsrep_provider_name #
wsrep_provider_vendor #
wsrep_provider_version #
wsrep_ready #
+wsrep_thread_count #
SHOW GLOBAL STATUS LIKE 'wsrep_%';
Variable_name Value
@@ -115,12 +116,14 @@ wsrep_provider_name #
wsrep_provider_vendor #
wsrep_provider_version #
wsrep_ready #
+wsrep_thread_count #
SHOW GLOBAL STATUS LIKE 'wsrep_local_state_comment';
Variable_name Value
-wsrep_local_state_comment Synced
+wsrep_local_state_comment #
# Should show nothing.
SHOW STATUS LIKE 'x';
Variable_name Value
+SET GLOBAL wsrep_provider=none;
#
# MDEV#6079: xtrabackup SST failing with maria-10.0-galera
#
@@ -132,4 +135,70 @@ wsrep_local_state_uuid #
SHOW STATUS LIKE 'wsrep_last_committed';
Variable_name Value
wsrep_last_committed #
+SET GLOBAL wsrep_provider=none;
+
+#
+# MDEV#6206: wsrep_slave_threads subtracts from max_connections
+#
+call mtr.add_suppression("safe_mutex: Found wrong usage of mutex 'LOCK_wsrep_slave_threads' and 'LOCK_global_system_variables'");
+call mtr.add_suppression("WSREP: Failed to get provider options");
+SELECT @@global.wsrep_provider;
+@@global.wsrep_provider
+none
+SELECT @@global.wsrep_slave_threads;
+@@global.wsrep_slave_threads
+1
+SELECT @@global.wsrep_cluster_address;
+@@global.wsrep_cluster_address
+NULL
+SHOW STATUS LIKE 'threads_connected';
+Variable_name Value
+Threads_connected 1
+SHOW STATUS LIKE 'wsrep_thread_count';
+Variable_name Value
+wsrep_thread_count 0
+
+SELECT @@global.wsrep_provider;
+@@global.wsrep_provider
+/usr/lib/galera/libgalera_smm.so
+SELECT @@global.wsrep_cluster_address;
+@@global.wsrep_cluster_address
+NULL
+SHOW STATUS LIKE 'threads_connected';
+Variable_name Value
+Threads_connected 1
+SHOW STATUS LIKE 'wsrep_thread_count';
+Variable_name Value
+wsrep_thread_count 0
+
+# Setting wsrep_cluster_address triggers the creation of
+# applier/rollbacker threads.
+SET GLOBAL wsrep_cluster_address= 'gcomm://';
+# Wait for applier threads to get created.
+SELECT @@global.wsrep_provider;
+@@global.wsrep_provider
+/usr/lib/galera/libgalera_smm.so
+SELECT @@global.wsrep_cluster_address;
+@@global.wsrep_cluster_address
+gcomm://
+SHOW STATUS LIKE 'threads_connected';
+Variable_name Value
+Threads_connected 1
+SHOW STATUS LIKE 'wsrep_thread_count';
+Variable_name Value
+wsrep_thread_count 2
+
+SET @wsrep_slave_threads_saved= @@global.wsrep_slave_threads;
+SET GLOBAL wsrep_slave_threads= 10;
+# Wait for applier threads to get created.
+SHOW STATUS LIKE 'threads_connected';
+Variable_name Value
+Threads_connected 1
+SHOW STATUS LIKE 'wsrep_thread_count';
+Variable_name Value
+wsrep_thread_count 11
+SET GLOBAL wsrep_slave_threads= @wsrep_slave_threads_saved;
+SET GLOBAL wsrep_provider= none;
+SET GLOBAL wsrep_cluster_address= '';
+SET GLOBAL wsrep_provider_options= '';
# End of test.
diff --git a/mysql-test/suite/wsrep/t/binlog_format.opt b/mysql-test/suite/wsrep/t/binlog_format.opt
index 771d9b05e1e..83194184e17 100644
--- a/mysql-test/suite/wsrep/t/binlog_format.opt
+++ b/mysql-test/suite/wsrep/t/binlog_format.opt
@@ -1 +1 @@
---binlog-format=row --innodb_autoinc_lock_mode=2 --innodb_locks_unsafe_for_binlog=1 --wsrep-provider=/usr/lib/galera/libgalera_smm.so --wsrep-cluster-address=gcomm:// --wsrep-on=1 --log-bin
+--binlog-format=row --innodb_autoinc_lock_mode=2 --innodb_locks_unsafe_for_binlog=1 --wsrep-provider=$WSREP_PROVIDER --wsrep-cluster-address=gcomm:// --wsrep-on=1 --log-bin
diff --git a/mysql-test/suite/wsrep/t/pool_of_threads.opt b/mysql-test/suite/wsrep/t/pool_of_threads.opt
index 92994ddfb68..fb23fb50a67 100644
--- a/mysql-test/suite/wsrep/t/pool_of_threads.opt
+++ b/mysql-test/suite/wsrep/t/pool_of_threads.opt
@@ -1 +1 @@
---binlog-format=row --innodb_autoinc_lock_mode=2 --innodb_locks_unsafe_for_binlog=1 --wsrep-provider=/usr/lib/galera/libgalera_smm.so --wsrep-cluster-address=gcomm:// --thread_handling=pool-of-threads
+--binlog-format=row --innodb_autoinc_lock_mode=2 --innodb_locks_unsafe_for_binlog=1 --wsrep-provider=$WSREP_PROVIDER --wsrep-cluster-address=gcomm:// --thread_handling=pool-of-threads
diff --git a/mysql-test/suite/wsrep/t/variables.opt b/mysql-test/suite/wsrep/t/variables.opt
deleted file mode 100644
index 672ddd5e609..00000000000
--- a/mysql-test/suite/wsrep/t/variables.opt
+++ /dev/null
@@ -1 +0,0 @@
---binlog-format=row --wsrep-provider=/usr/lib/galera/libgalera_smm.so --wsrep-cluster-address=gcomm://
diff --git a/mysql-test/suite/wsrep/t/variables.test b/mysql-test/suite/wsrep/t/variables.test
index cfe3e6605c4..a18473b53f1 100644
--- a/mysql-test/suite/wsrep/t/variables.test
+++ b/mysql-test/suite/wsrep/t/variables.test
@@ -5,6 +5,10 @@
--echo #
--echo # Testing wsrep_replicate_myisam variable.
+--disable_query_log
+eval SET GLOBAL wsrep_provider= '$WSREP_PROVIDER';
+--enable_query_log
+
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
SELECT @@session.wsrep_replicate_myisam;
SELECT @@global.wsrep_replicate_myisam;
@@ -30,15 +34,22 @@ SHOW GLOBAL STATUS LIKE 'wsrep%';
--replace_column 2 #
SHOW GLOBAL STATUS LIKE 'wsrep_%';
+--replace_column 2 #
SHOW GLOBAL STATUS LIKE 'wsrep_local_state_comment';
--echo # Should show nothing.
SHOW STATUS LIKE 'x';
+SET GLOBAL wsrep_provider=none;
+
--echo #
--echo # MDEV#6079: xtrabackup SST failing with maria-10.0-galera
--echo #
+--disable_query_log
+eval SET GLOBAL wsrep_provider= '$WSREP_PROVIDER';
+--enable_query_log
+
# The following 2 variables are used in innobackupex during xtrabackup-based
# SST.
--echo
@@ -48,4 +59,52 @@ SHOW STATUS LIKE 'wsrep_local_state_uuid';
--replace_column 2 #
SHOW STATUS LIKE 'wsrep_last_committed';
+SET GLOBAL wsrep_provider=none;
+
+--echo
+--echo #
+--echo # MDEV#6206: wsrep_slave_threads subtracts from max_connections
+--echo #
+call mtr.add_suppression("safe_mutex: Found wrong usage of mutex 'LOCK_wsrep_slave_threads' and 'LOCK_global_system_variables'");
+call mtr.add_suppression("WSREP: Failed to get provider options");
+SELECT @@global.wsrep_provider;
+SELECT @@global.wsrep_slave_threads;
+SELECT @@global.wsrep_cluster_address;
+SHOW STATUS LIKE 'threads_connected';
+SHOW STATUS LIKE 'wsrep_thread_count';
+--echo
+
+--disable_query_log
+eval SET GLOBAL wsrep_provider= '$WSREP_PROVIDER';
+--enable_query_log
+SELECT @@global.wsrep_provider;
+SELECT @@global.wsrep_cluster_address;
+SHOW STATUS LIKE 'threads_connected';
+SHOW STATUS LIKE 'wsrep_thread_count';
+--echo
+
+--echo # Setting wsrep_cluster_address triggers the creation of
+--echo # applier/rollbacker threads.
+SET GLOBAL wsrep_cluster_address= 'gcomm://';
+--echo # Wait for applier threads to get created.
+sleep 3;
+SELECT @@global.wsrep_provider;
+SELECT @@global.wsrep_cluster_address;
+SHOW STATUS LIKE 'threads_connected';
+SHOW STATUS LIKE 'wsrep_thread_count';
+--echo
+
+SET @wsrep_slave_threads_saved= @@global.wsrep_slave_threads;
+SET GLOBAL wsrep_slave_threads= 10;
+--echo # Wait for applier threads to get created.
+sleep 3;
+SHOW STATUS LIKE 'threads_connected';
+SHOW STATUS LIKE 'wsrep_thread_count';
+
+# reset (for mtr internal checks)
+SET GLOBAL wsrep_slave_threads= @wsrep_slave_threads_saved;
+SET GLOBAL wsrep_provider= none;
+SET GLOBAL wsrep_cluster_address= '';
+SET GLOBAL wsrep_provider_options= '';
+
--echo # End of test.
diff --git a/scripts/wsrep_sst_rsync.sh b/scripts/wsrep_sst_rsync.sh
index af3c2bb23cd..a3e23cbef2c 100755
--- a/scripts/wsrep_sst_rsync.sh
+++ b/scripts/wsrep_sst_rsync.sh
@@ -28,6 +28,9 @@ export PATH="/usr/sbin:/sbin:$PATH"
. $(dirname $0)/wsrep_sst_common
+# Setting the path for lsof on CentOS
+export PATH="/usr/sbin:/sbin:$PATH"
+
wsrep_check_programs rsync
cleanup_joiner()
@@ -57,6 +60,11 @@ check_pid_and_port()
local rsync_pid=$2
local rsync_port=$3
+ if ! which lsof > /dev/null; then
+ wsrep_log_error "lsof tool not found in PATH! Make sure you have it installed."
+ exit 2 # ENOENT
+ fi
+
local port_info=$(lsof -i :$rsync_port -Pn 2>/dev/null | \
grep "(LISTEN)")
local is_rsync=$(echo $port_info | \
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 9de9247b11b..4c72a16e7dc 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -76,6 +76,7 @@
#include "wsrep_var.h"
#include "wsrep_thd.h"
#include "wsrep_sst.h"
+ulong wsrep_running_threads = 0; // # of currently running wsrep threads
#endif
#include "sql_callback.h"
#include "threadpool.h"
@@ -2820,9 +2821,19 @@ void thd_cleanup(THD *thd)
void dec_connection_count(THD *thd)
{
- mysql_mutex_lock(&LOCK_connection_count);
- (*thd->scheduler->connection_count)--;
- mysql_mutex_unlock(&LOCK_connection_count);
+#ifdef WITH_WSREP
+ /*
+ Do not decrement when its wsrep system thread. wsrep_applier is set for
+ applier as well as rollbacker threads.
+ */
+ if (!thd->wsrep_applier)
+#endif /* WITH_WSREP */
+ {
+ DBUG_ASSERT(*thd->scheduler->connection_count > 0);
+ mysql_mutex_lock(&LOCK_connection_count);
+ (*thd->scheduler->connection_count)--;
+ mysql_mutex_unlock(&LOCK_connection_count);
+ }
}
@@ -2999,7 +3010,7 @@ bool one_thread_per_connection_end(THD *thd, bool put_in_cache)
set_current_thd(0);
#ifdef WITH_WSREP
- if (put_in_cache && cache_thread() && !thd->wsrep_applier)
+ if (put_in_cache && cache_thread() && !wsrep_applier)
#else
if (put_in_cache && cache_thread())
#endif /* WITH_WSREP */
@@ -5346,14 +5357,21 @@ pthread_handler_t start_wsrep_THD(void *arg)
thd->set_time();
thd->init_for_queries();
- mysql_mutex_lock(&LOCK_connection_count);
- ++connection_count;
- mysql_mutex_unlock(&LOCK_connection_count);
+ mysql_mutex_lock(&LOCK_thread_count);
+ wsrep_running_threads++;
+ mysql_cond_broadcast(&COND_thread_count);
+ mysql_mutex_unlock(&LOCK_thread_count);
processor(thd);
close_connection(thd, 0);
+ mysql_mutex_lock(&LOCK_thread_count);
+ wsrep_running_threads--;
+ WSREP_DEBUG("wsrep running threads now: %lu", wsrep_running_threads);
+ mysql_cond_broadcast(&COND_thread_count);
+ mysql_mutex_unlock(&LOCK_thread_count);
+
// Note: We can't call THD destructor without crashing
// if plugins have not been initialized. However, in most of the
// cases this means that pre SE initialization SST failed and
@@ -8723,6 +8741,7 @@ SHOW_VAR status_vars[]= {
{"wsrep_provider_name", (char*) &wsrep_provider_name, SHOW_CHAR_PTR},
{"wsrep_provider_version", (char*) &wsrep_provider_version, SHOW_CHAR_PTR},
{"wsrep_provider_vendor", (char*) &wsrep_provider_vendor, SHOW_CHAR_PTR},
+ {"wsrep_thread_count", (char*) &wsrep_running_threads, SHOW_LONG_NOFLUSH},
{"wsrep", (char*) &wsrep_show_status, SHOW_FUNC},
#endif
{NullS, NullS, SHOW_LONG}
diff --git a/sql/rpl_record.cc b/sql/rpl_record.cc
index 0ac7d6d7a36..b82dbb07a42 100644
--- a/sql/rpl_record.cc
+++ b/sql/rpl_record.cc
@@ -307,11 +307,11 @@ unpack_row(rpl_group_info *rgi,
uint16 const metadata= tabledef->field_metadata(i);
#ifndef DBUG_OFF
uchar const *const old_pack_ptr= pack_ptr;
-#else
-#if WITH_WSREP
+#else
+#ifdef WITH_WSREP
uchar const *const old_pack_ptr= pack_ptr;
-#endif
-#endif
+#endif /* WITH_WSREP */
+#endif /* !DBUF_OFF */
pack_ptr= f->unpack(f->ptr, pack_ptr, row_end, metadata);
DBUG_PRINT("debug", ("field: %s; metadata: 0x%x;"
" pack_ptr: 0x%lx; pack_ptr': 0x%lx; bytes: %d",
@@ -320,9 +320,11 @@ unpack_row(rpl_group_info *rgi,
(int) (pack_ptr - old_pack_ptr)));
if (!pack_ptr)
{
- /* Debug message to troubleshoot bug:
- https://mariadb.atlassian.net/browse/MDEV-4404
- */
+#ifdef WITH_WSREP
+ /*
+ Debug message to troubleshoot bug:
+ https://mariadb.atlassian.net/browse/MDEV-4404
+ */
WSREP_WARN("ROW event unpack field: %s metadata: 0x%x;"
" pack_ptr: 0x%lx; conv_table %p conv_field %p table %s"
" row_end: 0x%lx",
@@ -330,6 +332,7 @@ unpack_row(rpl_group_info *rgi,
(ulong) old_pack_ptr, conv_table, conv_field,
(table_found) ? "found" : "not found", (ulong)row_end
);
+#endif /* WITH_WSREP */
rgi->rli->report(ERROR_LEVEL, ER_SLAVE_CORRUPT_EVENT,
"Could not read field '%s' of table '%s.%s'",
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 8da8fdf5c25..21463afa1b3 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -1071,8 +1071,9 @@ bool do_command(THD *thd)
command != COM_TIME &&
command != COM_END
) {
- my_error(ER_UNKNOWN_COM_ERROR, MYF(0),
- "WSREP has not yet prepared node for application use");
+ my_message(ER_UNKNOWN_COM_ERROR,
+ "WSREP has not yet prepared node for application use",
+ MYF(0));
thd->protocol->end_statement();
return_value= FALSE;
goto out;
@@ -2642,8 +2643,9 @@ mysql_execute_command(THD *thd)
strncmp(thd->query(), mysqldump_magic_str, mysqldump_magic_str_len))
{
#endif /* DIRTY_HACK */
- my_error(ER_UNKNOWN_COM_ERROR, MYF(0),
- "WSREP has not yet prepared node for application use");
+ my_message(ER_UNKNOWN_COM_ERROR,
+ "WSREP has not yet prepared node for application use",
+ MYF(0));
goto error;
#if DIRTY_HACK
}