mirror of
https://github.com/home-assistant/core.git
synced 2025-07-14 16:57:10 +00:00
Simplify error handling when creating backup (#134528)
This commit is contained in:
parent
fb474827b5
commit
dc048bfcf5
@ -800,12 +800,10 @@ class BackupManager:
|
|||||||
"""Finish a backup."""
|
"""Finish a backup."""
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
assert self._backup_task is not None
|
assert self._backup_task is not None
|
||||||
|
backup_success = False
|
||||||
try:
|
try:
|
||||||
written_backup = await self._backup_task
|
written_backup = await self._backup_task
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
self.async_on_backup_event(
|
|
||||||
CreateBackupEvent(stage=None, state=CreateBackupState.FAILED)
|
|
||||||
)
|
|
||||||
if with_automatic_settings:
|
if with_automatic_settings:
|
||||||
self._update_issue_backup_failed()
|
self._update_issue_backup_failed()
|
||||||
|
|
||||||
@ -831,33 +829,15 @@ class BackupManager:
|
|||||||
agent_ids=agent_ids,
|
agent_ids=agent_ids,
|
||||||
open_stream=written_backup.open_stream,
|
open_stream=written_backup.open_stream,
|
||||||
)
|
)
|
||||||
except BaseException:
|
|
||||||
self.async_on_backup_event(
|
|
||||||
CreateBackupEvent(stage=None, state=CreateBackupState.FAILED)
|
|
||||||
)
|
|
||||||
raise # manager or unexpected error
|
|
||||||
finally:
|
finally:
|
||||||
try:
|
await written_backup.release_stream()
|
||||||
await written_backup.release_stream()
|
|
||||||
except Exception:
|
|
||||||
self.async_on_backup_event(
|
|
||||||
CreateBackupEvent(stage=None, state=CreateBackupState.FAILED)
|
|
||||||
)
|
|
||||||
raise
|
|
||||||
self.known_backups.add(written_backup.backup, agent_errors)
|
self.known_backups.add(written_backup.backup, agent_errors)
|
||||||
if agent_errors:
|
if not agent_errors:
|
||||||
self.async_on_backup_event(
|
|
||||||
CreateBackupEvent(stage=None, state=CreateBackupState.FAILED)
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
if with_automatic_settings:
|
if with_automatic_settings:
|
||||||
# create backup was successful, update last_completed_automatic_backup
|
# create backup was successful, update last_completed_automatic_backup
|
||||||
self.config.data.last_completed_automatic_backup = dt_util.now()
|
self.config.data.last_completed_automatic_backup = dt_util.now()
|
||||||
self.store.save()
|
self.store.save()
|
||||||
|
backup_success = True
|
||||||
self.async_on_backup_event(
|
|
||||||
CreateBackupEvent(stage=None, state=CreateBackupState.COMPLETED)
|
|
||||||
)
|
|
||||||
|
|
||||||
if with_automatic_settings:
|
if with_automatic_settings:
|
||||||
self._update_issue_after_agent_upload(agent_errors)
|
self._update_issue_after_agent_upload(agent_errors)
|
||||||
@ -868,6 +848,14 @@ class BackupManager:
|
|||||||
finally:
|
finally:
|
||||||
self._backup_task = None
|
self._backup_task = None
|
||||||
self._backup_finish_task = None
|
self._backup_finish_task = None
|
||||||
|
self.async_on_backup_event(
|
||||||
|
CreateBackupEvent(
|
||||||
|
stage=None,
|
||||||
|
state=CreateBackupState.COMPLETED
|
||||||
|
if backup_success
|
||||||
|
else CreateBackupState.FAILED,
|
||||||
|
)
|
||||||
|
)
|
||||||
self.async_on_backup_event(IdleEvent())
|
self.async_on_backup_event(IdleEvent())
|
||||||
|
|
||||||
async def async_restore_backup(
|
async def async_restore_backup(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user