From f0588c00da022fc26af61a562f01e1949565ddf0 Mon Sep 17 00:00:00 2001 From: Johan Wikman Date: Fri, 1 Jun 2018 13:56:55 +0300 Subject: [PATCH 01/16] Update change log and add release notes --- Documentation/Changelog.md | 1 + .../MaxScale-2.2.8-Release-Notes.md | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 Documentation/Release-Notes/MaxScale-2.2.8-Release-Notes.md 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..d44589f8b --- /dev/null +++ b/Documentation/Release-Notes/MaxScale-2.2.8-Release-Notes.md @@ -0,0 +1,34 @@ +# MariaDB MaxScale 2.2.8 Release Notes -- 2018-06 + +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). From 0ded185beeb94d5fbc538368f6d2d4dec13229d4 Mon Sep 17 00:00:00 2001 From: Johan Wikman Date: Mon, 4 Jun 2018 13:23:33 +0300 Subject: [PATCH 02/16] Remove release date MaxScale 2.2.8 will not officially be released. --- Documentation/Release-Notes/MaxScale-2.2.8-Release-Notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/Release-Notes/MaxScale-2.2.8-Release-Notes.md b/Documentation/Release-Notes/MaxScale-2.2.8-Release-Notes.md index d44589f8b..2aba1492b 100644 --- a/Documentation/Release-Notes/MaxScale-2.2.8-Release-Notes.md +++ b/Documentation/Release-Notes/MaxScale-2.2.8-Release-Notes.md @@ -1,4 +1,4 @@ -# MariaDB MaxScale 2.2.8 Release Notes -- 2018-06 +# MariaDB MaxScale 2.2.8 Release Notes Release 2.2.8 is a GA release. From bc1aff343f79d0523d471fd8f2f704ba7d77ef96 Mon Sep 17 00:00:00 2001 From: Johan Wikman Date: Mon, 4 Jun 2018 11:02:31 +0300 Subject: [PATCH 03/16] Add document on branching and tagging Easier to ensure it stays up to date if it is kept among the source rather than in the GitHub wiki-page or the intranet. --- Development/branching-and-tagging.md | 118 +++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 Development/branching-and-tagging.md diff --git a/Development/branching-and-tagging.md b/Development/branching-and-tagging.md new file mode 100644 index 000000000..77227bb83 --- /dev/null +++ b/Development/branching-and-tagging.md @@ -0,0 +1,118 @@ +# Branching and Tagging + +## Overview + +This document describes how git branches and tags are used in the MaxScale +development. + +## Releases + +The releases of MaxScale are numbered as `X.Y.Z` where `X` denotes the +major version (currently is `2` and changes very rarely), where `Y` denotes +the minor version (when changed, implies the introduction of new features), +and where `Z` denotes the maintenance version (when changed, implies that +bugs have been fixed). + +When `X` changes, `Y` is reset to 0 and when `Y` changes, `Z` is reset to +0. + +## Branches + +## Two kinds + +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 are development +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`. From a0ffde9271cadee5f4888b9822bb084977893e1e Mon Sep 17 00:00:00 2001 From: Johan Wikman Date: Mon, 4 Jun 2018 13:26:05 +0300 Subject: [PATCH 04/16] Update version number --- VERSION22.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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") From 03f4067bcb57f409ba1c9ecf1ea8fc0f771676a3 Mon Sep 17 00:00:00 2001 From: Johan Wikman Date: Mon, 4 Jun 2018 13:29:46 +0300 Subject: [PATCH 05/16] Update release date of 2.2.8 It will not officially be released, but we must import the documentation nonetheless as otherwise it's not possible to refer to the 2.2.8 release notes and that's needed because the bugs fixed in 2.2.8 are still fixed in 2.2.8 and not 2.2.9. --- Documentation/Release-Notes/MaxScale-2.2.8-Release-Notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/Release-Notes/MaxScale-2.2.8-Release-Notes.md b/Documentation/Release-Notes/MaxScale-2.2.8-Release-Notes.md index 2aba1492b..c633b0d7e 100644 --- a/Documentation/Release-Notes/MaxScale-2.2.8-Release-Notes.md +++ b/Documentation/Release-Notes/MaxScale-2.2.8-Release-Notes.md @@ -1,4 +1,4 @@ -# MariaDB MaxScale 2.2.8 Release Notes +# MariaDB MaxScale 2.2.8 Release Notes -- Not Released Release 2.2.8 is a GA release. From c88aa11e11a6e1b59c764d2ab658230b5ccd9512 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Mon, 28 May 2018 11:38:59 +0300 Subject: [PATCH 06/16] Copy FDE events in avrorouter Commit 67386980e327ad063b24cb55971cf44f4930e241 caused the actual events to be ignored. This meant that the larger event size was assumed for all events. In most cases this works but it is not the correct way to do it. --- server/modules/routing/avrorouter/avro_file.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/server/modules/routing/avrorouter/avro_file.c b/server/modules/routing/avrorouter/avro_file.c index d37da88ce..404737d72 100644 --- a/server/modules/routing/avrorouter/avro_file.c +++ b/server/modules/routing/avrorouter/avro_file.c @@ -647,6 +647,10 @@ avro_binlog_end_t avro_read_all_events(AVRO_INSTANCE *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, 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]; } From cddcc6d7d56f282c4da2d7013e4dd77989331e5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Sat, 2 Jun 2018 22:24:51 +0300 Subject: [PATCH 07/16] MXS-1896: Distinct LOAD DATA LOCAL INFILE from LOAD DATA INFILE The two operations return different types of results and need to be treated differently in order for them to be handled correctly in 2.2. This fixes the unexpected internal state errors that happened in all 2.2 versions due to a wrong assumption made by readwritesplit. This fix is not necessary for newer versions as the LOAD DATA LOCAL INFILE processing is done with a simpler, and more robust, method. --- include/maxscale/query_classifier.h | 1 + maxscale-system-test/CMakeLists.txt | 4 +++ .../mxs1896_load_data_infile.cpp | 32 +++++++++++++++++++ .../qc_mysqlembedded/qc_mysqlembedded.cc | 2 +- query_classifier/qc_sqlite/qc_sqlite.cc | 10 +++--- .../qc_sqlite/sqlite-src-3110100/src/parse.y | 12 ++++--- server/core/query_classifier.cc | 3 ++ .../modules/filter/dbfwfilter/dbfwfilter.hh | 3 +- .../readwritesplit/rwsplit_route_stmt.cc | 2 +- .../schemarouter/schemaroutersession.cc | 2 +- 10 files changed, 57 insertions(+), 14 deletions(-) create mode 100644 maxscale-system-test/mxs1896_load_data_infile.cpp 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/maxscale-system-test/CMakeLists.txt b/maxscale-system-test/CMakeLists.txt index 827a588fc..ff121b91a 100644 --- a/maxscale-system-test/CMakeLists.txt +++ b/maxscale-system-test/CMakeLists.txt @@ -658,6 +658,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/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/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/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/readwritesplit/rwsplit_route_stmt.cc b/server/modules/routing/readwritesplit/rwsplit_route_stmt.cc index b0ba764af..3b2059e8e 100644 --- a/server/modules/routing/readwritesplit/rwsplit_route_stmt.cc +++ b/server/modules/routing/readwritesplit/rwsplit_route_stmt.cc @@ -881,7 +881,7 @@ handle_multi_temp_and_load(RWSplitSession *rses, GWBUF *querybuf, else if (is_packet_a_query(packet_type)) { qc_query_op_t queryop = qc_get_operation(querybuf); - if (queryop == QUERY_OP_LOAD) + if (queryop == QUERY_OP_LOAD_LOCAL) { rses->load_data_state = LOAD_DATA_START; rses->rses_load_data_sent = 0; diff --git a/server/modules/routing/schemarouter/schemaroutersession.cc b/server/modules/routing/schemarouter/schemaroutersession.cc index 092cb1ecd..dd77f2d91 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; } From da4397a50132e9d5189b6968bb83f6c4950abcbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Mon, 4 Jun 2018 06:32:30 +0300 Subject: [PATCH 08/16] MXS-1743: Expand test case to cover load balancing The test case now verifies that the servers are actually load balanced correctly. This test reveals a problem in the readconnroute; the master is always preferred over slaves if one is available with router_options=master,slave. --- .../mxs1743_rconn_bitmask.cpp | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/maxscale-system-test/mxs1743_rconn_bitmask.cpp b/maxscale-system-test/mxs1743_rconn_bitmask.cpp index 3d3bba969..949783662 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,44 @@ 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++) + { + connections.push_back(open_conn(test.maxscales->readconn_master_port[0], + test.maxscales->IP[0], "mxs1743", + "mxs1743", false)); + } + + // 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; } From d22f6d7b1c29b30141cc122e3f6e119ff7a98825 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Mon, 4 Jun 2018 06:46:38 +0300 Subject: [PATCH 09/16] MXS-1743: Fix load balancing with router_options=master,slave The code that selects the candidate backend always returned the root master if the server bitmask contained the master bit. This should only be done if the master bit is the only bit in the bitmask and when there are other bits, the normal candidate selection code should be used. Also added a query to the expanded test case to make sure the connection actually works. --- maxscale-system-test/mxs1743_rconn_bitmask.cpp | 8 +++++--- server/modules/routing/readconnroute/readconnroute.c | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/maxscale-system-test/mxs1743_rconn_bitmask.cpp b/maxscale-system-test/mxs1743_rconn_bitmask.cpp index 949783662..4543e37cd 100644 --- a/maxscale-system-test/mxs1743_rconn_bitmask.cpp +++ b/maxscale-system-test/mxs1743_rconn_bitmask.cpp @@ -44,9 +44,11 @@ int main(int argc, char** argv) for (int i = 0; i < 20; i++) { - connections.push_back(open_conn(test.maxscales->readconn_master_port[0], - test.maxscales->IP[0], "mxs1743", - "mxs1743", false)); + // 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 diff --git a/server/modules/routing/readconnroute/readconnroute.c b/server/modules/routing/readconnroute/readconnroute.c index 278c65d24..1987fb38e 100644 --- a/server/modules/routing/readconnroute/readconnroute.c +++ b/server/modules/routing/readconnroute/readconnroute.c @@ -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. From 306beb05cdd0373d92c615089a1897427e2ab875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Mon, 4 Jun 2018 11:30:39 +0300 Subject: [PATCH 10/16] MXS-1899: Allow generated [maxscale] sections The generated configuration file contains a [maxscale] section which should not be treated as an error. --- server/core/config.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/core/config.cc b/server/core/config.cc index 48133db96..ea7ad9aaa 100644 --- a/server/core/config.cc +++ b/server/core/config.cc @@ -526,7 +526,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); } From 9d0b1be08b34f67e7dcd0f2177774970285e9072 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Mon, 4 Jun 2018 11:58:13 +0300 Subject: [PATCH 11/16] Improve unexpected response error message The message now logs the current command and the query if it is available. --- .../routing/readwritesplit/readwritesplit.cc | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/server/modules/routing/readwritesplit/readwritesplit.cc b/server/modules/routing/readwritesplit/readwritesplit.cc index 8ef88e23c..3d8e59f69 100644 --- a/server/modules/routing/readwritesplit/readwritesplit.cc +++ b/server/modules/routing/readwritesplit/readwritesplit.cc @@ -1123,7 +1123,7 @@ static json_t* diagnostics_json(const MXS_ROUTER *instance) return rval; } -static void log_unexpected_response(DCB* dcb, GWBUF* buffer) +static void log_unexpected_response(SRWBackend& backend, GWBUF* buffer) { if (mxs_mysql_is_err_packet(buffer)) { @@ -1138,21 +1138,27 @@ 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->unique_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->unique_name, errcode, errstr.c_str()); + backend->name(), errcode, errstr.c_str()); } } else { + char* sql = session_have_stmt(backend->dcb()->session) ? + modutil_get_SQL(backend->dcb()->session->stmt.buffer) : + NULL; MXS_ERROR("Unexpected internal state: received response 0x%02hhx from " - "server '%s' when no response was expected", - mxs_mysql_get_command(buffer), dcb->server->unique_name); + "server '%s' when no response was expected. Command: 0x%02hhx " + "Query: %s", mxs_mysql_get_command(buffer), backend->name(), + backend->current_command(), sql ? sql : ""); + MXS_FREE(sql); + ss_dassert(false); } } @@ -1188,7 +1194,7 @@ static void clientReply(MXS_ROUTER *instance, /** 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); MXS_SESSION_ROUTE_REPLY(backend_dcb->session, writebuf); return; } From e858ef672c990056401bcc6f8c5ba3ce35c882a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Mon, 28 May 2018 11:44:55 +0300 Subject: [PATCH 12/16] Fix moudle command debug assertion The names can be of different case. --- server/core/load_utils.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); From 74cc74ed66b3d1c6862932322d0f45d537763569 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Sat, 2 Jun 2018 23:03:30 +0300 Subject: [PATCH 13/16] Remove MySQL 5.1 support from tests Removed the configuration parameter template and the code that uses it. --- maxscale-system-test/cnf/maxscale.cnf.template.add_server | 1 - maxscale-system-test/cnf/maxscale.cnf.template.add_service | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bad_pers | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bad_ssl | 1 - maxscale-system-test/cnf/maxscale.cnf.template.batchinsert | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug359 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug471 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug479 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug493 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug495 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug526 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug539 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug547 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug567 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug571 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug585 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug587 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug587_1 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug601 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug620 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug643 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug643_1 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug645 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug645_1 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug648 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug650 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug657 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug662 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug664 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug670 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug673 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug694 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug705 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug711 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bug730 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.bulk_insert | 1 - maxscale-system-test/cnf/maxscale.cnf.template.cache_basic | 1 - maxscale-system-test/cnf/maxscale.cnf.template.ccrfilter | 1 - maxscale-system-test/cnf/maxscale.cnf.template.check_backend | 1 - maxscale-system-test/cnf/maxscale.cnf.template.config_reload | 1 - .../cnf/maxscale.cnf.template.connection_limit | 1 - maxscale-system-test/cnf/maxscale.cnf.template.fwf | 1 - maxscale-system-test/cnf/maxscale.cnf.template.fwf_action | 1 - maxscale-system-test/cnf/maxscale.cnf.template.fwf_com_ping | 1 - maxscale-system-test/cnf/maxscale.cnf.template.fwf_logging | 1 - maxscale-system-test/cnf/maxscale.cnf.template.gatekeeper | 1 - maxscale-system-test/cnf/maxscale.cnf.template.hartmut | 1 - maxscale-system-test/cnf/maxscale.cnf.template.hints | 1 - maxscale-system-test/cnf/maxscale.cnf.template.hints2 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.insertstream | 1 - maxscale-system-test/cnf/maxscale.cnf.template.java_prep_stmt | 1 - maxscale-system-test/cnf/maxscale.cnf.template.keepalived.000 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.keepalived.001 | 1 - .../cnf/maxscale.cnf.template.keepalived_masterdown.000 | 1 - .../cnf/maxscale.cnf.template.keepalived_masterdown.001 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.kerberos | 1 - maxscale-system-test/cnf/maxscale.cnf.template.lag | 1 - maxscale-system-test/cnf/maxscale.cnf.template.load | 1 - maxscale-system-test/cnf/maxscale.cnf.template.load_pers1 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.load_pers10 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.local_address | 1 - maxscale-system-test/cnf/maxscale.cnf.template.longblob | 1 - .../cnf/maxscale.cnf.template.longblob_filters | 1 - .../cnf/maxscale.cnf.template.masking_mysqltest | 1 - maxscale-system-test/cnf/maxscale.cnf.template.master_only | 1 - maxscale-system-test/cnf/maxscale.cnf.template.maxpasswd | 1 - maxscale-system-test/cnf/maxscale.cnf.template.maxrows | 1 - maxscale-system-test/cnf/maxscale.cnf.template.mxs1045 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.mxs1123 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.mxs118 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.mxs127 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.mxs1295 | 1 - .../cnf/maxscale.cnf.template.mxs1310_implicit_db | 1 - maxscale-system-test/cnf/maxscale.cnf.template.mxs1323 | 1 - .../cnf/maxscale.cnf.template.mxs1451_skip_auth | 1 - .../cnf/maxscale.cnf.template.mxs1457_ignore_deleted | 1 - .../cnf/maxscale.cnf.template.mxs1503_extra_slaves | 1 - .../cnf/maxscale.cnf.template.mxs1503_master_reconnection | 1 - .../cnf/maxscale.cnf.template.mxs1506_delayed_retry | 1 - .../cnf/maxscale.cnf.template.mxs1507_trx_replay | 1 - maxscale-system-test/cnf/maxscale.cnf.template.mxs1583_fwf | 1 - .../cnf/maxscale.cnf.template.mxs1713_lots_of_databases | 1 - .../cnf/maxscale.cnf.template.mxs1731_empty_param | 1 - .../cnf/maxscale.cnf.template.mxs1743_rconn_bitmask | 1 - .../cnf/maxscale.cnf.template.mxs1760_use_sql_variables_in | 1 - .../cnf/maxscale.cnf.template.mxs359_error_on_write | 1 - .../cnf/maxscale.cnf.template.mxs359_master_switch | 1 - .../cnf/maxscale.cnf.template.mxs359_read_only | 1 - maxscale-system-test/cnf/maxscale.cnf.template.mxs361 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.mxs501 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.mxs548 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.mxs559 | 1 - .../cnf/maxscale.cnf.template.mxs710_bad_socket | 1 - .../cnf/maxscale.cnf.template.mxs711_two_ports | 1 - .../cnf/maxscale.cnf.template.mxs720_line_with_no_equal | 1 - .../cnf/maxscale.cnf.template.mxs720_wierd_line | 1 - maxscale-system-test/cnf/maxscale.cnf.template.mxs722 | 1 - .../cnf/maxscale.cnf.template.mxs827_write_timeout | 1 - maxscale-system-test/cnf/maxscale.cnf.template.mxs922 | 1 - .../cnf/maxscale.cnf.template.namedserverfilter | 1 - .../cnf/maxscale.cnf.template.no_ses_cmd_store | 1 - maxscale-system-test/cnf/maxscale.cnf.template.open_close | 1 - maxscale-system-test/cnf/maxscale.cnf.template.pers_01 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.regexfilter1 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.repl_lgc | 1 - maxscale-system-test/cnf/maxscale.cnf.template.replication | 1 - .../cnf/maxscale.cnf.template.replication.one_slave | 1 - .../cnf/maxscale.cnf.template.rwsplit_multi_stmt | 1 - .../cnf/maxscale.cnf.template.rwsplit_read_only_trx | 1 - .../cnf/maxscale.cnf.template.rwsplit_readonly | 1 - .../cnf/maxscale.cnf.template.schemarouter_duplicate_db | 1 - maxscale-system-test/cnf/maxscale.cnf.template.script | 1 - maxscale-system-test/cnf/maxscale.cnf.template.session_limits | 1 - maxscale-system-test/cnf/maxscale.cnf.template.sharding | 1 - .../cnf/maxscale.cnf.template.show_monitor_crash | 1 - maxscale-system-test/cnf/maxscale.cnf.template.simplejavatest | 1 - .../cnf/maxscale.cnf.template.sql_queries_pers1 | 1 - .../cnf/maxscale.cnf.template.sql_queries_pers10 | 1 - maxscale-system-test/cnf/maxscale.cnf.template.ssl | 1 - maxscale-system-test/cnf/maxscale.cnf.template.ssl_load | 1 - maxscale-system-test/cnf/maxscale.cnf.template.user_cache | 1 - .../cnf/maxscale.cnf.template.verify_master_failure | 1 - maxscale-system-test/testconnections.cpp | 4 ---- 123 files changed, 126 deletions(-) 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.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/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); } From 445eece95bd06b6f29fa746a85890568caeec7f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Sun, 3 Jun 2018 19:16:03 +0300 Subject: [PATCH 14/16] MXS-1507: Fix replaying of empty transactions If the starting of a transaction was interrupted by a server failure, the query needs to be retried. This needs to be done as a transaction replay to keep the routing logic consistent and simple. When a non-autocommit transaction is interrupted, there will be no query in progress and no replaying is needed. To handle this case, the replay initialization logic needed to be altered to treat truly empty transactions as a success case. --- include/maxscale/utils.hh | 1 + .../routing/readwritesplit/rwsplitsession.cc | 145 ++++++++++++------ server/modules/routing/readwritesplit/trx.hh | 20 ++- 3 files changed, 119 insertions(+), 47 deletions(-) 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/server/modules/routing/readwritesplit/rwsplitsession.cc b/server/modules/routing/readwritesplit/rwsplitsession.cc index 5ba1ee918..572a2c5ba 100644 --- a/server/modules/routing/readwritesplit/rwsplitsession.cc +++ b/server/modules/routing/readwritesplit/rwsplitsession.cc @@ -387,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) @@ -501,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)) { @@ -566,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; } /** From a5377212a663e4c2e5605b234b8d3285f30293b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Mon, 4 Jun 2018 04:45:34 +0300 Subject: [PATCH 15/16] MXS-1507: Add transaction replay stress test The test performs transactions while the master server is stopped and started. --- maxscale-system-test/CMakeLists.txt | 4 + .../maxscale.cnf.template.mxs1507_trx_stress | 63 ++++++++++++++ maxscale-system-test/mxs1507_trx_stress.cpp | 87 +++++++++++++++++++ 3 files changed, 154 insertions(+) create mode 100644 maxscale-system-test/cnf/maxscale.cnf.template.mxs1507_trx_stress create mode 100644 maxscale-system-test/mxs1507_trx_stress.cpp diff --git a/maxscale-system-test/CMakeLists.txt b/maxscale-system-test/CMakeLists.txt index 1e3009b7a..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) 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/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; +} From 7e1f795ae94c47c1a646ea47f997c43b0b888f46 Mon Sep 17 00:00:00 2001 From: Johan Wikman Date: Tue, 5 Jun 2018 10:05:23 +0300 Subject: [PATCH 16/16] Address review comments --- Development/branching-and-tagging.md | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/Development/branching-and-tagging.md b/Development/branching-and-tagging.md index 77227bb83..abef7178c 100644 --- a/Development/branching-and-tagging.md +++ b/Development/branching-and-tagging.md @@ -5,29 +5,28 @@ This document describes how git branches and tags are used in the MaxScale development. -## Releases +## Release Numbering -The releases of MaxScale are numbered as `X.Y.Z` where `X` denotes the -major version (currently is `2` and changes very rarely), where `Y` denotes -the minor version (when changed, implies the introduction of new features), -and where `Z` denotes the maintenance version (when changed, implies that -bugs have been fixed). +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 -## Two kinds - 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 are development -related to bug fixes. Occasionally, due to explicit customer demand, -feature development may also take place. +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