[openstack-dev] [oslo.db][sqlalchemy][mistral] Configuring default transaction isolation level

Mike Bayer mbayer at redhat.com
Tue Dec 8 15:10:13 UTC 2015



On 12/08/2015 07:28 AM, Renat Akhmerov wrote:
> Hi,
> 
> Moshe, thanks a lot for bringing this up. I remember I tried to find a
> way to change isolation level per connection but also was unable to do that.

Current SQLAlchemy has a lot of isolation level options.    There is a
complete guide to doing this from an ORM perspective at
http://docs.sqlalchemy.org/en/rel_1_0/orm/session_transaction.html#setting-transaction-isolation-levels.


On a per-connection basis, you would use the isolation_level execution
option.  An example of how to integrate this into Session usage is in
this section at
http://docs.sqlalchemy.org/en/rel_1_0/orm/session_transaction.html#setting-isolation-for-individual-sessions.

In oslo.db, there's no engine-wide isolation level setting available,
however when the engine is returned from the oslo.db version of
create_engine, you can immediately get a copy of that engine with the
isolation_level option set by calling:

engine = oslo_db.create_engine(...)
engine = engine.execution_options(isolation_level='READ_COMMITTED')

The future of oslo.db is oriented around the upgraded "enginefacade"
API.  Adding isolation hooks to this new API is a TODO, but is
straightforward; if you're using the new enginefacade API, I can
expedite having the appropriate hooks added in.

Please pull me in directly on any launchpads / gerrits you have where
isolation level is not doing what you'd like, thanks!






> 
> An advice from oslo team would be very helpful.
> 
> Renat Akhmerov
> @ Mirantis Inc.
> 
> 
> 
>> On 08 Dec 2015, at 13:41, ELISHA, Moshe (Moshe)
>> <moshe.elisha at alcatel-lucent.com
>> <mailto:moshe.elisha at alcatel-lucent.com>> wrote:
>>
>> Hi,
>>  
>> We at Mistral want to move from the default transaction isolation
>> level of REPEATABLE READ to READ COMMITTED as part of a bugfix[1].
>>  
>> I did not find a way to pass the isolation level to sqlachemy using
>> oslo.db and the current solution is to use monkey-patching[2] that
>> adds the “isolation_level” property.
>>  
>> Is there currently a better way to set the default isolation level?
>> If not – I will create a BP for it.
>>  
>> Thanks.
>>  
>> [1] https://review.openstack.org/#/c/253819
>> [2] https://review.openstack.org/#/c/253819/11/mistral/db/sqlalchemy/base.py
>>  
>> __________________________________________________________________________
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe: OpenStack-dev-request at lists.openstack.org
>> <mailto:OpenStack-dev-request at lists.openstack.org>?subject:unsubscribe
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> 
> 
> 
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> 



More information about the OpenStack-dev mailing list