From 16dd87d848f686835cbff82333e00c6411b1436b Mon Sep 17 00:00:00 2001
From: Erik Johnston <erik@matrix.org>
Date: Wed, 4 Mar 2015 14:03:21 +0000
Subject: [PATCH] Don't assume db conn is a Context Manager.

Twisted adbapi wrapped connections aren't context managers.
---
 synapse/storage/__init__.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/synapse/storage/__init__.py b/synapse/storage/__init__.py
index c09228c37f..87189e54b8 100644
--- a/synapse/storage/__init__.py
+++ b/synapse/storage/__init__.py
@@ -583,7 +583,7 @@ def prepare_database(db_conn):
     """Prepares a database for usage. Will either create all necessary tables
     or upgrade from an older schema version.
     """
-    with db_conn:
+    try:
         cur = db_conn.cursor()
         version_info = _get_or_create_schema_state(cur)
 
@@ -596,6 +596,10 @@ def prepare_database(db_conn):
         cur.execute("PRAGMA user_version = %d" % (SCHEMA_VERSION,))
 
         cur.close()
+        db_conn.commit()
+    except:
+        db_conn.rollback()
+        raise
 
 
 def _setup_new_database(cur):
-- 
GitLab