core icon indicating copy to clipboard operation
core copied to clipboard

'Execution queue is full' exception while executing scene/group in Overkiz

Open alsmaison opened this issue 1 year ago • 4 comments

The problem

I have 20 covers managed with my Tahoma switch (technology RTS and IO). I have no problem to close all my covers at the same time with a scene in the Tahoma App.

Unfortunetly, with Home Assistant. This is not the case. I have created a group "House Covers" with integrate all my covers one by one. When I send a close action to the group, I have an erreor message : Execution queue is full on gateway. Because of that, not all my covers is closed.

The difference look like that the Tahoma app send close instruction not in parallel. I never see all covers closing at the same time. There is little seconds delay cover by cover. Because of that, I think the queue on the gateway never become full.

Can you implement the same logic ?

What version of Home Assistant Core has the issue?

core-2025.1.0

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant OS

Integration causing the issue

integration Overkiz

Link to integration documentation on our website

https://www.home-assistant.io/integrations/overkiz

Diagnostics information

all the time if I try to close more than 10 covers at the same time

Example YAML snippet

No response

Anything in the logs that might be useful for us?

In the system log, I see the folloowing error when the event is generated :

Enregistreur: homeassistant.components.websocket_api.http.connection
Source: components/websocket_api/commands.py:245
intégration: Home Assistant WebSocket API (documentation, problèmes)
S'est produit pour la première fois: 17:12:40 (1 occurrences)
Dernier enregistrement: 17:12:40

[281472523569616] Unexpected exception
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 245, in handle_call_service
    response = await hass.services.async_call(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<7 lines>...
    )
    ^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2795, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2838, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1006, in entity_service_call
    single_response = await _handle_entity_call(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
        hass, entity, func, data, call.context
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1078, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/group/cover.py", line 187, in async_close_cover
    await self.hass.services.async_call(
    ...<5 lines>...
    )
  File "/usr/src/homeassistant/homeassistant/core.py", line 2795, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2838, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1031, in entity_service_call
    raise result from None
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1628, in async_request_call
    return await coro
           ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1078, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/overkiz/cover/vertical_cover.py", line 109, in async_close_cover
    await self.executor.async_execute_command(command)
  File "/usr/src/homeassistant/homeassistant/components/overkiz/executor.py", line 102, in async_execute_command
    exec_id = await self.coordinator.client.execute_command(
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<3 lines>...
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/backoff/_async.py", line 151, in retry
    ret = await target(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/backoff/_async.py", line 151, in retry
    ret = await target(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/pyoverkiz/client.py", line 703, in execute_command
    response: str = await self.execute_commands(device_url, [command], label)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/backoff/_async.py", line 151, in retry
    ret = await target(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/pyoverkiz/client.py", line 734, in execute_commands
    response: dict = await self.__post("exec/apply", payload)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/pyoverkiz/client.py", line 941, in __post
    await self.check_response(response)
  File "/usr/local/lib/python3.13/site-packages/pyoverkiz/client.py", line 1032, in check_response
    raise ExecutionQueueFullException(message)
pyoverkiz.exceptions.ExecutionQueueFullException: Execution queue is full on gateway: #XXX-XXX-8983 (soft limit: 10)

Additional information

No response

alsmaison avatar Jan 05 '25 16:01 alsmaison

Hey there @imicknl, mind taking a look at this issue as it has been labeled with an integration (overkiz) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of overkiz can trigger bot actions by commenting:

  • @home-assistant close Closes the issue.
  • @home-assistant rename Awesome new title Renames the issue.
  • @home-assistant reopen Reopen the issue.
  • @home-assistant unassign overkiz Removes the current integration label and assignees on the issue, 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) to the issue.
  • @home-assistant remove-label needs-more-information Remove a label (needs-more-information, problem in dependency, problem in custom component) on the issue.

(message by CodeOwnersMention)


overkiz documentation overkiz source (message by IssueLinks)

home-assistant[bot] avatar Jan 05 '25 16:01 home-assistant[bot]

Thanks for reporting! This will require a big rewrite of this integration and isn't currently planned. This limitation is documented in the Home Assistant documentation, see https://www.home-assistant.io/integrations/overkiz/#overkiz-api-limits.

See https://github.com/home-assistant/core/issues/104045 for additional background.

iMicknl avatar Jan 05 '25 21:01 iMicknl

As a workaround I add a delay of 1 minute after 10 covers in my automation. I have 15 screens that open when rain is coming.

Sunspot1230987 avatar Jan 17 '25 13:01 Sunspot1230987

Hi all! For a possible workaround, please see here: https://github.com/home-assistant/core/issues/136056#issuecomment-2868628255

henrik-sc avatar May 10 '25 08:05 henrik-sc

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest Home Assistant version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.