summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2015-04-29 12:12:18 +0100
committerErik Johnston <erik@matrix.org>2015-04-29 12:12:25 +0100
commitcd0864121bce3e1ab41ce432670cc87c4ffd54cd (patch)
tree4356e41db9d4829c36165717145b36a9b7fd377a /synapse
parentUse __all__ instead of assert to stop pyflakes from warning about unused impo... (diff)
downloadsynapse-cd0864121bce3e1ab41ce432670cc87c4ffd54cd.tar.xz
Make postgres database error slightly more helpful
Diffstat (limited to 'synapse')
-rwxr-xr-xsynapse/app/homeserver.py27
-rw-r--r--synapse/storage/engines/postgres.py3
2 files changed, 17 insertions, 13 deletions
diff --git a/synapse/app/homeserver.py b/synapse/app/homeserver.py
index cbd295c0a5..29a1bf1d70 100755
--- a/synapse/app/homeserver.py
+++ b/synapse/app/homeserver.py
@@ -245,24 +245,27 @@ class SynapseHomeServer(HomeServer):
             db_conn.cursor(), database_engine, self.hostname
         )
         if not all_users_native:
-            sys.stderr.write(
-                "\n"
-                "******************************************************\n"
+            quit_with_error(
                 "Found users in database not native to %s!\n"
-                "You cannot changed a synapse server_name after it's been configured\n"
-                "******************************************************\n"
-                "\n" % (self.hostname,)
+                "You cannot changed a synapse server_name after it's been configured"
+                % (self.hostname,)
             )
-            sys.exit(1)
 
         try:
             database_engine.check_database(db_conn.cursor())
         except IncorrectDatabaseSetup as e:
-            sys.stderr.write("*" * len(e.message) + '\n')
-            sys.stderr.write(e.message)
-            sys.stderr.write('\n')
-            sys.stderr.write("*" * len(e.message) + '\n')
-            sys.exit(2)
+            quit_with_error(e.message)
+
+
+def quit_with_error(error_string):
+    message_lines = error_string.split("\n")
+    line_length = max([len(l) for l in message_lines]) + 2
+    sys.stderr.write("*" * line_length + '\n')
+    for line in message_lines:
+        if line.strip():
+            sys.stderr.write(" %s\n" % (line.strip(),))
+    sys.stderr.write("*" * line_length + '\n')
+    sys.exit(1)
 
 
 def get_version_string():
diff --git a/synapse/storage/engines/postgres.py b/synapse/storage/engines/postgres.py
index ca858daee9..7125f66f01 100644
--- a/synapse/storage/engines/postgres.py
+++ b/synapse/storage/engines/postgres.py
@@ -28,7 +28,8 @@ class PostgresEngine(object):
         rows = txn.fetchall()
         if rows and rows[0][0] != "UTF8":
             raise IncorrectDatabaseSetup(
-                "Database has incorrect encoding: '%s' instead of 'UTF8'"
+                "Database has incorrect encoding: '%s' instead of 'UTF8'\n"
+                "See docs/postgres.rst for more information."
                 % (rows[0][0],)
             )