diff options
| author | Vishvananda Ishaya <vishvananda@yahoo.com> | 2010-08-30 13:06:07 -0700 |
|---|---|---|
| committer | Vishvananda Ishaya <vishvananda@yahoo.com> | 2010-08-30 13:06:07 -0700 |
| commit | 4cdb0cdc6ef069287cba8a687001deee8ed23280 (patch) | |
| tree | f2d436ae49c26134a07f6bca407745fc3bad3d4d /nova/db | |
| parent | 2107ed58b1e7fccb4e1b22d4d76ebbe4b7a7bd74 (diff) | |
| download | nova-4cdb0cdc6ef069287cba8a687001deee8ed23280.tar.gz nova-4cdb0cdc6ef069287cba8a687001deee8ed23280.tar.xz nova-4cdb0cdc6ef069287cba8a687001deee8ed23280.zip | |
rollback on exit
Diffstat (limited to 'nova/db')
| -rw-r--r-- | nova/db/sqlalchemy/session.py | 19 |
1 files changed, 9 insertions, 10 deletions
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() |
