]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commit
Execute DB API methods in a single transaction
authorRoman Podolyaka <rpodolyaka@mirantis.com>
Mon, 22 Jul 2013 15:27:51 +0000 (18:27 +0300)
committerRoman Podolyaka <rpodolyaka@mirantis.com>
Thu, 1 Aug 2013 19:23:06 +0000 (22:23 +0300)
commit2f7d2dce0e89ace77a23db834df4dd3f64c360c0
treee0e1b3d0e38818e5715d1acc78327e475e41110c
parent768ae7c626fb1adee053d20749dbf7f0081f92a3
Execute DB API methods in a single transaction

Many DB API methods do a few queries to a DB (e. g.  SELECT
and then UPDATE, or SELECT and then DELETE, etc).  By default,
a Session instance is used with autocommit=True, which means,
that each query to a DB is done in a separate transaction. This
is error-prone (as it may lead to race conditions or returning
of unexpected results) and makes rollbacks harder (if one of
transactions fail, the previous ones can not be rolled back).

This patch ensures that all DB API methods, which do a few
queries (or call private DB API methods), are executed inside
a single transaction.

Blueprint: db-session-cleanup

Change-Id: Ie6510becffdeb78048fe4a09511ab326627d3412
cinder/db/sqlalchemy/api.py