MaxScale 0.5 Alpha New Features
0.5 Alpha
This document details the changes in version 0.5 since the release of the 0.4 alpha of the MaxScale product.
New Features
Read/Write Splitter Routing Module
In previous versions the read/write splitter routing module has had a number of limitations on it use, in the alpha release the router now removes the most important restrictions.
Session Commands
Session commands are those statements that make some change to the user’s login session that may cause different effects from subsequent statements executed. Since the read/write splitter executes statements on either a master server or a slave server, depending upon the statement to execute, it is important that these session modifications are executed on all connections to both slave and master servers. This is resolved in release 0.5 such that session modification commands are executed on all active connections and a single return is forward back to the client that made the request.
Transaction Support
Transaction support has been added into this version of the read/write splitter, there is one known outstanding limitation. If autocommit is enabled inside an active transaction it is not considered as commit in read/write splitter. Once a transaction has started all statements are routed to a master until the transaction is committed or rolled back.
Authentication
A number of issues and shortcomings in the authentication performed by MaxScale have been resolved by this release.
Host Considered in Authentication
Previously MaxScale did not follow the same rules as MySQL when authenticating a login request, it would always use the wildcard password entries and would not check the incoming host was allowed to connect. MaxScale now checks the incoming IP address for a connection request and verifies this against the authentication data loaded from the backend servers. The same rules are applied when choosing the password entry to authenticate with. Note however that authentication from MaxScale to the backend database will fail if the MaxScale host is not allowed to login using the matching password for the user.
Stale Authentication Data
In previous releases of MaxScale the authentication data would be read at startup time only and would not be refreshed. Therefore if a user was added or modified in the backend server this will not be picked up by MaxScale and that user would be unable to connect via MaxScale. MaxScale now reloads user authentication data when a failure occurs and will refresh its internal tables if the data has changed in the backend. Please note that this reload process is rate limited to prevent incorrect logins to MaxScale being used for a denial of service attack on the backend servers.
Enable Use Of "root" User
Previously MaxScale would prevent the use of the root user to login to the backend servers via MaxScale. This may be enabled on a per service basis by adding an "enable_root_user" options in the service entry to enable it in the MaxScale configuration file. This allows the use of root to be controlled on a per service basis.
Network Support
Unix Domain Sockets
MaxScale now supports Unix domain sockets for connecting to a local MaxScale server. The use of a Unix domain socket is controlled by adding a "socket" entry in the listener configuration entry for a service.
Network Interface Binding
MaxScale has added the ability to bind a listener for a service to a network address via an "address" entry in the configuration file.
Server Version
The server version reported when connected to a database via MaxScale has now been altered. This now shows the MaxScale name and version together with the backend server name. An example of this can be seen below for the 0.5 release.
-bash-4.1$ mysql -h 127.0.0.1 -P 4006 -uxxxx -pxxxx Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 22320 Server version: MaxScale 0.5.0 MariaDB Server
Copyright (c) 2000, 2012, Oracle, Monty Program Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> \ys
mysql Ver 15.1 Distrib 5.5.28a-MariaDB, for Linux (i686) using readline 5.1
... Server: MySQL Server version: MaxScale 0.5.0 MariaDB Server ...
MySQL [(none)]>
Bug Fixes
A number of bug fixes have been applied between the 0.4 alpha and this alpha release. The table below lists the bugs that have been resolved. The details for each of these may be found in bugs.skysql.com.
ID
Summary
141
No "delete user" command in debugcli
175
Buffer leak in dcb_read from Coverity run
178
Uninitialised variables from Coverity run
179
open with O_CREAT in second argument needs 3 arguments
363
simple_mutex "name" memory handling ...
126
"reload config" in debug interface causes maxscale server to segfault
149
It is possible to delete all maxscale users
218
there is no way to understand what is going on if MAXSCALE_HOME is incorrect
137
"show users" and "reload users" refer to very different things in debugcli
154
readwritesplit does not use router_options
160
telnetd leaks memory
169
Galera monitor is actually never compiled ....
172
Several compile errors in galera_mon.c
174
Resource leak in server.c
176
Resource leak in gw_utils.c
362
possible datadir_cleanup() problems ...
124
readconnroute does not validate router_options
153
MaxScale fails when max connections are exceeded
133
MaxScale leaves lots of "data" directories sitting around $MAXSCALE_HOME
166
readwritesplit causes MaxScale segfault when starting up
207
Quitting telnet session causes maxscale to fail
161
Memory leak in load_mysql_users.
177
Resource leak in secrets.c
182
On Startup logfiles are empty
135
MaxScale unsafely handles empty passwords in getUsers
145
.secret file for encrypted passwords cyclicly searched
171
ifndef logic in build_gateway.inc doesn't work, MARIADB_SRC_PATH from env not picked up
173
Resource leak in adminusers.c found by Coverity
376
Confusing Server Version
370
maxscale binary returns zero exit status on failures
150
telnetd listener should bind to 127.0.0.1 by default
152
listener configuration should support bind address
373
Documentation: it's not clear what privileges the maxscale user needs
128
Maxscale prints debug information to terminal session when run in background
129
MaxScale refuses to connect to server and reports nonsense error as a result
147
Maxscale's hashtable fails to handle deletion of entries.
148
users data structure's stats have incorrect values.
384
MaxScale crashes if backend authentication fails
210
Bad timing in freeing readconnrouter's dcbs cause maxscale crash
403
gwbuf_free doesn't protect freeing shared buffer
371
If router module load fails, MaxScale goes to inifinite loop
385
MaxScale (DEBUG-version) dasserts if backend dcb is closed in the middle of client dcb performing close_dcb
386
Starting MaxScale with -c pointing at existing file causes erroneous behavior
209
Error in backend hangs client connection
194
maxscale crashes at start if module load fails
369
typo in "QUERY_TYPE_UNKNWON"
163
MaxScale crashes with multiple threads
162
threads parameter in configuration file is not effective
400
hastable_get_stats returns value of uninitialized value in 'nelems'
212
Failing write causes maxscale to fail
222
Double freeing mutex corrupts log
208
current_connection_count is decreased multiple times per session, thus breaking load balancing logic
378
Misspelling maxscale section name in config file crashes maxscale
399
Every row in log starts with 0x0A00
205
MaxScale crashes due SEGFAULT because return value of dcb_read is not checked
220
Maxscale crash if socket listening fails in startup
372
Log manager hangs MaxScale if log string (mostly query length) exceeds block size
397
Free of uninitialised pointer if MAXSCALE_HOME is not set
402
gw_decode_mysql_server_handshake asserts with mysql 5.1 backend
345
MaxScale don't find backend servers if they are started after MaxScale
406
Memory leak in dcb_alloc()
360
MaxScale passwd option
151
Get parse_sql failed on array INSERT
216
Backend error handling doesn't update server's connection counter
127
MaxScale should handle out-of-date backend auth data more gracefully
146
"show dbusers" argument not documented
125
readconnroute causes maxscale server crash if no slaves are available
375
Tarball contains UID and maxscale base dir
This page is licensed: CC BY-SA / Gnu FDL
Last updated
Was this helpful?