Merge branch '2.2' into 2.3
This commit is contained in:
@ -60,6 +60,7 @@ For more details, please refer to:
|
||||
the master. There is also limited capability for rejoining nodes.
|
||||
|
||||
For more details, please refer to:
|
||||
* [MariaDB MaxScale 2.2.16 Release Notes](Release-Notes/MaxScale-2.2.16-Release-Notes.md)
|
||||
* [MariaDB MaxScale 2.2.15 Release Notes](Release-Notes/MaxScale-2.2.15-Release-Notes.md)
|
||||
* [MariaDB MaxScale 2.2.14 Release Notes](Release-Notes/MaxScale-2.2.14-Release-Notes.md)
|
||||
* [MariaDB MaxScale 2.2.13 Release Notes](Release-Notes/MaxScale-2.2.13-Release-Notes.md)
|
||||
|
40
Documentation/Release-Notes/MaxScale-2.2.16-Release-Notes.md
Normal file
40
Documentation/Release-Notes/MaxScale-2.2.16-Release-Notes.md
Normal file
@ -0,0 +1,40 @@
|
||||
# MariaDB MaxScale 2.2.16 Release Notes
|
||||
|
||||
Release 2.2.16 is a GA release.
|
||||
|
||||
This document describes the changes in release 2.2.16, when compared to the
|
||||
previous release in the same series.
|
||||
|
||||
For any problems you encounter, please consider submitting a bug
|
||||
report on [our Jira](https://jira.mariadb.org/projects/MXS).
|
||||
|
||||
## Bug fixes
|
||||
|
||||
* [MXS-2119](https://jira.mariadb.org/browse/MXS-2119) Files and directories are created with wrong permissions
|
||||
* [MXS-2117](https://jira.mariadb.org/browse/MXS-2117) Old style queries aren't used when MDEV-13453 is encountered
|
||||
* [MXS-2115](https://jira.mariadb.org/browse/MXS-2115) Automatic version detection doesn't work
|
||||
* [MXS-2111](https://jira.mariadb.org/browse/MXS-2111) After SET PASSWORD done on the database, MaxScale not able to connect
|
||||
* [MXS-2108](https://jira.mariadb.org/browse/MXS-2108) Session not immediately closed when all connections are lost
|
||||
* [MXS-2103](https://jira.mariadb.org/browse/MXS-2103) ReadWriteSplit, SELECT on fully qualified temporary table is wrongly routed to Slave
|
||||
* [MXS-2073](https://jira.mariadb.org/browse/MXS-2073) TCP_NODELAY not enabled for client socket
|
||||
* [MXS-2049](https://jira.mariadb.org/browse/MXS-2049) Kerberos authentication not working or not clearly documented
|
||||
|
||||
## 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 supported the Linux distributions.
|
||||
|
||||
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 `maxscale-X.Y.Z`. Further, the default branch is always the latest GA version
|
||||
of MaxScale.
|
||||
|
||||
The source code is available [here](https://github.com/mariadb-corporation/MaxScale).
|
@ -43,6 +43,9 @@
|
||||
|
||||
MXS_BEGIN_DECLS
|
||||
|
||||
// Default version string sent to clients
|
||||
#define DEFAULT_VERSION_STRING "5.5.5-10.2.12 " MAXSCALE_VERSION "-maxscale"
|
||||
|
||||
#define MYSQL_HEADER_LEN 4
|
||||
#define MYSQL_CHECKSUM_LEN 4
|
||||
#define MYSQL_EOF_PACKET_LEN 9
|
||||
|
@ -825,9 +825,6 @@ add_test_executable(compound_statement.cpp compound_statement replication LABELS
|
||||
# Check if 'weightby' parameter works
|
||||
add_test_executable(server_weight.cpp server_weight galera.weight LABELS readwritesplit readconnroute LIGHT GALERA_BACKEND)
|
||||
|
||||
# Executes a lot of session commands with "disable_sescmd_history=true" and check that memory consumption is not increasing
|
||||
add_test_executable(ses_bigmem.cpp ses_bigmem no_ses_cmd_store LABELS readwritesplit REPL_BACKEND)
|
||||
|
||||
# test for 'max_sescmd_history' and 'connection_timeout' parameters
|
||||
add_test_executable(session_limits.cpp session_limits session_limits LABELS readwritesplit REPL_BACKEND)
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
[maxscale]
|
||||
threads=###threads###
|
||||
query_retries=2
|
||||
query_retry_timeout=10
|
||||
|
||||
[MySQL-Monitor]
|
||||
type=monitor
|
||||
|
@ -1,92 +0,0 @@
|
||||
[maxscale]
|
||||
threads=###threads###
|
||||
log_warning=1
|
||||
|
||||
[MySQL Monitor]
|
||||
type=monitor
|
||||
module=mysqlmon
|
||||
servers= server1, server2,server3 ,server4
|
||||
user=maxskysql
|
||||
password= skysql
|
||||
monitor_interval=1000
|
||||
|
||||
[RW Split Router]
|
||||
type=service
|
||||
router= readwritesplit
|
||||
servers=server1, server2, server3,server4
|
||||
user=maxskysql
|
||||
password=skysql
|
||||
slave_selection_criteria=LEAST_GLOBAL_CONNECTIONS
|
||||
disable_sescmd_history=true
|
||||
max_slave_connections=1
|
||||
|
||||
[Read Connection Router Slave]
|
||||
type=service
|
||||
router=readconnroute
|
||||
router_options= slave
|
||||
servers=server1,server2,server3,server4
|
||||
user=maxskysql
|
||||
password=skysql
|
||||
|
||||
[Read Connection Router Master]
|
||||
type=service
|
||||
router=readconnroute
|
||||
router_options=master
|
||||
servers=server1,server2,server3,server4
|
||||
user=maxskysql
|
||||
password=skysql
|
||||
|
||||
[RW Split Listener]
|
||||
type=listener
|
||||
service=RW Split Router
|
||||
protocol=MySQLClient
|
||||
port=4006
|
||||
#socket=/tmp/rwsplit.sock
|
||||
|
||||
[Read Connection Listener Slave]
|
||||
type=listener
|
||||
service=Read Connection Router Slave
|
||||
protocol=MySQLClient
|
||||
port=4009
|
||||
|
||||
[Read Connection Listener Master]
|
||||
type=listener
|
||||
service=Read Connection Router Master
|
||||
protocol=MySQLClient
|
||||
port=4008
|
||||
|
||||
[CLI]
|
||||
type=service
|
||||
router=cli
|
||||
|
||||
[CLI Listener]
|
||||
type=listener
|
||||
service=CLI
|
||||
protocol=maxscaled
|
||||
#address=localhost
|
||||
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
|
||||
|
@ -46,6 +46,7 @@ int main(int argc, char** argv)
|
||||
|
||||
test.tprintf("Syncing slaves");
|
||||
test.stop_timeout();
|
||||
test.repl->fix_replication();
|
||||
test.repl->sync_slaves();
|
||||
test.set_timeout(60);
|
||||
|
||||
|
@ -16,7 +16,7 @@ int main(int argc, char* argv[])
|
||||
/** Create a database on each node */
|
||||
for (int i = 0; i < test.repl->N; i++)
|
||||
{
|
||||
test.set_timeout(20);
|
||||
test.set_timeout(60);
|
||||
execute_query(test.repl->nodes[i], "set global max_connections = 600");
|
||||
execute_query(test.repl->nodes[i], "DROP DATABASE IF EXISTS shard_db%d", i);
|
||||
execute_query(test.repl->nodes[i], "CREATE DATABASE shard_db%d", i);
|
||||
@ -31,23 +31,23 @@ int main(int argc, char* argv[])
|
||||
{
|
||||
char str[256];
|
||||
sprintf(str, "shard_db%d", i);
|
||||
test.set_timeout(30);
|
||||
test.set_timeout(60);
|
||||
MYSQL* conn = open_conn_db(test.maxscales->rwsplit_port[0],
|
||||
test.maxscales->IP[0],
|
||||
str,
|
||||
test.maxscales->user_name,
|
||||
test.maxscales->password,
|
||||
test.ssl);
|
||||
test.set_timeout(30);
|
||||
test.set_timeout(60);
|
||||
test.add_result(execute_query(conn, "SELECT 1"), "Trying DB %d failed at %d", i, j);
|
||||
mysql_close(conn);
|
||||
}
|
||||
}
|
||||
|
||||
/** Create a database on each node */
|
||||
/** Drop the databases */
|
||||
for (int i = 0; i < test.repl->N; i++)
|
||||
{
|
||||
test.set_timeout(20);
|
||||
test.set_timeout(60);
|
||||
execute_query(test.repl->nodes[i], "DROP DATABASE shard_db%d", i);
|
||||
test.stop_timeout();
|
||||
}
|
||||
|
@ -1,53 +0,0 @@
|
||||
/**
|
||||
* @file ses_bigmem Executes a lot of session commands with "disable_sescmd_history=true" and check that
|
||||
* memory consumption is not increasing
|
||||
* (relates to MXS-672 "maxscale possible memory leak"
|
||||
*/
|
||||
|
||||
|
||||
#include <iostream>
|
||||
#include <unistd.h>
|
||||
#include "testconnections.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
TestConnections* Test = new TestConnections(argc, argv);
|
||||
unsigned long maxscale_mem;
|
||||
|
||||
Test->set_timeout(10);
|
||||
|
||||
Test->maxscales->connect_maxscale(0);
|
||||
int iterations = Test->smoke ? 100000 : 1000000;
|
||||
int r = Test->smoke ? 1 : 3;
|
||||
|
||||
for (int j = 0; j < r; j++)
|
||||
{
|
||||
for (int i = 0; i < iterations && Test->global_result == 0; i++)
|
||||
{
|
||||
Test->set_timeout(10);
|
||||
Test->try_query(Test->maxscales->routers[0][j], (char*) "set autocommit=0;");
|
||||
Test->try_query(Test->maxscales->routers[0][j], (char*) "select 1;");
|
||||
Test->try_query(Test->maxscales->routers[0][j], (char*) "set autocommit=1;");
|
||||
Test->try_query(Test->maxscales->routers[0][j], (char*) "select 2;");
|
||||
if ((i / 1000) * 1000 == i)
|
||||
{
|
||||
Test->tprintf("i=%d\n", i);
|
||||
}
|
||||
}
|
||||
|
||||
maxscale_mem = Test->maxscales->get_maxscale_memsize(0);
|
||||
Test->tprintf("Maxscale process uses %lu KBytes\n", maxscale_mem);
|
||||
|
||||
if (maxscale_mem > 2000000)
|
||||
{
|
||||
Test->add_result(1, "Maxscale consumes too much memory\n");
|
||||
}
|
||||
}
|
||||
|
||||
Test->check_maxscale_alive(0);
|
||||
int rval = Test->global_result;
|
||||
delete Test;
|
||||
return rval;
|
||||
}
|
@ -303,8 +303,7 @@ const MXS_MODULE_PARAM config_service_params[] =
|
||||
{CN_AUTH_ALL_SERVERS, MXS_MODULE_PARAM_BOOL, "false"},
|
||||
{CN_STRIP_DB_ESC, MXS_MODULE_PARAM_BOOL, "true"},
|
||||
{CN_LOCALHOST_MATCH_WILDCARD_HOST, MXS_MODULE_PARAM_BOOL, "true"},
|
||||
{CN_VERSION_STRING, MXS_MODULE_PARAM_STRING,
|
||||
DEFAULT_VERSION_STRING},
|
||||
{CN_VERSION_STRING, MXS_MODULE_PARAM_STRING},
|
||||
{CN_FILTERS, MXS_MODULE_PARAM_STRING},
|
||||
{CN_WEIGHTBY, MXS_MODULE_PARAM_STRING},
|
||||
{CN_LOG_AUTH_WARNINGS, MXS_MODULE_PARAM_BOOL, "true"},
|
||||
|
@ -33,9 +33,6 @@
|
||||
#define MIN_WRITEQ_HIGH_WATER 4096UL /**< Min high water mark of dcb write queue */
|
||||
#define MIN_WRITEQ_LOW_WATER 512UL /**< Min low water mark of dcb write queue */
|
||||
|
||||
// Default version string sent to clients
|
||||
#define DEFAULT_VERSION_STRING "5.5.5-10.2.12 " MAXSCALE_VERSION "-maxscale"
|
||||
|
||||
/**
|
||||
* Maximum length for configuration parameter value.
|
||||
*/
|
||||
|
@ -203,22 +203,33 @@ static char* gw_default_auth()
|
||||
|
||||
std::string get_version_string(SERVICE* service)
|
||||
{
|
||||
std::string rval;
|
||||
uint64_t intver = UINT64_MAX;
|
||||
std::string rval = DEFAULT_VERSION_STRING;
|
||||
|
||||
for (SERVER_REF* ref = service->dbref; ref; ref = ref->next)
|
||||
if (service->version_string[0])
|
||||
{
|
||||
if (ref->server->version && ref->server->version < intver)
|
||||
// User-defined version string, use it
|
||||
rval = service->version_string;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint64_t intver = UINT64_MAX;
|
||||
|
||||
for (SERVER_REF* ref = service->dbref; ref; ref = ref->next)
|
||||
{
|
||||
rval = ref->server->version_string;
|
||||
intver = ref->server->version;
|
||||
if (ref->server->version && ref->server->version < intver)
|
||||
{
|
||||
rval = ref->server->version_string;
|
||||
intver = ref->server->version;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Get the version string from service if no server version is available
|
||||
if (rval.empty())
|
||||
// Older applications don't understand versions other than 5 and cause strange problems
|
||||
const char prefix[] = "5.5.5-";
|
||||
|
||||
if (strncmp(rval.c_str(), prefix, sizeof(prefix) - 1) != 0)
|
||||
{
|
||||
rval = service->version_string;
|
||||
rval = prefix + rval;
|
||||
}
|
||||
|
||||
return rval;
|
||||
|
Reference in New Issue
Block a user