On Jul 14, 2014, at 1:02 PM, Chris Friesen <[email protected]> wrote:
> On 07/14/2014 10:41 AM, Mike Bayer wrote: >> >> On Jul 14, 2014, at 12:29 PM, Chris Friesen <[email protected]> >> wrote: >> >>> On 07/09/2014 05:17 AM, Ihar Hrachyshka wrote: >>>> -----BEGIN PGP SIGNED MESSAGE----- >>>> Hash: SHA512 >>>> >>>> Hi all, >>>> >>>> Multiple projects are suffering from db lock timeouts due to deadlocks >>>> deep in mysqldb library that we use to interact with mysql servers. In >>>> essence, the problem is due to missing eventlet support in mysqldb >>>> module, meaning when a db lock is encountered, the library does not >>>> yield to the next green thread, allowing other threads to eventually >>>> unlock the grabbed lock, and instead it just blocks the main thread, >>>> that eventually raises timeout exception (OperationalError). >>>> >>>> The failed operation is not retried, leaving failing request not >>>> served. In Nova, there is a special retry mechanism for deadlocks, >>>> though I think it's more a hack than a proper fix. >>> >>> This may be a bit of a tangent to the original discussion, but does anyone >>> know where we stand with postgres and eventlets? Is pyscopg2 susceptible >>> to the same problems as mysqldb? >> >> if psycopg2 is in use, the set_wait_callback() extension must be enabled. >> >> see >> http://initd.org/psycopg/docs/extensions.html#psycopg2.extensions.set_wait_callback >> and >> https://bitbucket.org/zzzeek/green_sqla/src/2732bb7ea9d06b9d4a61e8cd587a95148ce2599b/green_sqla/psyco_gevent.py?at=default >> for an example use taken from psycopg2 developers. > > Can you elaborate a bit? It's my understanding that sqlalchemy will use > psycopg2 for connection strings like: > > sql_connection = postgresql:// > > is that correct? it will, though I strongly recommend naming the driver explicitly, as in : postgresql+psycopg2:// docs at: http://docs.sqlalchemy.org/en/rel_0_9/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.psycopg2 > Assuming this is the case, do we need to do something extra to set up the > extension above and beyond what is already in the > openstack/sqlalchemy/eventlet codebase? Is this documented somewhere? That I do not know, the folks who implement eventlet compat would have to respond with what testing and development they’ve done in this regard. _______________________________________________ OpenStack-dev mailing list [email protected] http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
