Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 9cd7610

Browse files
author
David Robertson
committed
Revert "Add event_stream_ordering column to membership state tables (#14979)"
This reverts commit 5fdc12f.
1 parent f630536 commit 9cd7610

File tree

4 files changed

+11
-145
lines changed

4 files changed

+11
-145
lines changed

synapse/storage/databases/main/events.py

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1147,15 +1147,11 @@ def _update_current_state_txn(
11471147
# been inserted into room_memberships.
11481148
txn.execute_batch(
11491149
"""INSERT INTO current_state_events
1150-
(room_id, type, state_key, event_id, membership, event_stream_ordering)
1151-
VALUES (
1152-
?, ?, ?, ?,
1153-
(SELECT membership FROM room_memberships WHERE event_id = ?),
1154-
(SELECT stream_ordering FROM events WHERE event_id = ?)
1155-
)
1150+
(room_id, type, state_key, event_id, membership)
1151+
VALUES (?, ?, ?, ?, (SELECT membership FROM room_memberships WHERE event_id = ?))
11561152
""",
11571153
[
1158-
(room_id, key[0], key[1], ev_id, ev_id, ev_id)
1154+
(room_id, key[0], key[1], ev_id, ev_id)
11591155
for key, ev_id in to_insert.items()
11601156
],
11611157
)
@@ -1182,15 +1178,11 @@ def _update_current_state_txn(
11821178
if to_insert:
11831179
txn.execute_batch(
11841180
"""INSERT INTO local_current_membership
1185-
(room_id, user_id, event_id, membership, event_stream_ordering)
1186-
VALUES (
1187-
?, ?, ?,
1188-
(SELECT membership FROM room_memberships WHERE event_id = ?),
1189-
(SELECT stream_ordering FROM events WHERE event_id = ?)
1190-
)
1181+
(room_id, user_id, event_id, membership)
1182+
VALUES (?, ?, ?, (SELECT membership FROM room_memberships WHERE event_id = ?))
11911183
""",
11921184
[
1193-
(room_id, key[1], ev_id, ev_id, ev_id)
1185+
(room_id, key[1], ev_id, ev_id)
11941186
for key, ev_id in to_insert.items()
11951187
if key[0] == EventTypes.Member and self.is_mine_id(key[1])
11961188
],
@@ -1798,7 +1790,6 @@ def _store_room_members_txn(
17981790
table="room_memberships",
17991791
keys=(
18001792
"event_id",
1801-
"event_stream_ordering",
18021793
"user_id",
18031794
"sender",
18041795
"room_id",
@@ -1809,7 +1800,6 @@ def _store_room_members_txn(
18091800
values=[
18101801
(
18111802
event.event_id,
1812-
event.internal_metadata.stream_ordering,
18131803
event.state_key,
18141804
event.user_id,
18151805
event.room_id,
@@ -1842,7 +1832,6 @@ def _store_room_members_txn(
18421832
keyvalues={"room_id": event.room_id, "user_id": event.state_key},
18431833
values={
18441834
"event_id": event.event_id,
1845-
"event_stream_ordering": event.internal_metadata.stream_ordering,
18461835
"membership": event.membership,
18471836
},
18481837
)

synapse/storage/databases/main/events_bg_updates.py

Lines changed: 1 addition & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
import attr
1919

20-
from synapse.api.constants import EventContentFields, EventTypes, RelationTypes
20+
from synapse.api.constants import EventContentFields, RelationTypes
2121
from synapse.api.room_versions import KNOWN_ROOM_VERSIONS
2222
from synapse.events import make_event_from_dict
2323
from synapse.storage._base import SQLBaseStore, db_to_json, make_in_list_sql_clause
@@ -71,10 +71,6 @@ class _BackgroundUpdates:
7171

7272
EVENTS_JUMP_TO_DATE_INDEX = "events_jump_to_date_index"
7373

74-
POPULATE_MEMBERSHIP_EVENT_STREAM_ORDERING = (
75-
"populate_membership_event_stream_ordering"
76-
)
77-
7874

7975
@attr.s(slots=True, frozen=True, auto_attribs=True)
8076
class _CalculateChainCover:
@@ -103,10 +99,6 @@ def __init__(
10399
):
104100
super().__init__(database, db_conn, hs)
105101

106-
self.db_pool.updates.register_background_update_handler(
107-
_BackgroundUpdates.POPULATE_MEMBERSHIP_EVENT_STREAM_ORDERING,
108-
self._populate_membership_event_stream_ordering,
109-
)
110102
self.db_pool.updates.register_background_update_handler(
111103
_BackgroundUpdates.EVENT_ORIGIN_SERVER_TS_NAME,
112104
self._background_reindex_origin_server_ts,
@@ -1506,97 +1498,3 @@ def _populate_txn(txn: LoggingTransaction) -> bool:
15061498
)
15071499

15081500
return batch_size
1509-
1510-
async def _populate_membership_event_stream_ordering(
1511-
self, progress: JsonDict, batch_size: int
1512-
) -> int:
1513-
def _populate_membership_event_stream_ordering(
1514-
txn: LoggingTransaction,
1515-
) -> bool:
1516-
1517-
if "max_stream_ordering" in progress:
1518-
max_stream_ordering = progress["max_stream_ordering"]
1519-
else:
1520-
txn.execute("SELECT max(stream_ordering) FROM events")
1521-
res = txn.fetchone()
1522-
if res is None or res[0] is None:
1523-
return True
1524-
else:
1525-
max_stream_ordering = res[0]
1526-
1527-
start = progress.get("stream_ordering", 0)
1528-
stop = start + batch_size
1529-
1530-
sql = f"""
1531-
SELECT room_id, event_id, stream_ordering
1532-
FROM events
1533-
WHERE
1534-
type = '{EventTypes.Member}'
1535-
AND stream_ordering >= ?
1536-
AND stream_ordering < ?
1537-
"""
1538-
txn.execute(sql, (start, stop))
1539-
1540-
rows: List[Tuple[str, str, int]] = cast(
1541-
List[Tuple[str, str, int]], txn.fetchall()
1542-
)
1543-
1544-
event_ids: List[Tuple[str]] = []
1545-
event_stream_orderings: List[Tuple[int]] = []
1546-
1547-
for _, event_id, event_stream_ordering in rows:
1548-
event_ids.append((event_id,))
1549-
event_stream_orderings.append((event_stream_ordering,))
1550-
1551-
self.db_pool.simple_update_many_txn(
1552-
txn,
1553-
table="current_state_events",
1554-
key_names=("event_id",),
1555-
key_values=event_ids,
1556-
value_names=("event_stream_ordering",),
1557-
value_values=event_stream_orderings,
1558-
)
1559-
1560-
self.db_pool.simple_update_many_txn(
1561-
txn,
1562-
table="room_memberships",
1563-
key_names=("event_id",),
1564-
key_values=event_ids,
1565-
value_names=("event_stream_ordering",),
1566-
value_values=event_stream_orderings,
1567-
)
1568-
1569-
# NOTE: local_current_membership has no index on event_id, so only
1570-
# the room ID here will reduce the query rows read.
1571-
for room_id, event_id, event_stream_ordering in rows:
1572-
txn.execute(
1573-
"""
1574-
UPDATE local_current_membership
1575-
SET event_stream_ordering = ?
1576-
WHERE room_id = ? AND event_id = ?
1577-
""",
1578-
(event_stream_ordering, room_id, event_id),
1579-
)
1580-
1581-
self.db_pool.updates._background_update_progress_txn(
1582-
txn,
1583-
_BackgroundUpdates.POPULATE_MEMBERSHIP_EVENT_STREAM_ORDERING,
1584-
{
1585-
"stream_ordering": stop,
1586-
"max_stream_ordering": max_stream_ordering,
1587-
},
1588-
)
1589-
1590-
return stop > max_stream_ordering
1591-
1592-
finished = await self.db_pool.runInteraction(
1593-
"_populate_membership_event_stream_ordering",
1594-
_populate_membership_event_stream_ordering,
1595-
)
1596-
1597-
if finished:
1598-
await self.db_pool.updates._end_background_update(
1599-
_BackgroundUpdates.POPULATE_MEMBERSHIP_EVENT_STREAM_ORDERING
1600-
)
1601-
1602-
return batch_size

synapse/storage/databases/main/events_worker.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1779,7 +1779,7 @@ def get_ex_outlier_stream_rows_txn(
17791779
txn: LoggingTransaction,
17801780
) -> List[Tuple[int, str, str, str, str, str, str, str, bool, bool]]:
17811781
sql = (
1782-
"SELECT out.event_stream_ordering, e.event_id, e.room_id, e.type,"
1782+
"SELECT event_stream_ordering, e.event_id, e.room_id, e.type,"
17831783
" se.state_key, redacts, relates_to_id, membership, rejections.reason IS NOT NULL,"
17841784
" e.outlier"
17851785
" FROM events AS e"
@@ -1791,10 +1791,10 @@ def get_ex_outlier_stream_rows_txn(
17911791
" LEFT JOIN event_relations USING (event_id)"
17921792
" LEFT JOIN room_memberships USING (event_id)"
17931793
" LEFT JOIN rejections USING (event_id)"
1794-
" WHERE ? < out.event_stream_ordering"
1795-
" AND out.event_stream_ordering <= ?"
1794+
" WHERE ? < event_stream_ordering"
1795+
" AND event_stream_ordering <= ?"
17961796
" AND out.instance_name = ?"
1797-
" ORDER BY out.event_stream_ordering ASC"
1797+
" ORDER BY event_stream_ordering ASC"
17981798
)
17991799

18001800
txn.execute(sql, (last_id, current_id, instance_name))

synapse/storage/schema/main/delta/73/26membership_tables_event_stream_ordering.sql

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)