Always do thread safety check when writing state (#118886)
* Always do thread safety check when writing state Refactor the 3 most common places where the thread safety check for the event loop to be inline to make the check fast enough that we can keep it long term. While code review catches most of the thread safety issues in core, some of them still make it through, and new ones keep getting added. Its not possible to catch them all with manual code review, so its worth the tiny overhead to check each time. Previously the check was limited to custom components because they were the most common source of thread safety issues. * Always do thread safety check when writing state Refactor the 3 most common places where the thread safety check for the event loop to be inline to make the check fast enough that we can keep it long term. While code review catches most of the thread safety issues in core, some of them still make it through, and new ones keep getting added. Its not possible to catch them all with manual code review, so its worth the tiny overhead to check each time. Previously the check was limited to custom components because they were the most common source of thread safety issues. * async_fire is more common than expected with ccs * fix mock * fix hass mocking
This commit is contained in:
parent
64b23419e0
commit
475c20d529
6 changed files with 34 additions and 33 deletions
|
@ -218,3 +218,16 @@ def warn_use[_CallableT: Callable](func: _CallableT, what: str) -> _CallableT:
|
|||
report(what)
|
||||
|
||||
return cast(_CallableT, report_use)
|
||||
|
||||
|
||||
def report_non_thread_safe_operation(what: str) -> None:
|
||||
"""Report a non-thread safe operation."""
|
||||
report(
|
||||
f"calls {what} from a thread other than the event loop, "
|
||||
"which may cause Home Assistant to crash or data to corrupt. "
|
||||
"For more information, see "
|
||||
"https://developers.home-assistant.io/docs/asyncio_thread_safety/"
|
||||
f"#{what.replace('.', '')}",
|
||||
error_if_core=True,
|
||||
error_if_integration=True,
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue