summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2016-01-28 14:46:08 +0000
committerErik Johnston <erik@matrix.org>2016-01-28 14:46:08 +0000
commit19fd4259284598a89036418de62e88a282db9566 (patch)
tree2129256c6f81a4274f18c36ccd81173780949c59
parentChange load limit params (diff)
parentMerge pull request #534 from matrix-org/erikj/setup (diff)
downloadsynapse-19fd4259284598a89036418de62e88a282db9566.tar.xz
Merge branch 'develop' of github.com:matrix-org/synapse into erikj/sync
-rwxr-xr-xjenkins.sh4
-rwxr-xr-xsynapse/app/homeserver.py13
-rw-r--r--synapse/server.py4
-rw-r--r--synapse/storage/__init__.py27
4 files changed, 20 insertions, 28 deletions
diff --git a/jenkins.sh b/jenkins.sh
index e2bb706c7f..804bbd49f1 100755
--- a/jenkins.sh
+++ b/jenkins.sh
@@ -52,7 +52,7 @@ RUN_POSTGRES=""
 
 for port in $(($PORT_BASE + 1)) $(($PORT_BASE + 2)); do
     if psql synapse_jenkins_$port <<< ""; then
-        RUN_POSTGRES=$RUN_POSTGRES:$port
+        RUN_POSTGRES="$RUN_POSTGRES:$port"
         cat > localhost-$port/database.yaml << EOF
 name: psycopg2
 args:
@@ -62,7 +62,7 @@ EOF
 done
 
 # Run if both postgresql databases exist
-if test $RUN_POSTGRES = ":$(($PORT_BASE + 1)):$(($PORT_BASE + 2))"; then
+if test "$RUN_POSTGRES" = ":$(($PORT_BASE + 1)):$(($PORT_BASE + 2))"; then
     echo >&2 "Running sytest with PostgreSQL";
     $TOX_BIN/pip install psycopg2
     ./run-tests.pl --coverage -O tap --synapse-directory $WORKSPACE \
diff --git a/synapse/app/homeserver.py b/synapse/app/homeserver.py
index 56a34bd50b..e5066c48ef 100755
--- a/synapse/app/homeserver.py
+++ b/synapse/app/homeserver.py
@@ -255,12 +255,13 @@ class SynapseHomeServer(HomeServer):
             quit_with_error(e.message)
 
     def get_db_conn(self):
-        db_conn = self.database_engine.module.connect(
-            **{
-                k: v for k, v in self.db_config.get("args", {}).items()
-                if not k.startswith("cp_")
-            }
-        )
+        # Any param beginning with cp_ is a parameter for adbapi, and should
+        # not be passed to the database engine.
+        db_params = {
+            k: v for k, v in self.db_config.get("args", {}).items()
+            if not k.startswith("cp_")
+        }
+        db_conn = self.database_engine.module.connect(**db_params)
 
         self.database_engine.on_new_connection(db_conn)
         return db_conn
diff --git a/synapse/server.py b/synapse/server.py
index e013a349c9..5fee7fe130 100644
--- a/synapse/server.py
+++ b/synapse/server.py
@@ -28,7 +28,7 @@ from synapse.notifier import Notifier
 from synapse.api.auth import Auth
 from synapse.handlers import Handlers
 from synapse.state import StateHandler
-from synapse.storage import get_datastore
+from synapse.storage import DataStore
 from synapse.util import Clock
 from synapse.util.distributor import Distributor
 from synapse.streams.events import EventSources
@@ -117,7 +117,7 @@ class HomeServer(object):
 
     def setup(self):
         logger.info("Setting up.")
-        self.datastore = get_datastore(self)
+        self.datastore = DataStore(self.get_db_conn(), self)
         logger.info("Finished setting up.")
 
     def get_ip_from_request(self, request):
diff --git a/synapse/storage/__init__.py b/synapse/storage/__init__.py
index c8cab45f77..eb88842308 100644
--- a/synapse/storage/__init__.py
+++ b/synapse/storage/__init__.py
@@ -61,22 +61,6 @@ logger = logging.getLogger(__name__)
 LAST_SEEN_GRANULARITY = 120*1000
 
 
-def get_datastore(hs):
-    logger.info("getting called!")
-
-    conn = hs.get_db_conn()
-    try:
-        cur = conn.cursor()
-        cur.execute("SELECT MIN(stream_ordering) FROM events",)
-        rows = cur.fetchall()
-        min_token = rows[0][0] if rows and rows[0] and rows[0][0] else -1
-        min_token = min(min_token, -1)
-
-        return DataStore(conn, hs, min_token)
-    finally:
-        conn.close()
-
-
 class DataStore(RoomMemberStore, RoomStore,
                 RegistrationStore, StreamStore, ProfileStore,
                 PresenceStore, TransactionStore,
@@ -98,10 +82,17 @@ class DataStore(RoomMemberStore, RoomStore,
                 EventPushActionsStore
                 ):
 
-    def __init__(self, db_conn, hs, min_stream_token):
+    def __init__(self, db_conn, hs):
         self.hs = hs
 
-        self.min_stream_token = min_stream_token
+        cur = db_conn.cursor()
+        try:
+            cur.execute("SELECT MIN(stream_ordering) FROM events",)
+            rows = cur.fetchall()
+            self.min_stream_token = rows[0][0] if rows and rows[0] and rows[0][0] else -1
+            self.min_stream_token = min(self.min_stream_token, -1)
+        finally:
+            cur.close()
 
         self.client_ip_last_seen = Cache(
             name="client_ip_last_seen",