Skip to content

WS connection close can cause render exception #21

Closed

Description

@Archmonger

Old Behavior

If the webpage is closed or refreshed prior to component load, an exception will occur.

2021-10-16T22:57:18-0700 | ERROR | Failed to render Button(2992041646976, websocket=WebsocketConnection(scope={'type': 'websocket', 'path': '/_idom/websocket/test_app.components.Button/', 'raw_path': b'/_idom/websocket/test_app.components.Button/', 'headers': [(b'host', b'127.0.0.1:8000'), (b'connection', b'Upgrade'), (b'pragma', b'no-cache'), (b'cache-control', b'no-cache'), (b'upgrade', b'websocket'), (b'origin', b'http://127.0.0.1:8000'), (b'sec-websocket-version', b'13'), (b'user-agent', b'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like 
Gecko) Chrome/94.0.4606.81 Safari/537.36'), (b'accept-encoding', b'gzip, deflate, br'), (b'accept-language', b'en'), (b'cookie', b'csrftoken=jzHH9Te6cml6zXxOwjSkdsMupUjoIPPLGkNGMvCsyUsdidzNmYJNBFWeflJI59Qe; sessionid=1t95jxh44o9a1zfzcgsamlhau1mxjilj'), (b'sec-gpc', b'1'), (b'sec-websocket-key', b'd5LydM5OiDLcAgSqam7GcQ=='), (b'sec-websocket-extensions', b'permessage-deflate; client_max_window_bits')], 'query_string': b'kwargs=%7B%7D', 'client': ['127.0.0.1', 52403], 'server': ['127.0.0.1', 8000], 'subprotocols': [], 'asgi': {'version': '3.0'}, 'cookies': {'csrftoken': 'jzHH9Te6cml6zXxOwjSkdsMupUjoIPPLGkNGMvCsyUsdidzNmYJNBFWeflJI59Qe', 'sessionid': '1t95jxh44o9a1zfzcgsamlhau1mxjilj'}, 'session': <django.utils.functional.LazyObject object at 0x000002B8A39433A0>, 'user': <channels.auth.UserLazyObject object at 0x000002B8A3943CA0>, 'path_remaining': '', 'url_route': {'args': (), 'kwargs': {'view_id': 'test_app.components.Button'}}}, close=<bound method AsyncWebsocketConsumer.close of <django_idom.websocket_consumer.IdomAsyncWebsocketConsumer object at 0x000002B8A3943E50>>, disconnect=<bound method IdomAsyncWebsocketConsumer.disconnect of <django_idom.websocket_consumer.IdomAsyncWebsocketConsumer object at 0x000002B8A3943E50>>, view_id='test_app.components.Button'))
Traceback (most recent call last):
  File "C:\Users\username\Documents\Repositories\django-idom\.venv\lib\site-packages\idom\core\layout.py", line 207, in _render_component
    self._render_model(old_state, new_state, raw_model)
  File "C:\Users\username\Documents\Repositories\django-idom\.venv\lib\site-packages\idom\core\layout.py", line 245, in _render_model
    self._render_model_children(old_state, new_state, raw_model.get("children", []))
  File "C:\Users\username\Documents\Repositories\django-idom\.venv\lib\site-packages\idom\core\layout.py", line 364, in _render_model_children
    self._render_model(old_child_state, new_child_state, child)
  File "C:\Users\username\Documents\Repositories\django-idom\.venv\lib\site-packages\idom\core\layout.py", line 244, in _render_model
    self._render_model_attributes(old_state, new_state, raw_model)
  File "C:\Users\username\Documents\Repositories\django-idom\.venv\lib\site-packages\idom\core\layout.py", line 266, in _render_model_attributes
    self._render_model_event_handlers_without_old_state(
  File "C:\Users\username\Documents\Repositories\django-idom\.venv\lib\site-packages\idom\core\layout.py", line 306, in _render_model_event_handlers_without_old_state
    self._event_handlers[target] = handler
AttributeError: _event_handlers

New Behavior

Need to gracefully handle WS close within _render_model

Implementation Details

No response

Code of Conduct

Activity

  1. linked a pull request that will close this issueThreaded dispatcher loop #23on Oct 28, 2021
  2. changed the title [-]WS connection close can cause Render exception[/-] [+]WS connection close can cause render exception[/+] on Dec 30, 2022
  3. Archmonger commented on Jan 11, 2023

    @Archmonger
    ContributorAuthor

    @rmorshea What do you think about moving this issue to core?

  4. rmorshea commented on Jan 12, 2023

    @rmorshea
    Contributor

    That seems right to me.

  5. rmorshea commented on Jan 12, 2023

    @rmorshea
    Contributor

    Do we know if this still happens though?

  6. Archmonger commented on Jan 12, 2023

    @Archmonger
    ContributorAuthor

    I'll check.

  7. Archmonger commented on Jan 16, 2023

    @Archmonger
    ContributorAuthor

    I wasn't able to replicate this with IDOM v0.43.0.

    Closing issue.

  8. added theissue type on Mar 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions