forked from MirrorHub/synapse
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`](
|
||
---|---|---|
.. | ||
api | ||
app | ||
appservice | ||
config | ||
crypto | ||
events | ||
federation | ||
handlers | ||
http | ||
logging | ||
module_api | ||
push | ||
replication | ||
rest | ||
scripts | ||
server_notices | ||
state | ||
storage | ||
test_utils | ||
util | ||
__init__.py | ||
server.py | ||
test_distributor.py | ||
test_event_auth.py | ||
test_federation.py | ||
test_mau.py | ||
test_metrics.py | ||
test_phone_home.py | ||
test_server.py | ||
test_state.py | ||
test_terms_auth.py | ||
test_test_utils.py | ||
test_types.py | ||
test_visibility.py | ||
unittest.py | ||
utils.py |