summaryrefslogtreecommitdiff
path: root/oslo_db/sqlalchemy/enginefacade.py
diff options
context:
space:
mode:
authorD G Lee <yqli2016@fiberhome.com>2017-05-08 11:11:46 +0800
committerD G Lee <lyqgenius@vip.qq.com>2017-05-19 02:44:27 +0000
commitbee339d79c8ac318573fd54229d99e64fd27617a (patch)
tree5d0516f0afd9b1fdea7d2fc9f0f347f5733cfbd5 /oslo_db/sqlalchemy/enginefacade.py
parentd5f1f288a456d89fb9f91e0fe41b962c358ded1a (diff)
downloadoslo-db-bee339d79c8ac318573fd54229d99e64fd27617a.tar.gz
Add 'save_and_reraise_exception' method when call 'session.rollback()'
Maybe we need to know the original exception when exception occurs on method 'session.rollback()'. Change-Id: Iccda37a3279d6f24de69cfccef3e29787f1ac694 Closes-Bug: #1684329
Diffstat (limited to 'oslo_db/sqlalchemy/enginefacade.py')
-rw-r--r--oslo_db/sqlalchemy/enginefacade.py9
1 files changed, 3 insertions, 6 deletions
diff --git a/oslo_db/sqlalchemy/enginefacade.py b/oslo_db/sqlalchemy/enginefacade.py
index 88bca6b..82ebbb1 100644
--- a/oslo_db/sqlalchemy/enginefacade.py
+++ b/oslo_db/sqlalchemy/enginefacade.py
@@ -20,6 +20,7 @@ import warnings
import debtcollector.removals as removals
from oslo_config import cfg
+from oslo_utils import excutils
from oslo_db import exception
from oslo_db import options
@@ -627,12 +628,8 @@ class _TransactionContext(object):
yield self.session
self._end_session_transaction(self.session)
except Exception:
- self.session.rollback()
- # TODO(zzzeek) do we need save_and_reraise() here,
- # or do newer eventlets not have issues? we are using
- # raw "raise" in many other places in oslo.db already
- # (and one six.reraise()).
- raise
+ with excutils.save_and_reraise_exception():
+ self.session.rollback()
finally:
self.session.close()
self.session = None