On 07/14/2014 10:41 AM, Mike Bayer wrote:

On Jul 14, 2014, at 12:29 PM, Chris Friesen <chris.frie...@windriver.com> 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?


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?

Chris

_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to