[openstack-dev] [Neutron] DB: transaction isolation and related questions

Eugene Nikanorov enikanorov at mirantis.com
Fri Nov 21 20:53:07 UTC 2014


>
>
> *You are 100% correct that setting the transaction isolation level to READ
> COMMITTED works in the retry loop*.
>
> I stand corrected, and humbled :) Please accept my apologies.
>
Thanks for letting me know :)


>
> One thing I did note, though, is that changing the isolation level of an
> *already-started transaction* does not change the current transaction's
> isolation level -- the new isolation level only takes effect once the
> previously started transaction is committed or rolled back. So, on line 107
> in your proposed patch here:
>
> https://review.openstack.org/#/c/129288/5/neutron/plugins/
> ml2/drivers/helpers.py
>
> From what I could find out in my research, the setting of the isolation
> level needs to be done *outside* of the session.begin() call, otherwise the
> isolation level will not take effect until that transaction is committed or
> rolled back.


You're right. Apparently I've misread sqlalchemy docs at some point. Now I
see I've understood them incorrectly.
Also, from some sqlalchemy code inspection I thought that default engine
isolation level is restored after current transaction is committed, but
it's not so as well.



> Of course, if SQLAlchemy is doing some auto-commit or something in the
> session, then you may not see this affect, but I certainly was able to see
> this in my testing in mysql client sessions... so I'm a little perplexed as
> to how your code works on already-started transactions. The documentation
> on the MySQL site backs up what I observed:
>
> http://dev.mysql.com/doc/refman/5.0/en/set-transaction.html
>
> "...the statement sets the default transaction level for all subsequent
> transactions performed within the current session."
>

That basically means that my patch effectively changes isolation level of
every connection that happens to be used for the session.


> All the best, and thanks for the informative lesson of the week!
>

Thank you for getting to the very bottom of it! :)

Eugene.

-jay
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20141121/fb8e375c/attachment.html>


More information about the OpenStack-dev mailing list