[openstack-dev] [Quantum] Lock wait of mysql blocks all eventlet thread

Nachi Ueno nachi at nttmcl.com
Mon Dec 3 20:58:57 UTC 2012


Hi Quantum folks

I faced the problem with mysql transaction and eventlet.

Quantum using transaction support of sqlalchemy
Quantum also using eventlet for RPC

Let's say there are api request A and B.
Sql request of A will lock B's sql request.
so B's sql request will wait the A's transaction.

On the other hand, we are using evenetlet.
Since we are using mysql c client, the API request may block eventlet
thread.

so when B start wait sql lock, it blocks all eventlet thread including api
request A until lock timeout.

I asked Jay about the this problem, and he said Nova solve this problem by
this way.
https://github.com/openstack/nova/blob/master/nova/db/sqlalchemy/api.py#L2610

The strategy is to get lock just after the transaction started using. ( I'm
not sure we can use same strategy in the quantum. )

Anyway,  It looks big change needed for me.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20121203/68db8db6/attachment.html>


More information about the OpenStack-dev mailing list