summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2019-12-06 13:09:40 +0000
committerErik Johnston <erik@matrix.org>2019-12-06 16:02:21 +0000
commit75f87450d82e5039d90eabd60b70ddea97a6bdbc (patch)
tree7b75e8bd92714d7051f9525c26ca4d432dd3c63b /synapse
parentPass Database into the data store (diff)
downloadsynapse-75f87450d82e5039d90eabd60b70ddea97a6bdbc.tar.xz
Move start up DB checks to main data store.
Diffstat (limited to 'synapse')
-rw-r--r--synapse/app/homeserver.py23
-rw-r--r--synapse/storage/data_stores/__init__.py7
2 files changed, 12 insertions, 18 deletions
diff --git a/synapse/app/homeserver.py b/synapse/app/homeserver.py
index 6d6c1f8e0e..df65d0a989 100644
--- a/synapse/app/homeserver.py
+++ b/synapse/app/homeserver.py
@@ -70,7 +70,7 @@ from synapse.rest.well_known import WellKnownResource
 from synapse.server import HomeServer
 from synapse.storage import DataStore
 from synapse.storage.engines import IncorrectDatabaseSetup, create_engine
-from synapse.storage.prepare_database import UpgradeDatabaseException, prepare_database
+from synapse.storage.prepare_database import UpgradeDatabaseException
 from synapse.util.caches import CACHE_SIZE_FACTOR
 from synapse.util.httpresourcetree import create_resource_tree
 from synapse.util.manhole import manhole
@@ -294,12 +294,6 @@ class SynapseHomeServer(HomeServer):
             else:
                 logger.warning("Unrecognized listener type: %s", listener["type"])
 
-    def run_startup_checks(self, db_conn, database_engine):
-        try:
-            database_engine.check_database(db_conn.cursor())
-        except IncorrectDatabaseSetup as e:
-            quit_with_error(str(e))
-
 
 # Gauges to expose monthly active user control metrics
 current_mau_gauge = Gauge("synapse_admin_mau:current", "Current MAU")
@@ -347,16 +341,12 @@ def setup(config_options):
 
     synapse.config.logger.setup_logging(hs, config, use_worker_options=False)
 
-    logger.info("Preparing database: %s...", config.database_config["name"])
+    logger.info("Setting up server")
 
     try:
-        with hs.get_db_conn(run_new_connection=False) as db_conn:
-            prepare_database(db_conn, database_engine, config=config)
-            database_engine.on_new_connection(db_conn)
-
-            hs.run_startup_checks(db_conn, database_engine)
-
-            db_conn.commit()
+        hs.setup()
+    except IncorrectDatabaseSetup as e:
+        quit_with_error(str(e))
     except UpgradeDatabaseException:
         sys.stderr.write(
             "\nFailed to upgrade database.\n"
@@ -365,9 +355,6 @@ def setup(config_options):
         )
         sys.exit(1)
 
-    logger.info("Database prepared in %s.", config.database_config["name"])
-
-    hs.setup()
     hs.setup_master()
 
     @defer.inlineCallbacks
diff --git a/synapse/storage/data_stores/__init__.py b/synapse/storage/data_stores/__init__.py
index 79ecc62735..cecc04f03f 100644
--- a/synapse/storage/data_stores/__init__.py
+++ b/synapse/storage/data_stores/__init__.py
@@ -14,6 +14,7 @@
 # limitations under the License.
 
 from synapse.storage.database import Database
+from synapse.storage.prepare_database import prepare_database
 
 
 class DataStores(object):
@@ -26,4 +27,10 @@ class DataStores(object):
         # Note we pass in the main store here as workers use a different main
         # store.
         database = Database(hs)
+
+        # Check that db is correctly configured.
+        database.engine.check_database(db_conn.cursor())
+
+        prepare_database(db_conn, database.engine, config=hs.config)
+
         self.main = main_store_class(database, db_conn, hs)