MatrixSynapse/synapse
Eric Eastwood 0f971ca68e
Update `get_pdu` to return the original, pristine `EventBase` (#13320)
Update `get_pdu` to return the untouched, pristine `EventBase` as it was originally seen over federation (no metadata added). Previously, we returned the same `event` reference that we stored in the cache which downstream code modified in place and added metadata like setting it as an `outlier`  and essentially poisoned our cache. Now we always return a copy of the `event` so the original can stay pristine in our cache and re-used for the next cache call.

Split out from https://github.com/matrix-org/synapse/pull/13205

As discussed at:

 - https://github.com/matrix-org/synapse/pull/13205#discussion_r918365746
 - https://github.com/matrix-org/synapse/pull/13205#discussion_r918366125

Related to https://github.com/matrix-org/synapse/issues/12584. This PR doesn't fix that issue because it hits [`get_event` which exists from the local database before it tries to `get_pdu`](7864f33e28/synapse/federation/federation_client.py (L581-L594)).
2022-07-20 15:58:51 -05:00
..
_scripts
api
app
appservice
config
crypto
events
federation Update `get_pdu` to return the original, pristine `EventBase` (#13320) 2022-07-20 15:58:51 -05:00
handlers Update `get_pdu` to return the original, pristine `EventBase` (#13320) 2022-07-20 15:58:51 -05:00
http
logging
metrics
module_api
push
replication
res
rest
server_notices
spam_checker_api
state
static
storage Update `get_pdu` to return the original, pristine `EventBase` (#13320) 2022-07-20 15:58:51 -05:00
streams
util
__init__.py
event_auth.py
notifier.py
py.typed
server.py
types.py
visibility.py