Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

datajoint.conn and datajoint.Connection.__init__ fail when using Python 3.11 and MySQL 5.7 #1149

Open
ethho opened this issue Jan 3, 2024 · 1 comment
Assignees
Labels
bug Indicates an unexpected problem or unintended behavior

Comments

@ethho
Copy link
Contributor

ethho commented Jan 3, 2024

Bug Report

Description

Please see debugging information in #1148. This issue is mirrored in JIRA: https://datajoint.atlassian.net/browse/PLAT-188

Reproducibility

Include:

  • OS: Linux
  • Python Version: 3.11
  • MySQL Version: 5.7
  • MySQL Deployment Strategy: local-docker
  • DataJoint Version: 0.14.1
  • Minimum number of steps to reliably reproduce the issue
    • On branch dev-tests (commit e4e377a), issue PY_VER=3.11 MYSQL_VER=5.7 docker compose up app to run the pytest suite.
  • Complete error stack as a result of evaluating the above steps
Console Logs
PY_VER=3.11 MYSQL_VER=5.7 docker compose run app pytest tests
[+] Creating 3/0
 ✔ Container ethho-datajoint-python-minio-1                      Running                                                           0.0s 
 ✔ Container ethho-datajoint-python-fakeservices.datajoint.io-1  Running                                                           0.0s 
 ✔ Container ethho-datajoint-python-db-1                         Running                                                           0.0s 
========================================================= test session starts ==========================================================
platform linux -- Python 3.11.0, pytest-7.2.1, pluggy-1.0.0
rootdir: /src
plugins: Faker-16.6.1, cov-4.0.0
collected 290 items / 1 error                                                                                                          

================================================================ ERRORS ================================================================
_________________________________________________ ERROR collecting tests/test_json.py __________________________________________________
/opt/conda/lib/python3.11/site-packages/pymysql/connections.py:633: in connect
    self._request_authentication()
/opt/conda/lib/python3.11/site-packages/pymysql/connections.py:849: in _request_authentication
    self._sock = self.ctx.wrap_socket(self._sock, server_hostname=self.host)
/opt/conda/lib/python3.11/ssl.py:517: in wrap_socket
    return self.sslsocket_class._create(
/opt/conda/lib/python3.11/ssl.py:1075: in _create
    self.do_handshake()
/opt/conda/lib/python3.11/ssl.py:1346: in do_handshake
    self._sslobj.do_handshake()
E   ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:992)

During handling of the above exception, another exception occurred:
tests/test_json.py:8: in <module>
    if Version(dj.conn().query("select @@version;").fetchone()[0]) < Version("8.0.0"):
datajoint/connection.py:133: in conn
    conn.connection = Connection(host, user, password, None, init_fun, use_tls)
datajoint/connection.py:195: in __init__
    connect_host_hook(self)
datajoint/connection.py:52: in connect_host_hook
    connection_obj.connect()
datajoint/connection.py:219: in connect
    self._conn = client.connect(
/opt/conda/lib/python3.11/site-packages/pymysql/connections.py:353: in __init__
    self.connect()
/opt/conda/lib/python3.11/site-packages/pymysql/connections.py:664: in connect
    raise exc
E   pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'fakeservices.datajoint.io' ([SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:992))")
----------------------------------------------------------- Captured stderr ------------------------------------------------------------
[2024-01-03 19:53:33,511][INFO]: Connecting root@fakeservices.datajoint.io:3306
======================================================= short test summary info ========================================================
ERROR tests/test_json.py - pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'fakeservices.datajoint.io' ([SSL: SSLV3_ALERT_HANDSHAKE_FAI...

Expected Behavior

All pytests pass even when using Python >=3.10 and MySQL 5.7

Screenshots

If applicable, add screenshots to help explain your problem.

Additional Research and Context

See debugging findings documented in #1148.

@ethho ethho added the bug Indicates an unexpected problem or unintended behavior label Jan 3, 2024
@yambottle yambottle added the stale Indicates issues, pull requests, or discussions are inactive label Mar 14, 2025
@yambottle
Copy link
Contributor

Closing due to inactivity (older than 365 days), please reopen if it's still applicable.

@yambottle yambottle reopened this Mar 14, 2025
@github-actions github-actions bot added the triage Indicates issues, pull requests, or discussions need to be reviewed for the first time label Mar 14, 2025
@yambottle yambottle removed the triage Indicates issues, pull requests, or discussions need to be reviewed for the first time label Mar 14, 2025
@github-actions github-actions bot removed the stale Indicates issues, pull requests, or discussions are inactive label Mar 15, 2025
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
bug Indicates an unexpected problem or unintended behavior
Projects
None yet
Development

No branches or pull requests

2 participants