summaryrefslogtreecommitdiffstats
path: root/nova/db
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@yahoo.com>2010-08-30 13:06:07 -0700
committerVishvananda Ishaya <vishvananda@yahoo.com>2010-08-30 13:06:07 -0700
commit4cdb0cdc6ef069287cba8a687001deee8ed23280 (patch)
treef2d436ae49c26134a07f6bca407745fc3bad3d4d /nova/db
parent2107ed58b1e7fccb4e1b22d4d76ebbe4b7a7bd74 (diff)
downloadnova-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.py19
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()