Add a guard against selecting all entities in state_changes_during_period
#91585
+3
−1
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.
Proposed change
If an entity id that doesn't exist was passed to
state_changes_during_period
we would return history for all entities during the period because the filter would not be applied. In some cases this could be 100000 of rows.It was too easy to accidentally select all entity ids which is exactly what is happening here.
This cannot happen in
dev
/2023.5.x
because we require entity ids after #90992 because we were worried about this case. The change indev
is not back-portable so this PR is torc
In the report below, a history stats sensor for a non-existent entity id is what triggered the issue
https://discord.com/channels/330944238910963714/332167321311510530/1097789540657266758
We have tests for this case in
dev
that were added as part of #90992 but thats not in 2023.4.x The tests can't be backported because the design has changed.This is effectively
core/homeassistant/components/recorder/history/modern.py
Line 392 in f49dc65
rc
Type of change
Additional information
Checklist
black --fast homeassistant tests
)If user exposed functionality or configuration variables are added/changed:
If the code communicates with devices, web services, or third-party tools:
Updated and included derived files by running:
python3 -m script.hassfest
.requirements_all.txt
.Updated by running
python3 -m script.gen_requirements_all
..coveragerc
.To help with the load of incoming pull requests: