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

Reply via email to