diff options
author | Nirbhay Choubey <nirbhay@skysql.com> | 2014-05-22 18:31:04 -0400 |
---|---|---|
committer | Nirbhay Choubey <nirbhay@skysql.com> | 2014-05-22 18:31:04 -0400 |
commit | ab4947463e68da1a01bd506f8f280ebdea3f1b46 (patch) | |
tree | 75ec757acf0955e19d1fac0f3fcac2a6593e0a2f | |
parent | 0bf3ed12a5338f0db4b652f839fee93a28d39195 (diff) | |
download | mariadb-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-- | .bzrignore | 2 | ||||
-rw-r--r-- | cmake/cpack_rpm.cmake | 5 | ||||
-rw-r--r-- | cmake/wsrep.cmake | 2 | ||||
-rw-r--r-- | debian/dist/Debian/control | 31 | ||||
-rw-r--r-- | debian/dist/Ubuntu/control | 31 | ||||
-rw-r--r-- | debian/mariadb-galera-test-10.0.dirs | 101 | ||||
-rw-r--r-- | debian/mariadb-galera-test-10.0.files | 16 | ||||
-rw-r--r-- | debian/mariadb-galera-test-10.0.links | 2 | ||||
-rw-r--r-- | mysql-test/include/mtr_check.sql | 1 | ||||
-rwxr-xr-x | mysql-test/mysql-test-run.pl | 30 | ||||
-rw-r--r-- | mysql-test/suite/galera/galera_2nodes.cnf | 4 | ||||
-rw-r--r-- | mysql-test/suite/sys_vars/r/auto_increment_increment_func.result | 24 | ||||
-rw-r--r-- | mysql-test/suite/sys_vars/r/auto_increment_offset_func.result | 44 | ||||
-rw-r--r-- | mysql-test/suite/wsrep/r/variables.result | 71 | ||||
-rw-r--r-- | mysql-test/suite/wsrep/t/binlog_format.opt | 2 | ||||
-rw-r--r-- | mysql-test/suite/wsrep/t/pool_of_threads.opt | 2 | ||||
-rw-r--r-- | mysql-test/suite/wsrep/t/variables.opt | 1 | ||||
-rw-r--r-- | mysql-test/suite/wsrep/t/variables.test | 59 | ||||
-rwxr-xr-x | scripts/wsrep_sst_rsync.sh | 8 | ||||
-rw-r--r-- | sql/mysqld.cc | 33 | ||||
-rw-r--r-- | sql/rpl_record.cc | 17 | ||||
-rw-r--r-- | sql/sql_parse.cc | 10 |
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 } |