diff --git a/synapse/handlers/read_marker.py b/synapse/handlers/read_marker.py
index 135a662267..fb39c8e04b 100644
--- a/synapse/handlers/read_marker.py
+++ b/synapse/handlers/read_marker.py
@@ -55,12 +55,12 @@ class ReadMarkerHandler:
should_update = True
# Get event ordering, this also ensures we know about the event
- event_ordering = await self.store.get_event_ordering(event_id)
+ event_ordering = await self.store.get_event_ordering(event_id, room_id)
if existing_read_marker:
try:
old_event_ordering = await self.store.get_event_ordering(
- existing_read_marker["event_id"]
+ existing_read_marker["event_id"], room_id
)
except SynapseError:
# Old event no longer exists, assume new is ahead. This may
diff --git a/synapse/storage/databases/main/events_worker.py b/synapse/storage/databases/main/events_worker.py
index 81fccfbccb..e39d4b9624 100644
--- a/synapse/storage/databases/main/events_worker.py
+++ b/synapse/storage/databases/main/events_worker.py
@@ -1995,16 +1995,18 @@ class EventsWorkerStore(SQLBaseStore):
return rows, to_token, True
@cached(max_entries=5000)
- async def get_event_ordering(self, event_id: str) -> Tuple[int, int]:
+ async def get_event_ordering(self, event_id: str, room_id: str) -> Tuple[int, int]:
res = await self.db_pool.simple_select_one(
table="events",
retcols=["topological_ordering", "stream_ordering"],
- keyvalues={"event_id": event_id},
+ keyvalues={"event_id": event_id, "room_id": room_id},
allow_none=True,
)
if not res:
- raise SynapseError(404, "Could not find event %s" % (event_id,))
+ raise SynapseError(
+ 404, "Could not find event %s in room %s" % (event_id, room_id)
+ )
return int(res[0]), int(res[1])
|