[fix] Fixed live updates for "Send commands" #1017
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Checklist
Description of Changes
Bug:
When multiple connections are made to the websocket command endpoint of the same device (e.g. when multiple browser tabs are open for the same device), the UI does not receive updates from the websocket and keeps showing a loader in the command output field, even when the command has completed execution.
Fix:
The issue was caused by mutating the shared
eventdictionary in thesend_updatemethod ofCommandConsumer. Specifically, callingevent.pop('type')removed the'type'key from the event. Since the same event object is dispatched to all consumer instances (one for each websocket connection), removing'type'in one instance caused the others to raise:This broke message dispatch for the remaining connections. The fix is to avoid modifying the original
eventdictionary.This preserves the
'type'key, ensuring all consumer instances continue to receive well-formed events and function correctly.