Mark all MSC2716 events as historical (#10537)

* Mark all MSC2716 events as historical
pull/10567/head
Eric Eastwood 2021-08-05 20:35:53 -05:00 committed by GitHub
parent 0cb4274dbf
commit f5a368bb48
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 5 deletions

1
changelog.d/10537.misc Normal file
View File

@ -0,0 +1 @@
Mark all events stemming from the MSC2716 `/batch_send` endpoint as historical.

View File

@ -458,6 +458,9 @@ class RoomBatchSendEventRestServlet(TransactionRestServlet):
"state_key": state_event["state_key"], "state_key": state_event["state_key"],
} }
# Mark all events as historical
event_dict["content"][EventContentFields.MSC2716_HISTORICAL] = True
# Make the state events float off on their own # Make the state events float off on their own
fake_prev_event_id = "$" + random_string(43) fake_prev_event_id = "$" + random_string(43)
@ -562,7 +565,10 @@ class RoomBatchSendEventRestServlet(TransactionRestServlet):
"type": EventTypes.MSC2716_CHUNK, "type": EventTypes.MSC2716_CHUNK,
"sender": requester.user.to_string(), "sender": requester.user.to_string(),
"room_id": room_id, "room_id": room_id,
"content": {EventContentFields.MSC2716_CHUNK_ID: chunk_id_to_connect_to}, "content": {
EventContentFields.MSC2716_CHUNK_ID: chunk_id_to_connect_to,
EventContentFields.MSC2716_HISTORICAL: True,
},
# Since the chunk event is put at the end of the chunk, # Since the chunk event is put at the end of the chunk,
# where the newest-in-time event is, copy the origin_server_ts from # where the newest-in-time event is, copy the origin_server_ts from
# the last event we're inserting # the last event we're inserting
@ -589,10 +595,6 @@ class RoomBatchSendEventRestServlet(TransactionRestServlet):
for ev in events_to_create: for ev in events_to_create:
assert_params_in_dict(ev, ["type", "origin_server_ts", "content", "sender"]) assert_params_in_dict(ev, ["type", "origin_server_ts", "content", "sender"])
# Mark all events as historical
# This has important semantics within the Synapse internals to backfill properly
ev["content"][EventContentFields.MSC2716_HISTORICAL] = True
event_dict = { event_dict = {
"type": ev["type"], "type": ev["type"],
"origin_server_ts": ev["origin_server_ts"], "origin_server_ts": ev["origin_server_ts"],
@ -602,6 +604,9 @@ class RoomBatchSendEventRestServlet(TransactionRestServlet):
"prev_events": prev_event_ids.copy(), "prev_events": prev_event_ids.copy(),
} }
# Mark all events as historical
event_dict["content"][EventContentFields.MSC2716_HISTORICAL] = True
event, context = await self.event_creation_handler.create_event( event, context = await self.event_creation_handler.create_event(
await self._create_requester_for_user_id_from_app_service( await self._create_requester_for_user_id_from_app_service(
ev["sender"], requester.app_service ev["sender"], requester.app_service