MXS-1323: Fix crash on attempted retry of read

When a backend is waiting for a response but no statement is stored for
the session, the buffer where the stored statement is copied is not
modified. This means that it needs to be initialized to a NULL value.

Added a test that checks that the behavior works as expected even with
persistent connections. A second test reproduces the crash by executing
parallel SET commands while slaves are blocked.

There is still a behavioral problem in readwritesplit. If a session
command is being executed and it fails on a slave, an error is sent to the
client. In this case it would not be necessary to close the session if the
master is still alive.
This commit is contained in:
Markus Mäkelä
2017-07-25 09:46:40 +03:00
parent 2148d78d3f
commit ed44c45be1
7 changed files with 206 additions and 4 deletions

View File

@ -0,0 +1,51 @@
[maxscale]
threads=###threads###
log_info=1
[MySQL Monitor]
type=monitor
module=mysqlmon
###repl51###
servers= server1,server2
user=maxskysql
passwd= skysql
monitor_interval=500
[RW Split Router]
type=service
router= readwritesplit
servers=server1,server2
user=maxskysql
passwd=skysql
[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
persistpoolmax=10
persistmaxtime=300
[server2]
type=server
address=###node_server_IP_2###
port=###node_server_port_2###
protocol=MySQLBackend
persistpoolmax=10
persistmaxtime=300