Skip to content
Snippets Groups Projects
Commit eae066ef authored by Marcin Sobczyk's avatar Marcin Sobczyk
Browse files

Suppress WorkerCancelled exception of update node/alarms data when entering dashboard

parent 17958066
No related branches found
No related tags found
2 merge requests!600v1.27.5.21 Release,!588Suppress exceptions on updating node/alarm data canceled
...@@ -13,6 +13,7 @@ from textual.app import App ...@@ -13,6 +13,7 @@ from textual.app import App
from textual.binding import Binding from textual.binding import Binding
from textual.notifications import Notification, Notify, SeverityLevel from textual.notifications import Notification, Notify, SeverityLevel
from textual.reactive import var from textual.reactive import var
from textual.worker import WorkerCancelled
from clive.__private.core.constants.terminal import TERMINAL_HEIGHT, TERMINAL_WIDTH from clive.__private.core.constants.terminal import TERMINAL_HEIGHT, TERMINAL_WIDTH
from clive.__private.core.constants.tui.bindings import APP_QUIT_KEY_BINDING from clive.__private.core.constants.tui.bindings import APP_QUIT_KEY_BINDING
...@@ -242,12 +243,21 @@ class Clive(App[int]): ...@@ -242,12 +243,21 @@ class Clive(App[int]):
def trigger_app_state_watchers(self) -> None: def trigger_app_state_watchers(self) -> None:
self.world.mutate_reactive(TUIWorld.app_state) # type: ignore[arg-type] self.world.mutate_reactive(TUIWorld.app_state) # type: ignore[arg-type]
def update_alarms_data_asap_on_newest_node_data(self) -> Worker[None]: def update_alarms_data_asap_on_newest_node_data(self, *, suppress_cancelled_error: bool = False) -> Worker[None]:
"""Update alarms on the newest possible node data.""" """Update alarms on the newest possible node data."""
async def update_alarms_data_on_newest_node_data() -> None: async def update_alarms_data_on_newest_node_data() -> None:
await self.update_data_from_node().wait() try:
await self.update_alarms_data().wait() await self.update_data_from_node().wait()
return self.run_worker(update_alarms_data_on_newest_node_data()) await self.update_alarms_data().wait()
except WorkerCancelled as error:
logger.warning("Update alarms data on newest node data cancelled.")
if not suppress_cancelled_error:
logger.warning(f"Re-raising exception: {error}")
raise
logger.warning(f"Ignoring exception: {error}")
return self.run_worker(update_alarms_data_on_newest_node_data(), exclusive=True)
@work(name="alarms data update worker", group="alarms_data", exclusive=True) @work(name="alarms data update worker", group="alarms_data", exclusive=True)
async def update_alarms_data(self) -> None: async def update_alarms_data(self) -> None:
......
...@@ -14,7 +14,8 @@ class FinishProfileCreationMixin(FormScreenBase[CreateProfileContext]): ...@@ -14,7 +14,8 @@ class FinishProfileCreationMixin(FormScreenBase[CreateProfileContext]):
async def _finish(self) -> None: async def _finish(self) -> None:
self._owner.add_post_action( self._owner.add_post_action(
self.app.update_alarms_data_asap_on_newest_node_data, self.app.resume_refresh_alarms_data_interval lambda: self.app.update_alarms_data_asap_on_newest_node_data(suppress_cancelled_error=True),
self.app.resume_refresh_alarms_data_interval,
) )
profile = self.context.profile profile = self.context.profile
......
...@@ -123,7 +123,7 @@ class Unlock(BaseScreen): ...@@ -123,7 +123,7 @@ class Unlock(BaseScreen):
await self.world.load_profile_based_on_beekepeer() await self.world.load_profile_based_on_beekepeer()
await self.app.switch_mode("dashboard") await self.app.switch_mode("dashboard")
self._remove_welcome_modes() self._remove_welcome_modes()
self.app.update_alarms_data_asap_on_newest_node_data() self.app.update_alarms_data_asap_on_newest_node_data(suppress_cancelled_error=True)
self.app.resume_refresh_node_data_interval() self.app.resume_refresh_node_data_interval()
self.app.resume_refresh_alarms_data_interval() self.app.resume_refresh_alarms_data_interval()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment