mirror of
https://github.com/element-hq/synapse.git
synced 2026-05-24 08:45:18 +00:00
Additional review comments: non-test files
This commit is contained in:
@@ -215,7 +215,7 @@ async def check_state_independent_auth_rules(
|
||||
# we should have all the prev state events by now, so if we do not, that suggests
|
||||
# a synapse programming error
|
||||
known_prev_state_event_ids = set(prev_state_events)
|
||||
raise RuntimeError(
|
||||
raise AssertionError(
|
||||
f"Event {event.event_id} has unknown prev_state_events "
|
||||
+ f"{len(prev_state_events)} != {len(prev_state_events_ids)} "
|
||||
+ f"{prev_state_events_ids - known_prev_state_event_ids} missing "
|
||||
@@ -538,11 +538,10 @@ def _check_create(event: "EventBase") -> None:
|
||||
raise AuthError(403, "Create event has prev events")
|
||||
|
||||
# State DAGs 1.2 If it has any prev_state_events, reject.
|
||||
if (
|
||||
event.room_version.msc4242_state_dags
|
||||
and cast(FrozenEventVMSC4242, event).prev_state_events
|
||||
):
|
||||
raise AuthError(403, "Create event has prev state events")
|
||||
if event.room_version.msc4242_state_dags:
|
||||
assert isinstance(event, FrozenEventVMSC4242)
|
||||
if len(event.prev_state_events) > 0:
|
||||
raise AuthError(403, "Create event has prev state events")
|
||||
|
||||
if event.room_version.msc4291_room_ids_as_hashes:
|
||||
# 1.2 If the create event has a room_id, reject
|
||||
|
||||
@@ -2996,12 +2996,14 @@ class PersistEventsStore:
|
||||
},
|
||||
)
|
||||
return
|
||||
assert len(event.prev_state_events) > 0
|
||||
self.db_pool.simple_upsert_many_txn(
|
||||
txn,
|
||||
table="msc4242_state_dag_edges",
|
||||
key_names=["room_id", "event_id", "prev_state_event_id"],
|
||||
key_values=[
|
||||
(event.room_id, event.event_id, prev_state_event) for prev_state_event in event.prev_state_events
|
||||
(event.room_id, event.event_id, prev_state_event)
|
||||
for prev_state_event in event.prev_state_events
|
||||
],
|
||||
value_names=(),
|
||||
value_values=(),
|
||||
|
||||
@@ -71,6 +71,10 @@ purge_room_tables_with_room_id_column = (
|
||||
# so must be deleted first.
|
||||
"sliding_sync_joined_rooms",
|
||||
"sliding_sync_membership_snapshots",
|
||||
# Note: msc4242_state_dag_forward_extremities/edges have a foreign key to the `events` table
|
||||
# so must be deleted first.
|
||||
"msc4242_state_dag_forward_extremities",
|
||||
"msc4242_state_dag_edges",
|
||||
"events",
|
||||
"federation_inbound_events_staging",
|
||||
"receipts_graph",
|
||||
|
||||
@@ -17,7 +17,7 @@ CREATE TABLE IF NOT EXISTS msc4242_state_dag_forward_extremities(
|
||||
event_id TEXT NOT NULL REFERENCES events(event_id) ON DELETE CASCADE,
|
||||
-- it doesn't make sense to reference the same event multiple times, and this uniqueness
|
||||
-- index is also used to delete events once they are no longer forward extremities.
|
||||
UNIQUE (event_id, room_id)
|
||||
UNIQUE (event_id)
|
||||
);
|
||||
-- When creating events, we want to select all forward extremities for a room which this index helps with.
|
||||
CREATE INDEX msc4242_state_dag_room ON msc4242_state_dag_forward_extremities(room_id);
|
||||
|
||||
Reference in New Issue
Block a user