Description:
With [Python 3.6.3](https://www.python.org/downloads/) and both [MySQL Connector 2.1.6](https://pypi.python.org/pypi/mysql-connector/2.1.6) and [2.2.3](https://stackoverflow.com/a/45450183/2326961) packages, connecting to an invalid host causes a `ResourceWarning` (noticeable when the interpreter warnings are activated with the `-Wall` flag) as the underlying socket is not closed in such a case.
How to repeat:
Input:
python3 -Wall <<EOF
import mysql.connector
with mysql.connector.connect(host = "0.0.0.0") as session: pass
EOF
Output:
Traceback (most recent call last):
File "/home/master/.local/lib/python3.6/site-packages/mysql/connector/network.py", line 509, in open_connection
self.sock.connect(sockaddr)
ConnectionRefusedError: [Errno 111] Connection refused
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "/home/master/.local/lib/python3.6/site-packages/mysql/connector/__init__.py", line 179, in connect
return MySQLConnection(*args, **kwargs)
File "/home/master/.local/lib/python3.6/site-packages/mysql/connector/connection.py", line 95, in __init__
self.connect(**kwargs)
File "/home/master/.local/lib/python3.6/site-packages/mysql/connector/abstracts.py", line 722, in connect
self._open_connection()
File "/home/master/.local/lib/python3.6/site-packages/mysql/connector/connection.py", line 208, in _open_connection
self._socket.open_connection()
File "/home/master/.local/lib/python3.6/site-packages/mysql/connector/network.py", line 512, in open_connection
errno=2003, values=(self.get_address(), _strioerror(err)))
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on '0.0.0.0:3306' (111 Connection refused)
sys:1: ResourceWarning: unclosed <socket.socket fd=3, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('0.0.0.0', 52836)>
It looks very similar to [this](https://bugs.mysql.com/bug.php?id=82324) MySQL Connector bug which has been [resolved](https://dev.mysql.com/doc/relnotes/connector-python/en/news-2-1-7.html) in MySQL Connector 2.1.7 released on 8 August 2017. The two versions that I have tested (2.1.6 released on 18 April 2017 and 2.2.3 released on 22 March 2017) are prior to the 2.1.7 version so I patched them myself with the [patch](https://bugs.mysql.com/file.php?id=24258&bug_id=82324) given by Vilnis Termanis to see if the bugs are related, but the patched versions still give me the same warning.