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