summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorKegan Dougal <kegan@matrix.org>2015-03-09 17:25:20 +0000
committerKegan Dougal <kegan@matrix.org>2015-03-09 17:25:20 +0000
commitb98cd03193476dea5f8b47e79d4122bb18449ae2 (patch)
tree136a44b5068b2870b0b614ec8f3e732297454724 /synapse
parentUse seconds; start gluing in the AS scheduler into the AS handler. (diff)
downloadsynapse-b98cd03193476dea5f8b47e79d4122bb18449ae2.tar.xz
Use event IDs instead of dumping event content in the txns table.
Diffstat (limited to 'synapse')
-rw-r--r--synapse/storage/appservice.py14
-rw-r--r--synapse/storage/schema/delta/15/appservice_txns.sql2
2 files changed, 9 insertions, 7 deletions
diff --git a/synapse/storage/appservice.py b/synapse/storage/appservice.py
index d89b0cc8c9..c3c0a0bd43 100644
--- a/synapse/storage/appservice.py
+++ b/synapse/storage/appservice.py
@@ -442,10 +442,11 @@ class ApplicationServiceTransactionStore(SQLBaseStore):
         new_txn_id = max(highest_txn_id, last_txn_id) + 1
 
         # Insert new txn into txn table
+        event_ids = [e.event_id for e in events]
         txn.execute(
-            "INSERT INTO application_services_txns(as_id, txn_id, content) "
+            "INSERT INTO application_services_txns(as_id, txn_id, event_ids) "
             "VALUES(?,?,?)",
-            (service.id, new_txn_id, encode_canonical_json(events))
+            (service.id, new_txn_id, json.dumps(event_ids))
         )
         return AppServiceTransaction(
             service=service, id=new_txn_id, events=events
@@ -491,7 +492,7 @@ class ApplicationServiceTransactionStore(SQLBaseStore):
             dict(last_txn=txn_id)
         )
 
-        # Delete txn contents
+        # Delete txn
         self._simple_delete_txn(
             txn, "application_services_txns",
             dict(txn_id=txn_id, as_id=service.id)
@@ -526,10 +527,11 @@ class ApplicationServiceTransactionStore(SQLBaseStore):
             # the min(txn_id) part will force a row, so entry may not be None
             return None
 
+        event_ids = json.loads(entry["event_ids"])
+        events = self._get_events_txn(event_ids)
+
         return AppServiceTransaction(
-            service=service, id=entry["txn_id"], events=json.loads(
-                entry["content"]
-            )
+            service=service, id=entry["txn_id"], events=events
         )
 
     def _get_last_txn(self, txn, service_id):
diff --git a/synapse/storage/schema/delta/15/appservice_txns.sql b/synapse/storage/schema/delta/15/appservice_txns.sql
index ff15aa019e..13bbb2de2e 100644
--- a/synapse/storage/schema/delta/15/appservice_txns.sql
+++ b/synapse/storage/schema/delta/15/appservice_txns.sql
@@ -23,7 +23,7 @@ CREATE TABLE IF NOT EXISTS application_services_state(
 CREATE TABLE IF NOT EXISTS application_services_txns(
     as_id INTEGER NOT NULL,
     txn_id INTEGER NOT NULL,
-    content TEXT NOT NULL,
+    event_ids TEXT NOT NULL,
     UNIQUE(as_id, txn_id) ON CONFLICT ROLLBACK
 );