Bug #48570 Hangs on Solaris 10 if backend is down.
Submitted: 5 Nov 2009 14:27 Modified: 11 Oct 2010 15:39
Reporter: Alexander Bezrukov Email Updates:
Status: Patch queued Impact on me:
None 
Category:MySQL Proxy Severity:S2 (Serious)
Version:0.8 OS:Solaris (10-intel x86)
Assigned to: Assigned Account CPU Architecture:Any
Tags: solaris

[5 Nov 2009 14:27] Alexander Bezrukov
Description:
Hello. I'm have solaris 10 on VMWare, mysql-proxy on this instance solaris and some mysql rw/ro backends. In case of falling one or several backend (backend don't return RESET flag in TCP/IP packet) mysql-proxy hangs. In a configuration file of anything interesting. If mysql service, instead of all server has fallen - mysql-proxy the worker backend ignores not and mysql-proxy normally functions. Tried to compile as by means of GCC, and SunCC. In Linux such problem I do not observe.

P.S. Sorry my poor English.

How to repeat:
Try run mysql-proxy on Solaris and add not existing backend in "--proxy-backend-addresses=" parameter.
[29 Nov 2009 13:12] Alexey Kishkin
Hi Alexander! Could you describe this bug more detailed, if you have some problems with English, you can post it in Russian, I'll translate.
[30 Nov 2009 7:15] Alexander Bezrukov
Добрый день, Алексей! Описываю проблему на русском.

Есть сервер на Solaris 10, на котором запускаю mysql-proxy. Для запуска использую следующий shell скрипт:
"
#!/bin/bash

LUA_PATH="/local/lib/mysql-proxy/lua/?.lua"

/usr/local/sbin/mysql-proxy \
--proxy-backend-addresses=192.168.3.231:3307 \
--proxy-backend-addresses=192.168.3.233:3307 \
--proxy-read-only-backend-addresses=192.168.3.231:3308 \
--proxy-read-only-backend-addresses=192.168.3.233:3308 \
--proxy-lua-script=/usr/local/share/doc/mysql-proxy/rw-splitting.lua \
--proxy-address=192.168.3.232:3306 \
--log-level=debug \
--log-file=/var/log/mysql-proxy.log
"
Если на backend-сервере убить mysql, то mysql-proxy продолжает нормально работать, использую остальные backend-серверы. В случает отключения bsckend-сервера от сети (не пингуется, не отсылает RESET-флаг при попытке установить с ним TCP соединение) mysql-proxy не отвечает на запрос клиента, при этом соединение не разрывается.

P.S. Пробовал как 32, так 64х разрядный Solaris 10.
[1 Dec 2009 4:40] Alexey Kishkin
translation:

There is a mysql-proxy that runs on Solaris 10 server.
I use the following script to start:

#!/bin/bash

LUA_PATH="/local/lib/mysql-proxy/lua/?.lua"

/usr/local/sbin/mysql-proxy \
--proxy-backend-addresses=192.168.3.231:3307 \
--proxy-backend-addresses=192.168.3.233:3307 \
--proxy-read-only-backend-addresses=192.168.3.231:3308 \
--proxy-read-only-backend-addresses=192.168.3.233:3308 \
--proxy-lua-script=/usr/local/share/doc/mysql-proxy/rw-splitting.lua \
--proxy-address=192.168.3.232:3306 \
--log-level=debug \
--log-file=/var/log/mysql-proxy.log

If mysql server stops on the backend-server, then mysql-proxy
continues to operate normally, using
remaining backend-servers. In case of network disconnection on backend side (no ping, no RESET-flag when one tries to establish new TCP connection) mysql-proxy doesn't respond to client requests, and  doesn't terminate  connection to client.

PS. I tested 64 bit  as well as 32 bit Solaris.
[1 Dec 2009 4:47] Alexey Kishkin
Alexandr, just for clarification:

- if client tries to establish new connection to mysql proxy (when backend is dead), does mysql-proxy respond?

- how many time did you wait? when I tested on opensolaris I saw some timeout (about 3 minute) and then client got:
ERROR 2013 (HY000): Lost connection to MYSQL server during query

- does admin interface (that on 4041 port) works during backend disconnection?
[1 Dec 2009 14:16] Alexander Bezrukov
При новом подключении клиента к серверу сервер "молчит" 3.5 минуты, после отсылает клиенту приветстие и может отвечать на запросы. При послудкющих новых подключениях происходит тоже самое.

Интерфейс администратора не сконфигурирован, по порт прослушивается.
[13 Dec 2009 11:56] Alexey Kishkin
translation:
in case of new connection, server keep silence about 3.5 minutes, then send to client handshake and can answer the request. On all following connections I see the same behavior. 

Administrator interface has not been configured, but port seems to be alive.
[16 Mar 2010 15:59] Enterprise Tools JIRA Robot
Jan Kneschke writes: 
http://bugs.mysql.com/41417 seems to be the same issue.