Handle the case of `get_missing_events` failing
Currently if a call to `/get_missing_events` fails we log an exception and stop processing the top level event we received over federation. Instead let's try and handle it sensibly given it is a somewhat expected failure mode.pull/5042/head
parent
329688c161
commit
c132c8e505
|
@ -35,6 +35,7 @@ from synapse.api.errors import (
|
|||
CodeMessageException,
|
||||
FederationDeniedError,
|
||||
FederationError,
|
||||
RequestSendFailed,
|
||||
StoreError,
|
||||
SynapseError,
|
||||
)
|
||||
|
@ -493,15 +494,25 @@ class FederationHandler(BaseHandler):
|
|||
#
|
||||
# All that said: Let's try increasing the timout to 60s and see what happens.
|
||||
|
||||
missing_events = yield self.federation_client.get_missing_events(
|
||||
origin,
|
||||
room_id,
|
||||
earliest_events_ids=list(latest),
|
||||
latest_events=[pdu],
|
||||
limit=10,
|
||||
min_depth=min_depth,
|
||||
timeout=60000,
|
||||
)
|
||||
try:
|
||||
missing_events = yield self.federation_client.get_missing_events(
|
||||
origin,
|
||||
room_id,
|
||||
earliest_events_ids=list(latest),
|
||||
latest_events=[pdu],
|
||||
limit=10,
|
||||
min_depth=min_depth,
|
||||
timeout=60000,
|
||||
)
|
||||
except RequestSendFailed as e:
|
||||
# We failed to get the missing events, but since we need to handle
|
||||
# the case of `get_missing_events` not returning the necessary
|
||||
# events anyway, it is safe to simply log the error and continue.
|
||||
logger.warn(
|
||||
"[%s %s]: Failed to get prev_events for %s: %s",
|
||||
room_id, event_id, e,
|
||||
)
|
||||
return
|
||||
|
||||
logger.info(
|
||||
"[%s %s]: Got %d prev_events: %s",
|
||||
|
|
Loading…
Reference in New Issue