Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Commit

Permalink
Add fields to better debug where events are being soft_failed (#10168)
Browse files Browse the repository at this point in the history
Follow-up to #10156 (comment)
  • Loading branch information
MadLittleMods authored Jun 17, 2021
1 parent 52c60bd commit a911dd7
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
1 change: 1 addition & 0 deletions changelog.d/10168.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add extra logging fields to better debug where events are being soft failed.
21 changes: 18 additions & 3 deletions synapse/handlers/federation.py
Original file line number Diff line number Diff line change
Expand Up @@ -2423,7 +2423,11 @@ async def _persist_auth_tree(
)

async def _check_for_soft_fail(
self, event: EventBase, state: Optional[Iterable[EventBase]], backfilled: bool
self,
event: EventBase,
state: Optional[Iterable[EventBase]],
backfilled: bool,
origin: str,
) -> None:
"""Checks if we should soft fail the event; if so, marks the event as
such.
Expand All @@ -2432,6 +2436,7 @@ async def _check_for_soft_fail(
event
state: The state at the event if we don't have all the event's prev events
backfilled: Whether the event is from backfill
origin: The host the event originates from.
"""
# For new (non-backfilled and non-outlier) events we check if the event
# passes auth based on the current state. If it doesn't then we
Expand Down Expand Up @@ -2501,7 +2506,17 @@ async def _check_for_soft_fail(
try:
event_auth.check(room_version_obj, event, auth_events=current_auth_events)
except AuthError as e:
logger.warning("Soft-failing %r because %s", event, e)
logger.warning(
"Soft-failing %r (from %s) because %s",
event,
e,
origin,
extra={
"room_id": event.room_id,
"mxid": event.sender,
"hs": origin,
},
)
soft_failed_event_counter.inc()
event.internal_metadata.soft_failed = True

Expand Down Expand Up @@ -2614,7 +2629,7 @@ async def _check_event_auth(
context.rejected = RejectedReason.AUTH_ERROR

if not context.rejected:
await self._check_for_soft_fail(event, state, backfilled)
await self._check_for_soft_fail(event, state, backfilled, origin=origin)

if event.type == EventTypes.GuestAccess and not context.rejected:
await self.maybe_kick_guest_users(event)
Expand Down

0 comments on commit a911dd7

Please sign in to comment.