Skip to content

Buffer backup upload progress events#165249

Merged
zweckj merged 10 commits intohome-assistant:devfrom
zweckj:feature/buffer-upload-progress
Mar 11, 2026
Merged

Buffer backup upload progress events#165249
zweckj merged 10 commits intohome-assistant:devfrom
zweckj:feature/buffer-upload-progress

Conversation

@zweckj
Copy link
Member

@zweckj zweckj commented Mar 10, 2026

Breaking change

Proposed change

For the upload progress validation during backup buffer the progress events so we don't flood the websocket with messages for large backups with multiple different backup targets.
Additionally, don't let the coordinator refresh for progress events, it does not need to know about those state changes, only when the upload starts and completes.

Type of change

  • Dependency upgrade
  • Bugfix (non-breaking change which fixes an issue)
  • New integration (thank you!)
  • New feature (which adds functionality to an existing integration)
  • Deprecation (breaking change to happen in the future)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Additional information

  • This PR fixes or closes issue: fixes #
  • This PR is related to issue:
  • Link to documentation pull request:
  • Link to developer documentation pull request:
  • Link to frontend pull request:

Checklist

  • I understand the code I am submitting and can explain how it works.
  • The code change is tested and works locally.
  • Local tests pass. Your PR cannot be merged unless tests pass
  • There is no commented out code in this PR.
  • I have followed the development checklist
  • I have followed the perfect PR recommendations
  • The code has been formatted using Ruff (ruff format homeassistant tests)
  • Tests have been added to verify that the new code works.
  • Any generated code has been carefully reviewed for correctness and compliance with project standards.

If user exposed functionality or configuration variables are added/changed:

If the code communicates with devices, web services, or third-party tools:

  • The manifest file has all fields filled out correctly.
    Updated and included derived files by running: python3 -m script.hassfest.
  • New or updated dependencies have been added to requirements_all.txt.
    Updated by running python3 -m script.gen_requirements_all.
  • For the updated dependencies a diff between library versions and ideally a link to the changelog/release notes is added to the PR description.

To help with the load of incoming pull requests:

@home-assistant
Copy link

Hey there @home-assistant/core, mind taking a look at this pull request as it has been labeled with an integration (backup) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of backup can trigger bot actions by commenting:

  • @home-assistant close Closes the pull request.
  • @home-assistant rename Awesome new title Renames the pull request.
  • @home-assistant reopen Reopen the pull request.
  • @home-assistant unassign backup Removes the current integration label and assignees on the pull request, add the integration domain after the command.
  • @home-assistant add-label needs-more-information Add a label (needs-more-information, problem in dependency, problem in custom component, problem in config, problem in device, feature-request) to the pull request.
  • @home-assistant remove-label needs-more-information Remove a label (needs-more-information, problem in dependency, problem in custom component, problem in config, problem in device, feature-request) on the pull request.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds throttling for backup upload progress events to prevent flooding the WebSocket with messages during large backups targeting multiple agents. Additionally, the backup coordinator is updated to skip async_refresh() for upload progress events since the coordinator doesn't need to react to intermediate progress updates.

Changes:

  • Buffer UploadBackupEvent instances in the backup manager, sending the first event immediately and then flushing buffered events at most once per second (per agent, keeping only the latest)
  • Skip coordinator refresh for UploadBackupEvent in BackupDataUpdateCoordinator._on_event
  • Add three new tests covering throttling behavior, flush-on-state-change, and coordinator skip logic

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
homeassistant/components/backup/manager.py Adds upload progress throttling: buffers UploadBackupEvents keyed by agent_id, flushes immediately on first event, then on a 1-second timer, and flushes all pending events before any non-upload event
homeassistant/components/backup/coordinator.py Skips async_refresh() when the coordinator receives an UploadBackupEvent
tests/components/backup/test_manager.py Adds tests for throttling, flush-on-state-change, and coordinator skip behavior

@MartinHjelmare MartinHjelmare marked this pull request as draft March 10, 2026 12:06
Copy link
Member

@MartinHjelmare MartinHjelmare left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

zweckj and others added 3 commits March 11, 2026 12:34
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Copy link
Member

@MartinHjelmare MartinHjelmare left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great!

@zweckj zweckj closed this Mar 11, 2026
@zweckj zweckj reopened this Mar 11, 2026
@zweckj zweckj marked this pull request as ready for review March 11, 2026 15:26
Copilot AI review requested due to automatic review settings March 11, 2026 15:26
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

@zweckj zweckj merged commit 2eb65ab into home-assistant:dev Mar 11, 2026
47 checks passed
@zweckj zweckj deleted the feature/buffer-upload-progress branch March 11, 2026 16:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants