Enable MySQL Connector driver

Registered by Ihar Hrachyshka

Current MySQL client library we use (MySQLdb) plays bad with eventlet and may result in db deadlocks [1]. It also blocks execution of other green threads while we're deep in the library code [2]. To avoid those issues, we need to switch to a pure python library with better eventlet support. MySQL Connector is an official mysql python client library and has the needed qualities.

[1]: https://wiki.openstack.org/wiki/OpenStack_and_SQLAlchemy#MySQLdb_.2B_eventlet_.3D_sad
[2]: http://docs.openstack.org/developer/nova/devref/threading.html

Blueprint information

Status:
Complete
Approver:
None
Priority:
Low
Drafter:
Ihar Hrachyshka
Direction:
Needs approval
Assignee:
Ihar Hrachyshka
Definition:
Obsolete
Series goal:
None
Implementation:
Started
Milestone target:
None
Started by
Ihar Hrachyshka
Completed by
Ihar Hrachyshka

Related branches

Sprints

Whiteboard

Obsoleted the spec since the plan now is to adopt pymysql. The infrastructure work to support alternatibe db drivers is mostly done anyway, so it's no reason to leave the spec opened.

Gerrit topic: https://review.openstack.org/#q,topic:bp/switch-to-mysql-connector,n,z

Addressed by: https://review.openstack.org/108355
    Switch from MySQLdb to MySQL Connector

Renamed from switch-to-mysql-connector to enable-mysql-connector to reflect reduced scope covered in the approved spec. - dhellmann

Need a review in sqlalchemy-migrate: https://review.openstack.org/#/c/110611/ - landed but not released 9/9 - dhellmann

https://review.openstack.org/#/c/115501/ proposes another driver library instead - dhellmann

The new sqlalchemy-migrate change needed to allow this to work breaks nova's unit tests and migrations. Given that we're in feature freeze, I'm going to defer this blueprint to kilo. - dhellmann

Updating milestone and approval settings prior to kilo. - dhellmann

Resent for Kilo: https://review.openstack.org/125044 - ihrachyshka, Sep 30th.

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.