* Load pending state attributes and event data ids at startup
Since we queue all events to be processed after startup
we can have a thundering herd of queries to prime the
LRUs of event data and state attributes ids. Since we
know we are about to process a chunk of events we can
fetch all the ids in two queries
* lru
* fix hang
* Fix recorder LRU being destroyed if event session is reopened
We would clear the LRU in _close_event_session but
it would never get replaced with an LRU again so
it would leak memory if the event session is reopened
* Fix recorder LRU being destroyed if event session is reopened
We would clear the LRU in _close_event_session but
it would never get replaced with an LRU again so
it would leak memory if the event session is reopened
* cleanup
* Mark PostgreSQL range select as fast
Currently we were using the slow range select workaround for
PostgreSQL that was original developed for MariaDB but
its actually slower on PostgreSQ
fixes#83253
* Mark PostgreSQL range select as fast
Currently we were using the slow range select workaround for
PostgreSQL that was original developed for MariaDB but
its actually slower on PostgreSQ
fixes#83253
* Adjust size of recorder LRU based on number of entities
If there are a large number of entities the cache would
get thrashed as there were more state attributes being
recorded than the size of the cache. This meant we had
to go back to the database to do lookups frequently when
an instance has more than 2048 entities that change
frequently
* add a test
* do not actually record 4096 states
* patch target
* patch target
* Add support for snapshot testing
* Use snapshots in Elgato diagnostics test
* Use snapshots in Elgato sensor test
* Fix flake8 warning
* Slightly improve serialized output
* Remove snapshot naming in elgato sensor tests
* Improve snapshoting of via_device_id in device registry item
* Update pylint typehints plugin for snapshot fixture typing
* Use snapshots in Elgato configflow test
* Use snapshots in Bluetooth repair issue tests
* Only expose default cloud domains in default agent
* Copy exposed domain list to conversation
* Implement requested changes
* Add test for exposed devices/areas
* Use blocking in service calls and verify result
* Block for 2 seconds and update states after
* Small timeout in service call to allow exceptions
* Move sun test
* Stop processing when we hit bad encryption
* Accept webhook payload that is a list
* Rename functions because we import them
* Revert a debug thing
---------
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
* Refactor zeroconf task handling
- Avoid the need to create tasks for most callbacks
- Fixes the untracked task that could get unexpectedly GCed
* be consistant
* be consistant
* fix zeroconf tests
* runtime
* Revert "runtime"
This reverts commit 19e6b6183759279490efbed3129dffd447dc4808.
* precalc
* refactor
* tweak
* update tests