Skip to content

Fix: Handle non-dict DISPATCH payload data in payload_to_event - #204

Merged
yanyongyu merged 2 commits into
masterfrom
copilot/fix-resumed-event-typeerror
Jun 4, 2026
Merged

Fix: Handle non-dict DISPATCH payload data in payload_to_event#204
yanyongyu merged 2 commits into
masterfrom
copilot/fix-resumed-event-typeerror

Conversation

Copilot AI commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

RESUMED dispatches may carry data as an empty string instead of an object. payload_to_event previously unpacked payload.data as a mapping unconditionally, triggering TypeError: 'str' object is not a mapping during reconnect flows.

  • Root cause

    • Event conversion assumed Dispatch.data is always dict and used **payload.data in both known and unknown event paths.
  • Change

    • Normalize payload.data before model parsing:
      • use original value when it is a dict
      • otherwise ignore it ({})
  • Behavior impact

    • Prevents reconnect-time parse failures for malformed/non-object dispatch payloads.
    • Keeps existing parsing behavior unchanged for valid dict payloads.
@staticmethod
def payload_to_event(payload: Dispatch) -> Event:
    EventClass = EVENT_CLASSES.get(payload.type, None)
    data = payload.data if isinstance(payload.data, dict) else {}
    if EventClass is None:
        log("WARNING", f"Unknown payload type: {payload.type}")
        event = type_validate_python(Event, {"event_id": payload.id, **data})
        event.__type__ = payload.type  # type: ignore
        return event
    return type_validate_python(EventClass, {"event_id": payload.id, **data})

Copilot AI changed the title [WIP] Fix TypeError caused by empty string in RESUMED event data Handle non-dict DISPATCH payload data in payload_to_event to prevent RESUMED parse crashes Jun 4, 2026
Copilot AI requested a review from yanyongyu June 4, 2026 10:06
@yanyongyu
yanyongyu marked this pull request as ready for review June 4, 2026 10:14
@yanyongyu yanyongyu changed the title Handle non-dict DISPATCH payload data in payload_to_event to prevent RESUMED parse crashes Fix: Handle non-dict DISPATCH payload data in payload_to_event Jun 4, 2026
@yanyongyu
yanyongyu merged commit 7bb87b7 into master Jun 4, 2026
2 checks passed
@yanyongyu
yanyongyu deleted the copilot/fix-resumed-event-typeerror branch June 4, 2026 10:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

Bug: RESUMED 事件的 data 字段为空字符串导致 TypeError

2 participants