-
- Downloads
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`](https://github.com/matrix-org/synapse/blob/7864f33e286dec22368dc0b11c06eebb1462a51e/synapse/federation/federation_client.py#L581-L594).
Showing
- changelog.d/13320.misc 1 addition, 0 deletionschangelog.d/13320.misc
- synapse/federation/federation_client.py 81 additions, 42 deletionssynapse/federation/federation_client.py
- synapse/handlers/federation_event.py 18 additions, 4 deletionssynapse/handlers/federation_event.py
- synapse/storage/databases/main/events.py 20 additions, 3 deletionssynapse/storage/databases/main/events.py
- tests/federation/test_federation_client.py 113 additions, 12 deletionstests/federation/test_federation_client.py
Loading
Please register or sign in to comment