diff --git a/Development/branching-and-tagging.md b/Development/branching-and-tagging.md new file mode 100644 index 000000000..abef7178c --- /dev/null +++ b/Development/branching-and-tagging.md @@ -0,0 +1,117 @@ +# Branching and Tagging + +## Overview + +This document describes how git branches and tags are used in the MaxScale +development. + +## Release Numbering + +The releases of MaxScale are numbered as `X.Y.Z` where `X` is the major +version, `Y` is the minor version, and `Z` is the maintenance version. + +`X` changes very rarely and is currently `2`. `Y` is incremented when new +features are introduced and `Z` is incremented in conjunction with bug +fixes. + +When `X` changes, `Y` is reset to 0 and when `Y` changes, `Z` is reset to +0. + +## Branches + +There are two kinds of minor branches in MaxScale; branches named as +`X.Y`, such as `2.1` and `2.2` and the branch `develop`. + +The development of the _next_ minor release takes place in `develop`. + +The only development that takes place in an `X.Z` branch is related to bug +fixes. Occasionally, due to explicit customer demand, feature development +may also take place. + +## Maintenance Releases + +Suppose the last released version is `2.1.6`. + +Any bug fixes related to version `2.1.6` are now pushed to `2.1`. When +there are "enough" bug fixes, or at least one and enough time has passed +since the last release, a new tag is created. +``` +git checkout 2.1 +git tag -a maxscale-2.1.7-tt1 +git push --tags origin +``` +The suffix `-tt1` stands for _tentative tag 1_, because before the +test-suite has been run and all packages have been built (using that tag), +we do not know with certainty whether that commit actually will be the +release `2.1.7`. + +If there are problems, then those are fixed and a new tag +`maxscale-2.1.7-tt2` is created. That continues until there are no issues +left. Typically a few iterations are needed. + +Once all is green, the final tag is created. +``` +git checkout maxscale-2.1.7-tt2` +git tag -a maxscale-2.1.7 +``` +but the packages are not rebuilt. At this point, the tentative tags are +removed: +``` +git tag -d maxscale-2.1.7-tt1 +git tag -d maxscale-2.1.7-tt2 +git push origin :refs/tags/maxscale-2.1.7-tt1 +git push origin :refs/tags/maxscale-2.1.7-tt2 +``` +At this point, the _branch_ `2.1.7` is also created: +``` +git checkout maxscale-2.1.7 +git checkout -b 2.1.7 +git push origin 2.1.7 +``` +This branch is **only** used for updating the documentation, if there is +an urgent need for doing that. There is always one need; once the packages +have been uploaded to the download site and we know the exact date when +they will be made available, the release date is added in the release notes. +``` +git checkout 2.1.7 +# Update the release date +git add Documentation/Release-Notes/MaxScale-2.1.7-Release-Notes.md +git commit +git push origin 2.1.7 +``` +The next step is to merge that branch into the corresponding minor branch. +``` +git checkout 2.1 +git merge 2.1.7 +``` +Now the updated minor branch should be merged upwards until we reach +`develop`. +``` +git checkout 2.2 +git merge 2.1 +git checkout develop +git merge 2.2 +``` + +## Feature Releases + +Feature releases are always the next minor version and the development +takes place in `develop`. + +The procedure is roughly similar to that releated to maintenance releases +but with an inital deviation. + +Once the development of the next minor release is close to readiness, the +new minor release branch is created. +``` +git checkout develop +git checkout -b 2.3 +git push origin 2.3 +``` +After this, all commits related to the next release, are pushed to the +branch `2.3`. If there already is development related to the minor release +following that, those commits are pushed to `develop`. + +Hereafter the procedure is exactly like the one of a maintenance +release. The first tag will be `maxscale-2.3.0-tt1`, the final tag will be +`maxscale-2.3.0` and the branch `2.3.0`. diff --git a/Documentation/Changelog.md b/Documentation/Changelog.md index 7ffc3500a..5b5eab4b5 100644 --- a/Documentation/Changelog.md +++ b/Documentation/Changelog.md @@ -28,6 +28,7 @@ the master. There is also limited capability for rejoining nodes. For more details, please refer to: +* [MariaDB MaxScale 2.2.8 Release Notes](Release-Notes/MaxScale-2.2.8-Release-Notes.md) * [MariaDB MaxScale 2.2.7 Release Notes](Release-Notes/MaxScale-2.2.7-Release-Notes.md) * [MariaDB MaxScale 2.2.6 Release Notes](Release-Notes/MaxScale-2.2.6-Release-Notes.md) * [MariaDB MaxScale 2.2.5 Release Notes](Release-Notes/MaxScale-2.2.5-Release-Notes.md) diff --git a/Documentation/Release-Notes/MaxScale-2.2.8-Release-Notes.md b/Documentation/Release-Notes/MaxScale-2.2.8-Release-Notes.md new file mode 100644 index 000000000..c633b0d7e --- /dev/null +++ b/Documentation/Release-Notes/MaxScale-2.2.8-Release-Notes.md @@ -0,0 +1,34 @@ +# MariaDB MaxScale 2.2.8 Release Notes -- Not Released + +Release 2.2.8 is a GA release. + +This document describes the changes in release 2.2.8, when compared to +release 2.2.7. + +For any problems you encounter, please consider submitting a bug +report at [Jira](https://jira.mariadb.org). + +## Bug fixes + +* [MXS-1889](https://jira.mariadb.org/browse/MXS-1889) A single remaining master is valid for readconnroute configured with 'router_options=slave' +* [MXS-1740](https://jira.mariadb.org/browse/MXS-1740) Hintfilter leaks memory + +## Known Issues and Limitations + +There are some limitations and known issues within this version of MaxScale. +For more information, please refer to the [Limitations](../About/Limitations.md) document. + +## Packaging + +RPM and Debian packages are provided for the Linux distributions supported +by MariaDB Enterprise. + +Packages can be downloaded [here](https://mariadb.com/downloads/mariadb-tx/maxscale). + +## Source Code + +The source code of MaxScale is tagged at GitHub with a tag, which is identical +with the version of MaxScale. For instance, the tag of version X.Y.Z of MaxScale +is X.Y.Z. Further, *master* always refers to the latest released non-beta version. + +The source code is available [here](https://github.com/mariadb-corporation/MaxScale). diff --git a/VERSION22.cmake b/VERSION22.cmake index a4aac4fa9..1dee63754 100644 --- a/VERSION22.cmake +++ b/VERSION22.cmake @@ -5,7 +5,7 @@ set(MAXSCALE_VERSION_MAJOR "2" CACHE STRING "Major version") set(MAXSCALE_VERSION_MINOR "2" CACHE STRING "Minor version") -set(MAXSCALE_VERSION_PATCH "8" CACHE STRING "Patch version") +set(MAXSCALE_VERSION_PATCH "9" CACHE STRING "Patch version") # This should only be incremented if a package is rebuilt set(MAXSCALE_BUILD_NUMBER 1 CACHE STRING "Release number") diff --git a/include/maxscale/query_classifier.h b/include/maxscale/query_classifier.h index fce557878..116e59a1b 100644 --- a/include/maxscale/query_classifier.h +++ b/include/maxscale/query_classifier.h @@ -104,6 +104,7 @@ typedef enum qc_query_op QUERY_OP_EXPLAIN, QUERY_OP_GRANT, QUERY_OP_INSERT, + QUERY_OP_LOAD_LOCAL, QUERY_OP_LOAD, QUERY_OP_REVOKE, QUERY_OP_SELECT, diff --git a/include/maxscale/utils.hh b/include/maxscale/utils.hh index f2befe54b..93d5e7cdd 100644 --- a/include/maxscale/utils.hh +++ b/include/maxscale/utils.hh @@ -480,6 +480,7 @@ public: SHA1Checksum() { SHA1_Init(&m_ctx); + m_sum.fill(0); // CentOS 6 doesn't like aggregate initialization... } void update(GWBUF* buffer) diff --git a/maxscale-system-test/CMakeLists.txt b/maxscale-system-test/CMakeLists.txt index f044ac787..b1e87fdbe 100644 --- a/maxscale-system-test/CMakeLists.txt +++ b/maxscale-system-test/CMakeLists.txt @@ -613,6 +613,10 @@ add_test_executable(mxs1507_inconsistent_trx.cpp mxs1507_inconsistent_trx mxs150 # https://jira.mariadb.org/browse/MXS-1507 add_test_executable(mxs1507_migrate_trx.cpp mxs1507_migrate_trx mxs1507_trx_replay LABELS readwritesplit REPL_BACKEND) +# MXS-1507: Transaction replay +# https://jira.mariadb.org/browse/MXS-1507 +add_test_executable(mxs1507_trx_stress.cpp mxs1507_trx_stress mxs1507_trx_stress LABELS readwritesplit REPL_BACKEND) + # MXS-1509: Show correct server state for multisource replication # https://jira.mariadb.org/browse/MXS-1509 add_test_executable(mxs1509.cpp mxs1509 mxs1509 LABELS mysqlmon REPL_BACKEND) @@ -713,6 +717,10 @@ add_test_executable(mxs1831_unknown_param.cpp mxs1831_unknown_param replication # https://jira.mariadb.org/browse/MXS-1873 add_test_executable(mxs1873_large_sescmd.cpp mxs1873_large_sescmd replication LABELS readwritesplit REPL_BACKEND) +# MXS-1896: LOAD DATA INFILE is mistaken for LOAD DATA LOCAL INFILE +# https://jira.mariadb.org/browse/MXS-1896 +add_test_executable(mxs1896_load_data_infile.cpp mxs1896_load_data_infile replication LABELS readwritesplit REPL_BACKEND) + # 'namedserverfilter' test add_test_executable(namedserverfilter.cpp namedserverfilter namedserverfilter LABELS namedserverfilter LIGHT REPL_BACKEND) diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.add_server b/maxscale-system-test/cnf/maxscale.cnf.template.add_server index a21990d06..0044a88fa 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.add_server +++ b/maxscale-system-test/cnf/maxscale.cnf.template.add_server @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1,server2,server3,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.add_service b/maxscale-system-test/cnf/maxscale.cnf.template.add_service index a629dc819..be2369f70 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.add_service +++ b/maxscale-system-test/cnf/maxscale.cnf.template.add_service @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1,server2,server3,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bad_pers b/maxscale-system-test/cnf/maxscale.cnf.template.bad_pers index e67181178..40e7c880c 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bad_pers +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bad_pers @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bad_ssl b/maxscale-system-test/cnf/maxscale.cnf.template.bad_ssl index 4d4c0a525..e759649ce 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bad_ssl +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bad_ssl @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.batchinsert b/maxscale-system-test/cnf/maxscale.cnf.template.batchinsert index e37d64c8c..8175d2e71 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.batchinsert +++ b/maxscale-system-test/cnf/maxscale.cnf.template.batchinsert @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug359 b/maxscale-system-test/cnf/maxscale.cnf.template.bug359 index 203272f92..0898a39bd 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug359 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug359 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug471 b/maxscale-system-test/cnf/maxscale.cnf.template.bug471 index 0a146643d..99b3b3958 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug471 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug471 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug479 b/maxscale-system-test/cnf/maxscale.cnf.template.bug479 index 51c3862df..7a11a1b49 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug479 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug479 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug493 b/maxscale-system-test/cnf/maxscale.cnf.template.bug493 index 8df071bfa..2b78972c9 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug493 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug493 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug495 b/maxscale-system-test/cnf/maxscale.cnf.template.bug495 index 10c4ff938..87b12b72c 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug495 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug495 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4,server5 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug526 b/maxscale-system-test/cnf/maxscale.cnf.template.bug526 index 393d62adb..007697c5a 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug526 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug526 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug539 b/maxscale-system-test/cnf/maxscale.cnf.template.bug539 index f79d1b450..a2d0f2960 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug539 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug539 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### detect_replication_lag=1 servers=server1,server2,server3,server4 user=maxuser diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug547 b/maxscale-system-test/cnf/maxscale.cnf.template.bug547 index f08237e97..d7ad56025 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug547 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug547 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug567 b/maxscale-system-test/cnf/maxscale.cnf.template.bug567 index 2f5f687d6..1fd15146a 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug567 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug567 @@ -7,7 +7,6 @@ log_debug=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug571 b/maxscale-system-test/cnf/maxscale.cnf.template.bug571 index 98d03c96f..81d3670b1 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug571 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug571 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug585 b/maxscale-system-test/cnf/maxscale.cnf.template.bug585 index 169ecdab5..1ac9b1e12 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug585 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug585 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug587 b/maxscale-system-test/cnf/maxscale.cnf.template.bug587 index b1ddcaaad..836767f0d 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug587 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug587 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug587_1 b/maxscale-system-test/cnf/maxscale.cnf.template.bug587_1 index 47a7942b8..01531a237 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug587_1 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug587_1 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug601 b/maxscale-system-test/cnf/maxscale.cnf.template.bug601 index 39327ceb0..085bcf817 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug601 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug601 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug620 b/maxscale-system-test/cnf/maxscale.cnf.template.bug620 index 806f6d3e7..a30e3bbbb 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug620 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug620 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug643 b/maxscale-system-test/cnf/maxscale.cnf.template.bug643 index 5b0a7fdf4..c69d83745 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug643 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug643 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug643_1 b/maxscale-system-test/cnf/maxscale.cnf.template.bug643_1 index 5651c65cf..8ca134226 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug643_1 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug643_1 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### monitor_interval=10000 servers=server1,server2,server3,server4 detect_replication_lag=1 diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug645 b/maxscale-system-test/cnf/maxscale.cnf.template.bug645 index 7133ba292..a53989f1f 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug645 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug645 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug645_1 b/maxscale-system-test/cnf/maxscale.cnf.template.bug645_1 index 5d6d17161..3cee44f80 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug645_1 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug645_1 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug648 b/maxscale-system-test/cnf/maxscale.cnf.template.bug648 index a2e35736e..ce6f42988 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug648 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug648 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug650 b/maxscale-system-test/cnf/maxscale.cnf.template.bug650 index 623e21494..c73a2ee5a 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug650 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug650 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug657 b/maxscale-system-test/cnf/maxscale.cnf.template.bug657 index 8a58dd91b..25a6e4142 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug657 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug657 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug662 b/maxscale-system-test/cnf/maxscale.cnf.template.bug662 index 6a2a8c10e..0ac985c84 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug662 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug662 @@ -7,7 +7,6 @@ auth_write_timeout=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug664 b/maxscale-system-test/cnf/maxscale.cnf.template.bug664 index e51e143fb..7a4a8272b 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug664 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug664 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug670 b/maxscale-system-test/cnf/maxscale.cnf.template.bug670 index 7576b054e..f76c4b125 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug670 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug670 @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### monitor_interval=10000 servers=server1,server2,server3,server4 user=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug673 b/maxscale-system-test/cnf/maxscale.cnf.template.bug673 index dc7c608fa..e0f68ead3 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug673 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug673 @@ -5,7 +5,6 @@ auth_connect_timeout=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug694 b/maxscale-system-test/cnf/maxscale.cnf.template.bug694 index b145e7d8b..9435c1238 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug694 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug694 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug705 b/maxscale-system-test/cnf/maxscale.cnf.template.bug705 index c21b4f90e..a8926406f 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug705 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug705 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug711 b/maxscale-system-test/cnf/maxscale.cnf.template.bug711 index bf3ffe11e..3e0e976b1 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug711 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug711 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bug730 b/maxscale-system-test/cnf/maxscale.cnf.template.bug730 index cbfcdb021..b2c2bb2be 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bug730 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bug730 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.bulk_insert b/maxscale-system-test/cnf/maxscale.cnf.template.bulk_insert index d7bfc8a17..094452ca7 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.bulk_insert +++ b/maxscale-system-test/cnf/maxscale.cnf.template.bulk_insert @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.cache_basic b/maxscale-system-test/cnf/maxscale.cnf.template.cache_basic index 04c3308e2..1f6af8904 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.cache_basic +++ b/maxscale-system-test/cnf/maxscale.cnf.template.cache_basic @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.ccrfilter b/maxscale-system-test/cnf/maxscale.cnf.template.ccrfilter index 1883ddeb6..5b94effcf 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.ccrfilter +++ b/maxscale-system-test/cnf/maxscale.cnf.template.ccrfilter @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.check_backend b/maxscale-system-test/cnf/maxscale.cnf.template.check_backend index 3dd76b1a7..f72ea18d3 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.check_backend +++ b/maxscale-system-test/cnf/maxscale.cnf.template.check_backend @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.config_reload b/maxscale-system-test/cnf/maxscale.cnf.template.config_reload index e61ab0492..8a059494e 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.config_reload +++ b/maxscale-system-test/cnf/maxscale.cnf.template.config_reload @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.connection_limit b/maxscale-system-test/cnf/maxscale.cnf.template.connection_limit index 118fdd05d..c3e971672 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.connection_limit +++ b/maxscale-system-test/cnf/maxscale.cnf.template.connection_limit @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.fwf b/maxscale-system-test/cnf/maxscale.cnf.template.fwf index 8c9e1213b..7a0d19549 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.fwf +++ b/maxscale-system-test/cnf/maxscale.cnf.template.fwf @@ -5,7 +5,6 @@ query_classifier_args=log_unrecognized_statements=3 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.fwf_action b/maxscale-system-test/cnf/maxscale.cnf.template.fwf_action index 652f7e77b..0c1ac42e0 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.fwf_action +++ b/maxscale-system-test/cnf/maxscale.cnf.template.fwf_action @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.fwf_com_ping b/maxscale-system-test/cnf/maxscale.cnf.template.fwf_com_ping index 511a5a2ae..7008cf0b0 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.fwf_com_ping +++ b/maxscale-system-test/cnf/maxscale.cnf.template.fwf_com_ping @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.fwf_logging b/maxscale-system-test/cnf/maxscale.cnf.template.fwf_logging index de855516b..ec9a4055f 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.fwf_logging +++ b/maxscale-system-test/cnf/maxscale.cnf.template.fwf_logging @@ -10,7 +10,6 @@ protocol=MySQLBackend [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.gatekeeper b/maxscale-system-test/cnf/maxscale.cnf.template.gatekeeper index 7bce3ef9c..ea12e225e 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.gatekeeper +++ b/maxscale-system-test/cnf/maxscale.cnf.template.gatekeeper @@ -7,7 +7,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.hartmut b/maxscale-system-test/cnf/maxscale.cnf.template.hartmut index 2f651e5e1..99877da5b 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.hartmut +++ b/maxscale-system-test/cnf/maxscale.cnf.template.hartmut @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.hints b/maxscale-system-test/cnf/maxscale.cnf.template.hints index 8e45ac28b..0ac817ed2 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.hints +++ b/maxscale-system-test/cnf/maxscale.cnf.template.hints @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.hints2 b/maxscale-system-test/cnf/maxscale.cnf.template.hints2 index 575c19b22..5ed762087 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.hints2 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.hints2 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1,server2,server3,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.insertstream b/maxscale-system-test/cnf/maxscale.cnf.template.insertstream index d0b63d4e0..d9bde27e3 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.insertstream +++ b/maxscale-system-test/cnf/maxscale.cnf.template.insertstream @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.java_prep_stmt b/maxscale-system-test/cnf/maxscale.cnf.template.java_prep_stmt index 5002f8c5f..7887e5671 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.java_prep_stmt +++ b/maxscale-system-test/cnf/maxscale.cnf.template.java_prep_stmt @@ -5,7 +5,6 @@ log_warning=1 [galera Monitor] type=monitor module=galeramon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.keepalived.000 b/maxscale-system-test/cnf/maxscale.cnf.template.keepalived.000 index 7810d3583..c8fb69a10 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.keepalived.000 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.keepalived.000 @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.keepalived.001 b/maxscale-system-test/cnf/maxscale.cnf.template.keepalived.001 index c16a40c49..fbe67130b 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.keepalived.001 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.keepalived.001 @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.keepalived_masterdown.000 b/maxscale-system-test/cnf/maxscale.cnf.template.keepalived_masterdown.000 index 59cacc527..5f9165946 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.keepalived_masterdown.000 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.keepalived_masterdown.000 @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mariadbmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.keepalived_masterdown.001 b/maxscale-system-test/cnf/maxscale.cnf.template.keepalived_masterdown.001 index 50670da7c..688deecc9 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.keepalived_masterdown.001 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.keepalived_masterdown.001 @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mariadbmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.kerberos b/maxscale-system-test/cnf/maxscale.cnf.template.kerberos index 32b8b8243..e93d038d1 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.kerberos +++ b/maxscale-system-test/cnf/maxscale.cnf.template.kerberos @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.lag b/maxscale-system-test/cnf/maxscale.cnf.template.lag index 4a9fec583..9a43a8b85 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.lag +++ b/maxscale-system-test/cnf/maxscale.cnf.template.lag @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 detect_replication_lag=1 user=maxskysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.load b/maxscale-system-test/cnf/maxscale.cnf.template.load index aa6eb2ec9..12d7d35f2 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.load +++ b/maxscale-system-test/cnf/maxscale.cnf.template.load @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.load_pers1 b/maxscale-system-test/cnf/maxscale.cnf.template.load_pers1 index 6bb7af479..e79bcc540 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.load_pers1 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.load_pers1 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.load_pers10 b/maxscale-system-test/cnf/maxscale.cnf.template.load_pers10 index 8c0949bce..dbb745359 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.load_pers10 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.load_pers10 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.local_address b/maxscale-system-test/cnf/maxscale.cnf.template.local_address index 44bf3ae38..af1ab0b0b 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.local_address +++ b/maxscale-system-test/cnf/maxscale.cnf.template.local_address @@ -5,7 +5,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.longblob b/maxscale-system-test/cnf/maxscale.cnf.template.longblob index 732891a5a..86ff6d6b5 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.longblob +++ b/maxscale-system-test/cnf/maxscale.cnf.template.longblob @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.longblob_filters b/maxscale-system-test/cnf/maxscale.cnf.template.longblob_filters index d89a3357d..24d4f9c26 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.longblob_filters +++ b/maxscale-system-test/cnf/maxscale.cnf.template.longblob_filters @@ -5,7 +5,6 @@ log_info=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.masking_mysqltest b/maxscale-system-test/cnf/maxscale.cnf.template.masking_mysqltest index 37f1d68db..e82192246 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.masking_mysqltest +++ b/maxscale-system-test/cnf/maxscale.cnf.template.masking_mysqltest @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.master_only b/maxscale-system-test/cnf/maxscale.cnf.template.master_only index de5df66d2..b1c91b7c7 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.master_only +++ b/maxscale-system-test/cnf/maxscale.cnf.template.master_only @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.maxpasswd b/maxscale-system-test/cnf/maxscale.cnf.template.maxpasswd index 0d4c1122f..f3a313728 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.maxpasswd +++ b/maxscale-system-test/cnf/maxscale.cnf.template.maxpasswd @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.maxrows b/maxscale-system-test/cnf/maxscale.cnf.template.maxrows index 261315c2c..00abee5f3 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.maxrows +++ b/maxscale-system-test/cnf/maxscale.cnf.template.maxrows @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1045 b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1045 index b69ca8ed1..4e1ea2953 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1045 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1045 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1,server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1123 b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1123 index a10232875..bb2fc9a06 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1123 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1123 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs118 b/maxscale-system-test/cnf/maxscale.cnf.template.mxs118 index 482e34a75..459f37d15 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs118 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs118 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs127 b/maxscale-system-test/cnf/maxscale.cnf.template.mxs127 index 0287088f9..d351158cc 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs127 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs127 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1295 b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1295 index b5cb77c4e..3b864839c 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1295 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1295 @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1310_implicit_db b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1310_implicit_db index 8b1252ed6..eceed0afc 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1310_implicit_db +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1310_implicit_db @@ -5,7 +5,6 @@ log_info=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1323 b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1323 index 031dbf9a1..fdc311c3a 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1323 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1323 @@ -7,7 +7,6 @@ auth_connect_timeout=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1,server2 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1451_skip_auth b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1451_skip_auth index 43df64165..6203bd0f6 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1451_skip_auth +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1451_skip_auth @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1457_ignore_deleted b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1457_ignore_deleted index 14b88472a..039f812c8 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1457_ignore_deleted +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1457_ignore_deleted @@ -5,7 +5,6 @@ log_info=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1503_extra_slaves b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1503_extra_slaves index 3f007b208..701f7cf95 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1503_extra_slaves +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1503_extra_slaves @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1503_master_reconnection b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1503_master_reconnection index 91e80d0e8..a763720ab 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1503_master_reconnection +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1503_master_reconnection @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1506_delayed_retry b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1506_delayed_retry index 01856302d..2f42ced04 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1506_delayed_retry +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1506_delayed_retry @@ -5,7 +5,6 @@ log_info=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1507_trx_replay b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1507_trx_replay index 8db5b74a4..d64d023ff 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1507_trx_replay +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1507_trx_replay @@ -5,7 +5,6 @@ log_info=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1507_trx_stress b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1507_trx_stress new file mode 100644 index 000000000..b3d120c27 --- /dev/null +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1507_trx_stress @@ -0,0 +1,63 @@ +[maxscale] +threads=###threads### +log_info=1 + +[MySQL Monitor] +type=monitor +module=mysqlmon +servers=server1,server2,server3,server4 +user=maxskysql +passwd=skysql +monitor_interval=1000 +backend_connect_timeout=1 +backend_read_timeout=1 + + +[RW Split Router] +type=service +router=readwritesplit +servers=server1,server2,server3,server4 +user=maxskysql +passwd=skysql +transaction_replay=true +delayed_retry_timeout=30 + +[RW Split Listener] +type=listener +service=RW Split Router +protocol=MySQLClient +port=4006 + +[CLI] +type=service +router=cli + +[CLI Listener] +type=listener +service=CLI +protocol=maxscaled +socket=default + +[server1] +type=server +address=###node_server_IP_1### +port=###node_server_port_1### +protocol=MySQLBackend + +[server2] +type=server +address=###node_server_IP_2### +port=###node_server_port_2### +protocol=MySQLBackend + +[server3] +type=server +address=###node_server_IP_3### +port=###node_server_port_3### +protocol=MySQLBackend + +[server4] +type=server +address=###node_server_IP_4### +port=###node_server_port_4### +protocol=MySQLBackend diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1583_fwf b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1583_fwf index 8c9e1213b..7a0d19549 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1583_fwf +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1583_fwf @@ -5,7 +5,6 @@ query_classifier_args=log_unrecognized_statements=3 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1713_lots_of_databases b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1713_lots_of_databases index ff7ef6122..e85a7b884 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1713_lots_of_databases +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1713_lots_of_databases @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1731_empty_param b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1731_empty_param index 7816ef422..71ebb7e31 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1731_empty_param +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1731_empty_param @@ -28,7 +28,6 @@ protocol=MySQLBackend [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1743_rconn_bitmask b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1743_rconn_bitmask index 3cb1d090f..fa23d654e 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1743_rconn_bitmask +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1743_rconn_bitmask @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1760_use_sql_variables_in b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1760_use_sql_variables_in index be3db420f..cffb5b384 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs1760_use_sql_variables_in +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs1760_use_sql_variables_in @@ -4,7 +4,6 @@ threads=###threads### [MySQL-Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql password=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs359_error_on_write b/maxscale-system-test/cnf/maxscale.cnf.template.mxs359_error_on_write index 15eec8fbc..72a266821 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs359_error_on_write +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs359_error_on_write @@ -4,7 +4,6 @@ threads=###threads### [MySQL-Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs359_master_switch b/maxscale-system-test/cnf/maxscale.cnf.template.mxs359_master_switch index 234dd3266..167a294e4 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs359_master_switch +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs359_master_switch @@ -4,7 +4,6 @@ threads=###threads### [MySQL-Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs359_read_only b/maxscale-system-test/cnf/maxscale.cnf.template.mxs359_read_only index 639349a0c..ef2b01201 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs359_read_only +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs359_read_only @@ -4,7 +4,6 @@ threads=###threads### [MySQL-Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs361 b/maxscale-system-test/cnf/maxscale.cnf.template.mxs361 index 8f85d4b8a..f60762bf1 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs361 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs361 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs501 b/maxscale-system-test/cnf/maxscale.cnf.template.mxs501 index f02cb93c4..e8835f35c 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs501 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs501 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs548 b/maxscale-system-test/cnf/maxscale.cnf.template.mxs548 index f43430f78..9f1a809fc 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs548 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs548 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs559 b/maxscale-system-test/cnf/maxscale.cnf.template.mxs559 index 1cd8f26eb..5da95b567 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs559 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs559 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs710_bad_socket b/maxscale-system-test/cnf/maxscale.cnf.template.mxs710_bad_socket index 36294a748..6e6c80c98 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs710_bad_socket +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs710_bad_socket @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs711_two_ports b/maxscale-system-test/cnf/maxscale.cnf.template.mxs711_two_ports index fba1e0127..aec52737b 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs711_two_ports +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs711_two_ports @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs720_line_with_no_equal b/maxscale-system-test/cnf/maxscale.cnf.template.mxs720_line_with_no_equal index 337209132..305c506ff 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs720_line_with_no_equal +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs720_line_with_no_equal @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs720_wierd_line b/maxscale-system-test/cnf/maxscale.cnf.template.mxs720_wierd_line index 31a3bd49a..e67041560 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs720_wierd_line +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs720_wierd_line @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs722 b/maxscale-system-test/cnf/maxscale.cnf.template.mxs722 index 760e939ea..62dcdb4ae 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs722 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs722 @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs827_write_timeout b/maxscale-system-test/cnf/maxscale.cnf.template.mxs827_write_timeout index 8486e5244..80ccc850e 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs827_write_timeout +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs827_write_timeout @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.mxs922 b/maxscale-system-test/cnf/maxscale.cnf.template.mxs922 index af71b9a81..3830f9b9a 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.mxs922 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.mxs922 @@ -4,7 +4,6 @@ threads=###threads### [mysql-monitor] type=monitor module=mysqlmon -###repl51### user=maxskysql passwd=skysql monitor_interval=1000 diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.namedserverfilter b/maxscale-system-test/cnf/maxscale.cnf.template.namedserverfilter index dba6a0419..edd988c5a 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.namedserverfilter +++ b/maxscale-system-test/cnf/maxscale.cnf.template.namedserverfilter @@ -11,7 +11,6 @@ server=server2 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.no_ses_cmd_store b/maxscale-system-test/cnf/maxscale.cnf.template.no_ses_cmd_store index ac07e5cfc..ec057b57f 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.no_ses_cmd_store +++ b/maxscale-system-test/cnf/maxscale.cnf.template.no_ses_cmd_store @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.open_close b/maxscale-system-test/cnf/maxscale.cnf.template.open_close index fb4dae219..2417b74ba 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.open_close +++ b/maxscale-system-test/cnf/maxscale.cnf.template.open_close @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.pers_01 b/maxscale-system-test/cnf/maxscale.cnf.template.pers_01 index df4e68712..adb35eb92 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.pers_01 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.pers_01 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.regexfilter1 b/maxscale-system-test/cnf/maxscale.cnf.template.regexfilter1 index 0cdbf351f..1352e297c 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.regexfilter1 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.regexfilter1 @@ -72,7 +72,6 @@ port=4009 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.repl_lgc b/maxscale-system-test/cnf/maxscale.cnf.template.repl_lgc index 3e7477211..e37da0555 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.repl_lgc +++ b/maxscale-system-test/cnf/maxscale.cnf.template.repl_lgc @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.replication b/maxscale-system-test/cnf/maxscale.cnf.template.replication index e94023239..2e087e71e 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.replication +++ b/maxscale-system-test/cnf/maxscale.cnf.template.replication @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.replication.one_slave b/maxscale-system-test/cnf/maxscale.cnf.template.replication.one_slave index 8b8adc4a3..cda21fb89 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.replication.one_slave +++ b/maxscale-system-test/cnf/maxscale.cnf.template.replication.one_slave @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.rwsplit_multi_stmt b/maxscale-system-test/cnf/maxscale.cnf.template.rwsplit_multi_stmt index 52b3f29ba..2d93946a6 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.rwsplit_multi_stmt +++ b/maxscale-system-test/cnf/maxscale.cnf.template.rwsplit_multi_stmt @@ -5,7 +5,6 @@ log_info=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.rwsplit_read_only_trx b/maxscale-system-test/cnf/maxscale.cnf.template.rwsplit_read_only_trx index 500764e3c..cdefbfcff 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.rwsplit_read_only_trx +++ b/maxscale-system-test/cnf/maxscale.cnf.template.rwsplit_read_only_trx @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.rwsplit_readonly b/maxscale-system-test/cnf/maxscale.cnf.template.rwsplit_readonly index 00ab95699..248d18ee7 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.rwsplit_readonly +++ b/maxscale-system-test/cnf/maxscale.cnf.template.rwsplit_readonly @@ -4,7 +4,6 @@ threads=###threads### [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.schemarouter_duplicate_db b/maxscale-system-test/cnf/maxscale.cnf.template.schemarouter_duplicate_db index 03610cf67..30b9659ad 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.schemarouter_duplicate_db +++ b/maxscale-system-test/cnf/maxscale.cnf.template.schemarouter_duplicate_db @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.script b/maxscale-system-test/cnf/maxscale.cnf.template.script index 026748347..c6b1a3f8f 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.script +++ b/maxscale-system-test/cnf/maxscale.cnf.template.script @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.session_limits b/maxscale-system-test/cnf/maxscale.cnf.template.session_limits index c3a91c42d..c70846b20 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.session_limits +++ b/maxscale-system-test/cnf/maxscale.cnf.template.session_limits @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.sharding b/maxscale-system-test/cnf/maxscale.cnf.template.sharding index 3e775f747..4287a0d29 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.sharding +++ b/maxscale-system-test/cnf/maxscale.cnf.template.sharding @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.show_monitor_crash b/maxscale-system-test/cnf/maxscale.cnf.template.show_monitor_crash index bf4956aa7..ccaadf932 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.show_monitor_crash +++ b/maxscale-system-test/cnf/maxscale.cnf.template.show_monitor_crash @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql_bad passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.simplejavatest b/maxscale-system-test/cnf/maxscale.cnf.template.simplejavatest index 1ca3a6713..66154fb5d 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.simplejavatest +++ b/maxscale-system-test/cnf/maxscale.cnf.template.simplejavatest @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.sql_queries_pers1 b/maxscale-system-test/cnf/maxscale.cnf.template.sql_queries_pers1 index 8b1ef3abd..ab1049e55 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.sql_queries_pers1 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.sql_queries_pers1 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.sql_queries_pers10 b/maxscale-system-test/cnf/maxscale.cnf.template.sql_queries_pers10 index d4f8ce3e8..c661679df 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.sql_queries_pers10 +++ b/maxscale-system-test/cnf/maxscale.cnf.template.sql_queries_pers10 @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.ssl b/maxscale-system-test/cnf/maxscale.cnf.template.ssl index 41a0bb71a..38e22e9e8 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.ssl +++ b/maxscale-system-test/cnf/maxscale.cnf.template.ssl @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.ssl_load b/maxscale-system-test/cnf/maxscale.cnf.template.ssl_load index 9f6faa5f5..f5af0a2d3 100755 --- a/maxscale-system-test/cnf/maxscale.cnf.template.ssl_load +++ b/maxscale-system-test/cnf/maxscale.cnf.template.ssl_load @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1, server2,server3 ,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.user_cache b/maxscale-system-test/cnf/maxscale.cnf.template.user_cache index 52f474f30..efcd24883 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.user_cache +++ b/maxscale-system-test/cnf/maxscale.cnf.template.user_cache @@ -5,7 +5,6 @@ log_warning=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers= server1,server2,server3,server4 user=maxskysql passwd= skysql diff --git a/maxscale-system-test/cnf/maxscale.cnf.template.verify_master_failure b/maxscale-system-test/cnf/maxscale.cnf.template.verify_master_failure index a3238345f..98e6b884a 100644 --- a/maxscale-system-test/cnf/maxscale.cnf.template.verify_master_failure +++ b/maxscale-system-test/cnf/maxscale.cnf.template.verify_master_failure @@ -5,7 +5,6 @@ log_info=1 [MySQL Monitor] type=monitor module=mysqlmon -###repl51### servers=server1,server2,server3,server4 user=maxskysql passwd=skysql diff --git a/maxscale-system-test/mxs1507_trx_stress.cpp b/maxscale-system-test/mxs1507_trx_stress.cpp new file mode 100644 index 000000000..2edf35977 --- /dev/null +++ b/maxscale-system-test/mxs1507_trx_stress.cpp @@ -0,0 +1,87 @@ +/** + * MXS-1507: Transaction replay stress test + * + * https://jira.mariadb.org/browse/MXS-1507 + */ +#include "testconnections.h" +#include +#include +#include +#include + +using namespace std; + +atomic running{true}; + +void client_thr(TestConnections* test, int id) +{ + MYSQL* conn = test->maxscales->open_rwsplit_connection(); + + while (running && test->global_result == 0) + { + test->try_query(conn, "START TRANSACTION"); + test->try_query(conn, "INSERT INTO test.t1 (a) VALUES (%d)", id); + int last_id = mysql_insert_id(conn); + test->try_query(conn, "UPDATE test.t1 SET a = -1 WHERE id = %d", last_id); + test->try_query(conn, "COMMIT", id); + test->try_query(conn, "DELETE FROM test.t1 WHERE id = %d", last_id); + sleep(1); + } + + mysql_close(conn); +} + +int main(int argc, char** argv) +{ + Mariadb_nodes::require_gtid(true); + TestConnections test(argc, argv); + + test.repl->connect(); + + cout << "Creating table" << endl; + test.try_query(test.repl->nodes[0], "CREATE OR REPLACE TABLE " + "test.t1 (id int, a int)"); + + cout << "Syncing slaves" << endl; + test.repl->sync_slaves(); + + + cout << "Starting threads" << endl; + const int N_THREADS = 1; + vector threads; + + for (int i = 0; i < N_THREADS; i++) + { + threads.emplace_back(client_thr, &test, i); + } + + for (int i = 0; i < 5; i++) + { + sleep(10); + test.repl->block_node(0); + sleep(10); + test.repl->unblock_node(0); + } + + cout << "Stopping threads" << endl; + running = false; + + // Should be plenty of time for the threads to stop + test.set_timeout(60); + + for (auto& a : threads) + { + a.join(); + } + + test.stop_timeout(); + + test.repl->fix_replication(); + + test.repl->connect(); + execute_query_silent(test.repl->nodes[0], "DROP TABLE test.t1"); + execute_query_silent(test.repl->nodes[0], "DROP USER 'testuser'@'%'"); + test.repl->disconnect(); + + return test.global_result; +} diff --git a/maxscale-system-test/mxs1743_rconn_bitmask.cpp b/maxscale-system-test/mxs1743_rconn_bitmask.cpp index 3d3bba969..4543e37cd 100644 --- a/maxscale-system-test/mxs1743_rconn_bitmask.cpp +++ b/maxscale-system-test/mxs1743_rconn_bitmask.cpp @@ -4,12 +4,12 @@ * https://jira.mariadb.org/browse/MXS-1743 */ #include "testconnections.h" +#include int main(int argc, char** argv) { TestConnections test(argc, argv); - test.tprintf("Testing with both master and slave up"); test.maxscales->connect(); test.try_query(test.maxscales->conn_master[0], "SELECT 1"); @@ -31,6 +31,46 @@ int main(int argc, char** argv) test.try_query(test.maxscales->conn_master[0], "SELECT 1"); test.maxscales->disconnect(); test.repl->unblock_node(1); + sleep(5); + + test.tprintf("Checking that both the master and slave are used"); + std::vector connections; + + test.repl->connect(); + execute_query_silent(test.repl->nodes[0], "DROP USER IF EXISTS 'mxs1743'@'%'"); + test.try_query(test.repl->nodes[0], "%s", "CREATE USER 'mxs1743'@'%' IDENTIFIED BY 'mxs1743'"); + test.try_query(test.repl->nodes[0], "%s", "GRANT ALL ON *.* TO 'mxs1743'@'%'"); + test.repl->sync_slaves(); + + for (int i = 0; i < 20; i++) + { + // Open a connection and make sure it works + MYSQL* conn = open_conn(test.maxscales->readconn_master_port[0], test.maxscales->IP[0], + "mxs1743", "mxs1743", false); + test.try_query(conn, "SELECT 1"); + connections.push_back(conn); + } + + // Give the connections a few seconds to establish + sleep(5); + + std::string query = "SELECT COUNT(*) AS connections FROM information_schema.processlist WHERE user = 'mxs1743'"; + char master_connections[1024]; + char slave_connections[1024]; + find_field(test.repl->nodes[0], query.c_str(), "connections", master_connections); + find_field(test.repl->nodes[1], query.c_str(), "connections", slave_connections); + + test.assert(strcmp(master_connections, slave_connections) == 0, + "Master and slave shoud have the same amount of connections: %s != %s", + master_connections, slave_connections); + + for (auto a: connections) + { + mysql_close(a); + } + + execute_query_silent(test.repl->nodes[0], "DROP USER 'mxs1743'@'%'"); + test.repl->disconnect(); return test.global_result; } diff --git a/maxscale-system-test/mxs1896_load_data_infile.cpp b/maxscale-system-test/mxs1896_load_data_infile.cpp new file mode 100644 index 000000000..31bf863b5 --- /dev/null +++ b/maxscale-system-test/mxs1896_load_data_infile.cpp @@ -0,0 +1,32 @@ +/** + * MXS-1896: LOAD DATA INFILE is mistaken for LOAD DATA LOCAL INFILE + * + * https://jira.mariadb.org/browse/MXS-1896 + */ + +#include "testconnections.h" + +int main(int argc, char** argv) +{ + TestConnections test(argc, argv); + + test.set_timeout(30); + test.maxscales->connect(); + + test.try_query(test.maxscales->conn_rwsplit[0], "DROP TABLE IF EXISTS test.t1"); + test.try_query(test.maxscales->conn_rwsplit[0], "CREATE TABLE test.t1(id INT)"); + test.try_query(test.maxscales->conn_rwsplit[0], "INSERT INTO test.t1 VALUES (1), (2), (3)"); + test.try_query(test.maxscales->conn_rwsplit[0], "SELECT * FROM test.t1 INTO OUTFILE '/tmp/test.csv'"); + test.try_query(test.maxscales->conn_rwsplit[0], "LOAD DATA INFILE '/tmp/test.csv' INTO TABLE test.t1"); + test.try_query(test.maxscales->conn_rwsplit[0], "DROP TABLE test.t1"); + + test.maxscales->disconnect(); + + // Clean up the generated files + for (int i = 0; i < 4; i++) + { + test.repl->ssh_node_f(i, true, "rm -f /tmp/test.csv"); + } + + return test.global_result; +} diff --git a/maxscale-system-test/testconnections.cpp b/maxscale-system-test/testconnections.cpp index b8aab7d77..caad08b4d 100644 --- a/maxscale-system-test/testconnections.cpp +++ b/maxscale-system-test/testconnections.cpp @@ -628,10 +628,6 @@ void TestConnections::process_template(int m, const char *template_name, const c sprintf(str, "sed -i \"s|###access_homedir###|%s|g\" maxscale.cnf", maxscales->access_homedir[m]); system(str); - if (repl->v51) - { - system("sed -i \"s/###repl51###/mysql51_replication=true/g\" maxscale.cnf"); - } maxscales->copy_to_node_legacy((char *) "maxscale.cnf", (char *) dest, m); } diff --git a/query_classifier/qc_mysqlembedded/qc_mysqlembedded.cc b/query_classifier/qc_mysqlembedded/qc_mysqlembedded.cc index 8ea9ce177..07c813cf2 100644 --- a/query_classifier/qc_mysqlembedded/qc_mysqlembedded.cc +++ b/query_classifier/qc_mysqlembedded/qc_mysqlembedded.cc @@ -2001,7 +2001,7 @@ int32_t qc_mysql_get_operation(GWBUF* querybuf, int32_t* operation) break; case SQLCOM_LOAD: - *operation = QUERY_OP_LOAD; + *operation = QUERY_OP_LOAD_LOCAL; break; case SQLCOM_GRANT: diff --git a/query_classifier/qc_sqlite/qc_sqlite.cc b/query_classifier/qc_sqlite/qc_sqlite.cc index af49d29d8..a71e501e2 100644 --- a/query_classifier/qc_sqlite/qc_sqlite.cc +++ b/query_classifier/qc_sqlite/qc_sqlite.cc @@ -2327,13 +2327,13 @@ public: exposed_sqlite3SrcListDelete(pParse->db, pFullName); } - void maxscaleLoadData(Parse* pParse, SrcList* pFullName) + void maxscaleLoadData(Parse* pParse, SrcList* pFullName, int local) { ss_dassert(this_thread.initialized); m_status = QC_QUERY_PARSED; m_type_mask = QUERY_TYPE_WRITE; - m_operation = QUERY_OP_LOAD; + m_operation = local ? QUERY_OP_LOAD_LOCAL: QUERY_OP_LOAD; if (pFullName) { @@ -3299,7 +3299,7 @@ extern void maxscaleExecuteImmediate(Parse*, Token* pName, ExprSpan* pExprSpan, extern void maxscaleExplain(Parse*, Token* pNext); extern void maxscaleFlush(Parse*, Token* pWhat); extern void maxscaleHandler(Parse*, mxs_handler_t, SrcList* pFullName, Token* pName); -extern void maxscaleLoadData(Parse*, SrcList* pFullName); +extern void maxscaleLoadData(Parse*, SrcList* pFullName, int local); extern void maxscaleLock(Parse*, mxs_lock_t, SrcList*); extern void maxscalePrepare(Parse*, Token* pName, Expr* pStmt); extern void maxscalePrivileges(Parse*, int kind); @@ -4201,14 +4201,14 @@ void maxscaleHandler(Parse* pParse, mxs_handler_t type, SrcList* pFullName, Toke QC_EXCEPTION_GUARD(pInfo->maxscaleHandler(pParse, type, pFullName, pName)); } -void maxscaleLoadData(Parse* pParse, SrcList* pFullName) +void maxscaleLoadData(Parse* pParse, SrcList* pFullName, int local) { QC_TRACE(); QcSqliteInfo* pInfo = this_thread.pInfo; ss_dassert(pInfo); - QC_EXCEPTION_GUARD(pInfo->maxscaleLoadData(pParse, pFullName)); + QC_EXCEPTION_GUARD(pInfo->maxscaleLoadData(pParse, pFullName, local)); } void maxscaleLock(Parse* pParse, mxs_lock_t type, SrcList* pTables) diff --git a/query_classifier/qc_sqlite/sqlite-src-3110100/src/parse.y b/query_classifier/qc_sqlite/sqlite-src-3110100/src/parse.y index 21707bee2..bd08e3219 100644 --- a/query_classifier/qc_sqlite/sqlite-src-3110100/src/parse.y +++ b/query_classifier/qc_sqlite/sqlite-src-3110100/src/parse.y @@ -120,7 +120,7 @@ extern void maxscaleExecuteImmediate(Parse*, Token* pName, ExprSpan* pExprSpan, extern void maxscaleExplain(Parse*, Token* pNext); extern void maxscaleFlush(Parse*, Token* pWhat); extern void maxscaleHandler(Parse*, mxs_handler_t, SrcList* pFullName, Token* pName); -extern void maxscaleLoadData(Parse*, SrcList* pFullName); +extern void maxscaleLoadData(Parse*, SrcList* pFullName, int local); extern void maxscaleLock(Parse*, mxs_lock_t, SrcList*); extern void maxscalePrepare(Parse*, Token* pName, Expr* pStmt); extern void maxscalePrivileges(Parse*, int kind); @@ -2913,19 +2913,21 @@ handler ::= HANDLER nm(X) CLOSE. { //////////////////////// The LOAD DATA INFILE statement //////////////////////////////////// // +%type ld_local_opt {int} + cmd ::= load_data. ld_priority_opt ::= . ld_priority_opt ::= LOW_PRIORITY. ld_priority_opt ::= CONCURRENT. -ld_local_opt ::= . -ld_local_opt ::= LOCAL. +ld_local_opt(A) ::= . {A = 0;} +ld_local_opt(A) ::= LOCAL. {A = 1;} ld_charset_opt ::= . ld_charset_opt ::= CHARACTER SET ids. -load_data ::= LOAD DATA ld_priority_opt ld_local_opt +load_data ::= LOAD DATA ld_priority_opt ld_local_opt(Y) INFILE STRING ignore_or_replace_opt INTO TABLE fullname(X) /* ld_partition_opt */ @@ -2935,7 +2937,7 @@ load_data ::= LOAD DATA ld_priority_opt ld_local_opt /* ld_col_name_or_user_var_opt */ /* ld_set */. { - maxscaleLoadData(pParse, X); + maxscaleLoadData(pParse, X, Y); } //////////////////////// The LOCK/UNLOCK statement //////////////////////////////////// diff --git a/server/core/config.cc b/server/core/config.cc index 6d9244e9a..931617841 100644 --- a/server/core/config.cc +++ b/server/core/config.cc @@ -579,7 +579,7 @@ static int ini_handler(void *userdata, const char *section, const char *name, co if (strcmp(section, CN_GATEWAY) == 0 || strcasecmp(section, CN_MAXSCALE) == 0) { - if (is_root_config_file) + if (is_root_config_file || is_persisted_config) { return handle_global_item(name, value); } diff --git a/server/core/load_utils.cc b/server/core/load_utils.cc index 1f34b49e1..dad21303c 100644 --- a/server/core/load_utils.cc +++ b/server/core/load_utils.cc @@ -482,7 +482,7 @@ bool modulecmd_cb(const MODULECMD *cmd, void *data) std::string s = d->domain; s += "/"; s += cmd->identifier; - ss_dassert(strcmp(d->domain, cmd->domain) == 0); + ss_dassert(strcasecmp(d->domain, cmd->domain) == 0); json_object_set_new(obj, CN_LINKS, mxs_json_self_link(d->host, CN_MODULES, s.c_str())); json_object_set_new(attr, CN_PARAMETERS, param); diff --git a/server/core/query_classifier.cc b/server/core/query_classifier.cc index 2cf3dfa96..787abd21b 100644 --- a/server/core/query_classifier.cc +++ b/server/core/query_classifier.cc @@ -389,6 +389,9 @@ const char* qc_op_to_string(qc_query_op_t op) case QUERY_OP_LOAD: return "QUERY_OP_LOAD"; + case QUERY_OP_LOAD_LOCAL: + return "QUERY_OP_LOAD_LOCAL"; + case QUERY_OP_REVOKE: return "QUERY_OP_REVOKE"; diff --git a/server/modules/filter/dbfwfilter/dbfwfilter.hh b/server/modules/filter/dbfwfilter/dbfwfilter.hh index 738ef128d..1cc3dec9a 100644 --- a/server/modules/filter/dbfwfilter/dbfwfilter.hh +++ b/server/modules/filter/dbfwfilter/dbfwfilter.hh @@ -85,6 +85,7 @@ static inline fw_op_t qc_op_to_fw_op(qc_query_op_t op) case QUERY_OP_INSERT: return FW_OP_INSERT; + case QUERY_OP_LOAD_LOCAL: case QUERY_OP_LOAD: return FW_OP_LOAD; @@ -288,4 +289,4 @@ char* create_error(const char* format, ...); */ bool rule_matches(Dbfw* my_instance, DbfwSession* my_session, GWBUF *queue, SRule rule, char* query); -bool rule_is_active(SRule rule); \ No newline at end of file +bool rule_is_active(SRule rule); diff --git a/server/modules/routing/avrorouter/avro_file.cc b/server/modules/routing/avrorouter/avro_file.cc index 5d31c6bf6..903d10e68 100644 --- a/server/modules/routing/avrorouter/avro_file.cc +++ b/server/modules/routing/avrorouter/avro_file.cc @@ -588,6 +588,10 @@ avro_binlog_end_t avro_read_all_events(Avro *router) int n_events = hdr.event_size - event_header_length - BLRM_FDE_EVENT_TYPES_OFFSET - FDE_EXTRA_BYTES; uint8_t* checksum = ptr + hdr.event_size - event_header_length - FDE_EXTRA_BYTES; + // Precaution to prevent writing too much in case new events are added + int real_len = MXS_MIN(n_events, (int)sizeof(router->event_type_hdr_lens)); + memcpy(router->event_type_hdr_lens, ptr + BLRM_FDE_EVENT_TYPES_OFFSET, real_len); + router->event_types = n_events; router->binlog_checksum = checksum[0]; } diff --git a/server/modules/routing/readconnroute/readconnroute.cc b/server/modules/routing/readconnroute/readconnroute.cc index f2560e44d..d14a5af4f 100644 --- a/server/modules/routing/readconnroute/readconnroute.cc +++ b/server/modules/routing/readconnroute/readconnroute.cc @@ -344,7 +344,7 @@ newSession(MXS_ROUTER *instance, MXS_SESSION *session) continue; } - if (ref == master_host && (inst->bitvalue & SERVER_MASTER)) + if (ref == master_host && inst->bitvalue == SERVER_MASTER) { /* If option is "master" return only the root Master as there could be * intermediate masters (Relay Servers) and they must not be selected. diff --git a/server/modules/routing/readwritesplit/rwsplitsession.cc b/server/modules/routing/readwritesplit/rwsplitsession.cc index 3011a1313..572a2c5ba 100644 --- a/server/modules/routing/readwritesplit/rwsplitsession.cc +++ b/server/modules/routing/readwritesplit/rwsplitsession.cc @@ -321,7 +321,7 @@ void RWSplitSession::correct_packet_sequence(GWBUF *buffer) } } -static void log_unexpected_response(DCB* dcb, GWBUF* buffer) +static void log_unexpected_response(SRWBackend& backend, GWBUF* buffer, GWBUF* current_query) { if (mxs_mysql_is_err_packet(buffer)) { @@ -336,21 +336,23 @@ static void log_unexpected_response(DCB* dcb, GWBUF* buffer) if (errcode == ER_CONNECTION_KILLED) { MXS_INFO("Connection from '%s'@'%s' to '%s' was killed", - dcb->session->client_dcb->user, - dcb->session->client_dcb->remote, - dcb->server->name); + backend->dcb()->session->client_dcb->user, + backend->dcb()->session->client_dcb->remote, + backend->name()); } else { MXS_WARNING("Server '%s' sent an unexpected error: %hu, %s", - dcb->server->name, errcode, errstr.c_str()); + backend->name(), errcode, errstr.c_str()); } } else { + std::string sql = current_query ? mxs::extract_sql(current_query, 1024) : ""; MXS_ERROR("Unexpected internal state: received response 0x%02hhx from " - "server '%s' when no response was expected", - mxs_mysql_get_command(buffer), dcb->server->name); + "server '%s' when no response was expected. Command: 0x%02hhx " + "Query: %s", mxs_mysql_get_command(buffer), backend->name(), + backend->current_command(), sql.c_str()); ss_dassert(false); } } @@ -385,39 +387,57 @@ GWBUF* RWSplitSession::handle_causal_read_reply(GWBUF *writebuf, SRWBackend& bac void RWSplitSession::handle_trx_replay() { - if (m_replayed_trx.empty()) - { - // No more statements to execute - m_is_replay_active = false; - atomic_add_uint64(&m_router->stats().n_trx_replay, 1); - - // Check that the checksums match. - SHA1Checksum chksum = m_trx.checksum(); - chksum.finalize(); - - if (chksum == m_replayed_trx.checksum()) - { - MXS_INFO("Checksums match, replay successful."); - - if (m_interrupted_query.get()) - { - MXS_INFO("Resuming execution: %s", mxs::extract_sql(m_interrupted_query.get()).c_str()); - retry_query(m_interrupted_query.release(), 0); - } - } - else - { - MXS_INFO("Checksum mismatch, transaction replay failed. Closing connection."); - poll_fake_hangup_event(m_client); - } - } - else + if (m_replayed_trx.have_stmts()) { // More statements to replay, pop the oldest one and execute it GWBUF* buf = m_replayed_trx.pop_stmt(); MXS_INFO("Replaying: %s", mxs::extract_sql(buf, 1024).c_str()); retry_query(buf, 0); } + else + { + // No more statements to execute + m_is_replay_active = false; + atomic_add_uint64(&m_router->stats().n_trx_replay, 1); + + if (!m_replayed_trx.empty()) + { + // Check that the checksums match. + SHA1Checksum chksum = m_trx.checksum(); + chksum.finalize(); + + if (chksum == m_replayed_trx.checksum()) + { + MXS_INFO("Checksums match, replay successful."); + + if (m_interrupted_query.get()) + { + MXS_INFO("Resuming execution: %s", mxs::extract_sql(m_interrupted_query.get()).c_str()); + retry_query(m_interrupted_query.release(), 0); + } + } + else + { + MXS_INFO("Checksum mismatch, transaction replay failed. Closing connection."); + modutil_send_mysql_err_packet(m_client, 0, 0, 1927, "08S01", + "Transaction checksum mismatch encountered " + "when replaying transaction."); + poll_fake_hangup_event(m_client); + } + } + else + { + /** + * The transaction was "empty". This means that the start of the transaction + * did not finish before we started the replay process. + * + * The transaction that is being currently replayed has a result, + * whereas the original interrupted transaction had none. Due to this, + * the checksums would not match if they were to be compared. + */ + ss_info_dassert(!m_interrupted_query.get(), "Interrupted query should be empty"); + } + } } void RWSplitSession::clientReply(GWBUF *writebuf, DCB *backend_dcb) @@ -431,7 +451,7 @@ void RWSplitSession::clientReply(GWBUF *writebuf, DCB *backend_dcb) /** If we receive an unexpected response from the server, the internal * logic cannot handle this situation. Routing the reply straight to * the client should be the safest thing to do at this point. */ - log_unexpected_response(backend_dcb, writebuf); + log_unexpected_response(backend, writebuf, m_current_query.get()); MXS_SESSION_ROUTE_REPLY(backend_dcb->session, writebuf); return; } @@ -499,9 +519,24 @@ void RWSplitSession::clientReply(GWBUF *writebuf, DCB *backend_dcb) ss_dassert(m_config.transaction_replay); handle_trx_replay(); - // Ignore the response, the client doesn't need it - gwbuf_free(writebuf); - return; + /** + * If the start of the transaction was interrupted, we need to return + * the result to the client. + * + * This retrying of START TRANSACTION is done with the transaction replay + * mechanism instead of the normal query retry mechanism because the safeguards + * in the routing logic prevent retrying of individual queries inside transactions. + * + * If the transaction was not empty and some results have already been + * sent to the client, we must discard all responses that the client already has. + */ + + if (!m_replayed_trx.empty()) + { + // Client already has this response, discard it + gwbuf_free(writebuf); + return; + } } else if (m_config.transaction_replay && session_trx_is_ending(m_client->session)) { @@ -564,23 +599,47 @@ bool RWSplitSession::start_trx_replay() if (!m_is_replay_active && m_config.transaction_replay && m_can_replay_trx) { - // Stash any interrupted queries while we replay the transaction - m_interrupted_query.reset(m_current_query.release()); + if (m_trx.have_stmts() || m_current_query.get()) + { + // Stash any interrupted queries while we replay the transaction + m_interrupted_query.reset(m_current_query.release()); - MXS_INFO("Starting transaction replay"); - m_is_replay_active = true; + MXS_INFO("Starting transaction replay"); + m_is_replay_active = true; - /** - * Copy the transaction for replaying and finalize it. This - * allows the checksums to be compared. The current transaction - * is closed as the replaying opens a new transaction. - */ - m_replayed_trx = m_trx; - m_replayed_trx.finalize(); - m_trx.close(); + /** + * Copy the transaction for replaying and finalize it. This + * allows the checksums to be compared. The current transaction + * is closed as the replaying opens a new transaction. + */ + m_replayed_trx = m_trx; + m_replayed_trx.finalize(); + m_trx.close(); + + if (m_replayed_trx.have_stmts()) + { + // Pop the first statement and start replaying the transaction + retry_query(m_replayed_trx.pop_stmt(), 0); + } + else + { + /** + * The transaction was only opened and no queries have been + * executed. The buffer should contain a query that starts + * a transaction. + */ + ss_info_dassert(qc_get_trx_type_mask(m_interrupted_query.get()) & QUERY_TYPE_BEGIN_TRX, + "The current query should start a transaction"); + retry_query(m_interrupted_query.release(), 0); + } + } + else + { + ss_info_dassert(!session_is_autocommit(m_client->session), + "Session should have autocommit disabled if the transaction " + "had no statements and no query was interrupted"); + } - // Pop the first statement and start replaying the transaction - retry_query(m_replayed_trx.pop_stmt(), 0); rval = true; } diff --git a/server/modules/routing/readwritesplit/trx.hh b/server/modules/routing/readwritesplit/trx.hh index ace350a0b..11c677c77 100644 --- a/server/modules/routing/readwritesplit/trx.hh +++ b/server/modules/routing/readwritesplit/trx.hh @@ -83,13 +83,27 @@ public: } /** - * Check if transaction is empty + * Check if transaction has statements * - * @return True if transaction has no statements + * @return True if transaction has statements + * + * @note This function should only be used when checking whether a transaction + * that is being replayed has ended. The empty() method can be used + * to check whether statements were added to the transaction. + */ + bool have_stmts() const + { + return !m_log.empty(); + } + + /** + * Check whether the transaction is empty + * + * @return True if no statements have been added to the transaction */ bool empty() const { - return m_log.empty(); + return m_size == 0; } /** diff --git a/server/modules/routing/schemarouter/schemaroutersession.cc b/server/modules/routing/schemarouter/schemaroutersession.cc index 4004016e0..31e8c6980 100644 --- a/server/modules/routing/schemarouter/schemaroutersession.cc +++ b/server/modules/routing/schemarouter/schemaroutersession.cc @@ -424,7 +424,7 @@ int32_t SchemaRouterSession::routeQuery(GWBUF* pPacket) /** We know where to route this query */ SSRBackend bref = get_bref_from_dcb(target_dcb); - if (op == QUERY_OP_LOAD) + if (op == QUERY_OP_LOAD_LOCAL) { m_load_target = bref->backend()->server; }