-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Add fields to better debug where events are being soft_failed
#10168
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
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. |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2425,7 +2425,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. | ||
|
@@ -2434,6 +2438,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 | ||
|
@@ -2503,7 +2508,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, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Useful to know who is sending the bad events |
||
"hs": origin, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Useful to log which homeserver is sending all of the bad events |
||
}, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For another example of "The fourth keyword argument is |
||
) | ||
soft_failed_event_counter.inc() | ||
event.internal_metadata.soft_failed = True | ||
|
||
|
@@ -2616,7 +2631,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) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Useful to know where the bad events are being sent