Bug #80747 HA Utilties must set connection_timeout in C/Py connection to short value
Submitted: 15 Mar 2016 12:23 Modified: 4 Aug 2016 20:09
Reporter: Andrii Nikitin Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Utilities Severity:S2 (Serious)
Version:1.5.6, 1.6.2 OS:Any
Assigned to: CPU Architecture:Any

[15 Mar 2016 12:23] Andrii Nikitin
Description:
On some circumstances any TCP request may hang for very long time (5-10 min), e.g. see bug #65658

How to repeat:
Communication link failure due to power loss on destination Server will  not be detected until tcp keepalive mechanism triggers in. TCP request may just hang until that.

Suggested fix:
HA Utilities must configure connection_timeout parameter https://dev.mysql.com/doc/connector-python/en/connector-python-connectargs.html accordingly to properly detect such situations
[18 Mar 2016 12:25] Andrii Nikitin
Posted by developer:
 
One of possible workarounds to long failover when master host goes down - lower value of tcp_syn_retries OS setting. Until bug is fixed - behavior is expected to be similar to several attempts to connect with telnet to non-existent host :

# time telnet 111.111.111.111 3306
Trying 111.111.111.111...
telnet: connect to address 111.111.111.111: Connection timed out

real 1m3.143s

# cat /proc/sys/net/ipv4/tcp_syn_retries
5
# echo 3 > /proc/sys/net/ipv4/tcp_syn_retries
# time telnet 111.111.111.111 3306
Trying 111.111.111.111...
telnet: connect to address 111.111.111.111: Connection timed out

real 0m15.039s
[24 Jun 2016 15:10] Owen Owen
I am having the same issue.
[4 Aug 2016 20:09] Philip Olson
Posted by developer:
 
Fixed as of the upcoming MySQL Utilities 1.6.4 release, and here's the changelog entry:

Adds the ability to specify a connection timeout value passed to
Connector/Python (the connection to MySQL) for the mysqlfailover utility.
More specifically, it allows a user to override Connector/Python's
connection_timeout default value of 10.

Thank you for the bug report.
[17 Aug 2016 15:52] Owen Owen
The get_connection() method in server.py does not use the new connection-timeout parameter so this is still an issue for me.