From 4cdb0cdc6ef069287cba8a687001deee8ed23280 Mon Sep 17 00:00:00 2001 From: Vishvananda Ishaya Date: Mon, 30 Aug 2010 13:06:07 -0700 Subject: rollback on exit --- nova/db/sqlalchemy/session.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'nova/db') diff --git a/nova/db/sqlalchemy/session.py b/nova/db/sqlalchemy/session.py index 06e2ca8cd..2b088170b 100644 --- a/nova/db/sqlalchemy/session.py +++ b/nova/db/sqlalchemy/session.py @@ -16,9 +16,10 @@ # License for the specific language governing permissions and limitations # under the License. +import logging + from sqlalchemy import create_engine from sqlalchemy.orm import create_session -from sqlalchemy.ext.declarative import declarative_base from nova import flags @@ -31,23 +32,21 @@ def managed_session(autocommit=True): class SessionExecutionManager: _engine = None _session = None - + def __init__(self, autocommit): cls = SessionExecutionManager if not cls._engine: cls._engine = create_engine(FLAGS.sql_connection, echo=False) self._session = create_session(bind=cls._engine, autocommit=autocommit) - - + + def __enter__(self): return self._session def __exit__(self, type, value, traceback): - import pdb - if type or value or traceback: - pdb.set_trace() - # TODO(devcamcar): Rollback on exception. - # TODO(devcamcar): Log exceptions. + if type: + logging.exception("Error in database transaction") + self._session.rollback() if self._session: - self._session.close() \ No newline at end of file + self._session.close() -- cgit