Fix exception when using MSC3030 to look for remote federated events before room creation (#13197)
Complement tests: https://github.com/matrix-org/complement/pull/405 This happens when you have some messages imported before the room is created. Then use MSC3030 to look backwards before the room creation from a remote federated server. The server won't find anything locally, but will ask over federation which will have the remote event. The previous logic would choke on not having the local event assigned. ``` Failed to fetch /timestamp_to_event from hs2 because of exception(UnboundLocalError) local variable 'local_event' referenced before assignment args=("local variable 'local_event' referenced before assignment",) ```
This commit is contained in:
parent
0c95313a44
commit
a962c5a56d
|
@ -0,0 +1 @@
|
||||||
|
Fix exception when using experimental [MSC3030](https://github.com/matrix-org/matrix-spec-proposals/pull/3030) `/timestamp_to_event` endpoint to look for remote federated imported events before room creation.
|
|
@ -1375,6 +1375,7 @@ class TimestampLookupHandler:
|
||||||
# the timestamp given and the event we were able to find locally
|
# the timestamp given and the event we were able to find locally
|
||||||
is_event_next_to_backward_gap = False
|
is_event_next_to_backward_gap = False
|
||||||
is_event_next_to_forward_gap = False
|
is_event_next_to_forward_gap = False
|
||||||
|
local_event = None
|
||||||
if local_event_id:
|
if local_event_id:
|
||||||
local_event = await self.store.get_event(
|
local_event = await self.store.get_event(
|
||||||
local_event_id, allow_none=False, allow_rejected=False
|
local_event_id, allow_none=False, allow_rejected=False
|
||||||
|
@ -1461,7 +1462,10 @@ class TimestampLookupHandler:
|
||||||
ex.args,
|
ex.args,
|
||||||
)
|
)
|
||||||
|
|
||||||
if not local_event_id:
|
# To appease mypy, we have to add both of these conditions to check for
|
||||||
|
# `None`. We only expect `local_event` to be `None` when
|
||||||
|
# `local_event_id` is `None` but mypy isn't as smart and assuming as us.
|
||||||
|
if not local_event_id or not local_event:
|
||||||
raise SynapseError(
|
raise SynapseError(
|
||||||
404,
|
404,
|
||||||
"Unable to find event from %s in direction %s" % (timestamp, direction),
|
"Unable to find event from %s in direction %s" % (timestamp, direction),
|
||||||
|
|
Loading…
Reference in New Issue