Fix OpalServer-EvenBroadcaster integration & other OpalServer refactors#632
Fix OpalServer-EvenBroadcaster integration & other OpalServer refactors#632roekatz wants to merge 10 commits into
Conversation
✅ Deploy Preview for opal-docs canceled.
|
69854c3 to
ac7557e
Compare
ac7557e to
82f8421
Compare
089592e to
2dce27b
Compare
82f8421 to
bd420e0
Compare
bd420e0 to
fd22880
Compare
| idna>=3.3,<4 | ||
| typer>=0.4.1,<1 | ||
| fastapi>=0.109.1,<1 | ||
| fastapi_websocket_pubsub==0.3.7 |
There was a problem hiding this comment.
This will be fixed to 0.3.9 once we release fastapi_websocket_pubsub with that fix - https://github.com/permitio/fastapi_websocket_pubsub/pull/82/files
|
Thanks for this, @roekatz. This draft has been open since July 2024, now conflicts with master, and depends on an unmerged upstream change (permitio/fastapi_websocket_pubsub#82). In the meantime master gained the ignore_broadcaster_disconnected / BROADCAST_CONN_LOSS_BUGFIX_EXPERIMENT_ENABLED path, and the broadcaster reconnect/consistency problem this PR set out to fix is now addressed by the newer, tested PR #915 (PER-15065), which adds pubsub_resilience.py plus reconnect and consistency integration tests. The remaining value here is the OpalServer refactor work (deleting opal_common/topics/publisher.py, removing the redundant PUBLISHER_ENABLED/init_publisher, the server.py task-management cleanup, and the small async_utils/confi helpers) — worth keeping, but a separate, downstream-sensitive change that needs a fresh rebase. We're closing this in favor of #915 for the reconnect fix. Please reopen if you disagree. |
EventBroadcasterconnection so not to restart process (as a result of recent fix not ignoring connection failure ofEventBroadcaster) - This relies on this PR of fastapi_websocket_pubsubPubSubEndpoint&EventBroadcaster(fromfastapi_websocket_pubsub) in opal-server'sPubSub(use the shared abstraction rather than the LL objects)PubSubresponsible for detecting broadcaster disconnection an triggering the disconnect callbacks (instead of each component taking care of it separately - e.g statistics etc).topics/publisher.py(most of each is just a layer that adds nothing, useful stuff like thePeriodicPublisherwas moved to more appropriate location).OpalServermanaging background tasks.