-
- Downloads
Fix joining remote rooms when a `on_new_event` callback is registered (#16973)
Since Synapse 1.76.0, any module which registers a `on_new_event` callback would brick the ability to join remote rooms. This is because this callback tried to get the full state of the room, which would end up in a deadlock. Related: https://github.com/matrix-org/synapse-auto-accept-invite/issues/18 The following module would brick the ability to join remote rooms: ```python from typing import Any, Dict, Literal, Union import logging from synapse.module_api import ModuleApi, EventBase logger = logging.getLogger(__name__) class MyModule: def __init__(self, config: None, api: ModuleApi): self._api = api self._config = config self._api.register_third_party_rules_callbacks( on_new_event=self.on_new_event, ) async def on_new_event(self, event: EventBase, _state_map: Any) -> None: logger.info(f"Received new event: {event}") @staticmethod def parse_config(_config: Dict[str, Any]) -> None: return None ``` This is technically a breaking change, as we are now passing partial state on the `on_new_event` callback. However, this callback was broken for federated rooms since 1.76.0, and local rooms have full state anyway, so it's unlikely that it would change anything.
Showing
- changelog.d/16973.bugfix 1 addition, 0 deletionschangelog.d/16973.bugfix
- docs/modules/third_party_rules_callbacks.md 4 additions, 0 deletionsdocs/modules/third_party_rules_callbacks.md
- synapse/module_api/callbacks/third_party_event_rules_callbacks.py 9 additions, 14 deletions...module_api/callbacks/third_party_event_rules_callbacks.py
- synapse/storage/controllers/state.py 7 additions, 2 deletionssynapse/storage/controllers/state.py
Loading
Please register or sign in to comment