]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commit
Fix session's InvalidRequestError because of nested rollback
authorarmando-migliaccio <armamig@gmail.com>
Fri, 8 Aug 2014 00:07:21 +0000 (17:07 -0700)
committerarmando-migliaccio <armamig@gmail.com>
Fri, 8 Aug 2014 23:01:49 +0000 (16:01 -0700)
commitb4eaa0520990f30519aaa073f352541f17b0577b
tree0410effbe16994fc8e4ac0a178f188d5117b9e2a
parentc417c63e1b6c489b282dadd60ef7ef7832ea1349
Fix session's InvalidRequestError because of nested rollback

This patch addresses the issue by removing the extra nesting
(which is effectively redundant).

The longer story about this patch is the following:

Race conditions may cause DBDuplicateEntry exceptions that
require a transaction to be rollbacked back, and yet make
the whole operation succeed. A classic example is what has
been solved in commit fbc6b99. If the rollback is done in a
nested transaction, the above mentioned exception is raised.

To address the problem, we could use savepoints by means of
sqlalchemy's begin_nested(); Even though this approach is
preferable, it causes quite a bit of changes in the unit
tests (because of sqlite); it may also require that certain
DBMS, or certain DB backend configurations, support savepoints.

In the end, the simpler approach was chosen.

Closes-bug: #1354072

Change-Id: Ic9393319e55f71d681124bd3052e939724ebab6b
neutron/scheduler/l3_agent_scheduler.py