diff --git a/synapse/handlers/__init__.py b/synapse/handlers/__init__.py
index 685792dbdc..dc5b6ef79d 100644
--- a/synapse/handlers/__init__.py
+++ b/synapse/handlers/__init__.py
@@ -32,6 +32,7 @@ from .appservice import ApplicationServicesHandler
from .sync import SyncHandler
from .auth import AuthHandler
from .identity import IdentityHandler
+from .receipts import ReceiptsHandler
class Handlers(object):
@@ -57,6 +58,7 @@ class Handlers(object):
self.directory_handler = DirectoryHandler(hs)
self.typing_notification_handler = TypingNotificationHandler(hs)
self.admin_handler = AdminHandler(hs)
+ self.receipts_handler = ReceiptsHandler(hs)
asapi = ApplicationServiceApi(hs)
self.appservice_handler = ApplicationServicesHandler(
hs, asapi, AppServiceScheduler(
diff --git a/synapse/handlers/receipts.py b/synapse/handlers/receipts.py
index f0d12d35f4..fc2f38c1c0 100644
--- a/synapse/handlers/receipts.py
+++ b/synapse/handlers/receipts.py
@@ -31,6 +31,8 @@ class ReceiptsHandler(BaseHandler):
def __init__(self, hs):
super(ReceiptsHandler, self).__init__(hs)
+ self.hs = hs
+ self.federation = hs.get_replication_layer()
self.federation.register_edu_handler(
"m.receipt", self._received_remote_receipt
)
@@ -89,13 +91,13 @@ class ReceiptsHandler(BaseHandler):
with PreserveLoggingContext():
self.notifier.on_new_event(
- "recei[t_key", self._latest_serial, rooms=[room_id]
+ "receipt_key", self._latest_serial, rooms=[room_id]
)
localusers = set()
remotedomains = set()
- rm_handler = self.homeserver.get_handlers().room_member_handler
+ rm_handler = self.hs.get_handlers().room_member_handler
yield rm_handler.fetch_room_distributions_into(
room_id, localusers=localusers, remotedomains=remotedomains
)
diff --git a/synapse/storage/__init__.py b/synapse/storage/__init__.py
index 275598adda..2bc88a7954 100644
--- a/synapse/storage/__init__.py
+++ b/synapse/storage/__init__.py
@@ -38,6 +38,8 @@ from .state import StateStore
from .signatures import SignatureStore
from .filtering import FilteringStore
+from .receipts import ReceiptsStore
+
import fnmatch
import imp
@@ -74,6 +76,7 @@ class DataStore(RoomMemberStore, RoomStore,
PushRuleStore,
ApplicationServiceTransactionStore,
EventsStore,
+ ReceiptsStore,
):
def __init__(self, hs):
diff --git a/synapse/storage/receipts.py b/synapse/storage/receipts.py
index 0168e74a0d..15c11fd410 100644
--- a/synapse/storage/receipts.py
+++ b/synapse/storage/receipts.py
@@ -18,7 +18,7 @@ from ._base import SQLBaseStore, cached
from twisted.internet import defer
-class ReceiptStore(SQLBaseStore):
+class ReceiptsStore(SQLBaseStore):
@cached
@defer.inlineCallbacks
@@ -77,6 +77,7 @@ class ReceiptStore(SQLBaseStore):
txn,
table="receipts_linearized",
values={
+ "stream_id": stream_id,
"room_id": room_id,
"receipt_type": receipt_type,
"user_id": user_id,
@@ -109,16 +110,16 @@ class ReceiptStore(SQLBaseStore):
return None
linearized_event_id = yield self.runInteraction(
- graph_to_linear, desc="insert_receipt_conv"
+ "insert_receipt_conv", graph_to_linear
)
- stream_id_manager = yield self._stream_id_gen.get_next(self)
- with stream_id_manager() as stream_id:
+ stream_id_manager = yield self._receipts_id_gen.get_next(self)
+ with stream_id_manager as stream_id:
yield self.runInteraction(
+ "insert_linearized_receipt",
self.insert_linearized_receipt_txn,
room_id, receipt_type, user_id, linearized_event_id,
stream_id=stream_id,
- desc="insert_linearized_receipt"
)
yield self.insert_graph_receipt(
@@ -131,9 +132,9 @@ class ReceiptStore(SQLBaseStore):
def insert_graph_receipt(self, room_id, receipt_type,
user_id, event_ids):
return self.runInteraction(
+ "insert_graph_receipt",
self.insert_graph_receipt_txn,
room_id, receipt_type, user_id, event_ids,
- desc="insert_graph_receipt"
)
def insert_graph_receipt_txn(self, txn, room_id, receipt_type,
|