Skip to content

Commit 8ef7fe3

Browse files
Added/updated backup and restore log messages (#181)
1 parent 907cf89 commit 8ef7fe3

File tree

2 files changed

+30
-15
lines changed

2 files changed

+30
-15
lines changed

src/backups.py

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ def _on_create_backup_action(self, event) -> None:
378378
"""Request that pgBackRest creates a backup."""
379379
can_unit_perform_backup, validation_message = self._can_unit_perform_backup()
380380
if not can_unit_perform_backup:
381-
logger.warning(validation_message)
381+
logger.error(f"Backup failed: {validation_message}")
382382
event.fail(validation_message)
383383
return
384384

@@ -402,7 +402,9 @@ def _on_create_backup_action(self, event) -> None:
402402
),
403403
s3_parameters,
404404
):
405-
event.fail("Failed to upload metadata to provided S3")
405+
error_message = "Failed to upload metadata to provided S3"
406+
logger.error(f"Backup failed: {error_message}")
407+
event.fail(error_message)
406408
return
407409

408410
if not self.charm.is_primary:
@@ -455,7 +457,9 @@ def _on_create_backup_action(self, event) -> None:
455457
),
456458
s3_parameters,
457459
)
458-
event.fail(f"Failed to backup PostgreSQL with error: {str(e)}")
460+
error_message = f"Failed to backup PostgreSQL with error: {str(e)}"
461+
logger.error(f"Backup failed: {error_message}")
462+
event.fail(error_message)
459463
else:
460464
# Upload the logs to S3 and fail the action if it doesn't succeed.
461465
logs = f"""Stdout:
@@ -472,8 +476,11 @@ def _on_create_backup_action(self, event) -> None:
472476
),
473477
s3_parameters,
474478
):
475-
event.fail("Error uploading logs to S3")
479+
error_message = "Error uploading logs to S3"
480+
logger.error(f"Backup failed: {error_message}")
481+
event.fail(error_message)
476482
else:
483+
logger.info(f"Backup succeeded: with backup-id {datetime_backup_requested}")
477484
event.set_results({"backup-status": "backup created"})
478485

479486
if not self.charm.is_primary:
@@ -510,18 +517,20 @@ def _on_restore_action(self, event):
510517
logger.info("Validating provided backup-id")
511518
backups = self._list_backups(show_failed=False)
512519
if backup_id not in backups.keys():
513-
event.fail(f"Invalid backup-id: {backup_id}")
520+
error_message = f"Invalid backup-id: {backup_id}"
521+
logger.error(f"Restore failed: {error_message}")
522+
event.fail(error_message)
514523
return
515524

516525
self.charm.unit.status = MaintenanceStatus("restoring backup")
517-
error_message = "Failed to restore backup"
518526

519527
# Stop the database service before performing the restore.
520528
logger.info("Stopping database service")
521529
try:
522530
self.container.stop(self.charm._postgresql_service)
523531
except ChangeError as e:
524-
logger.warning(f"Failed to stop database service with error: {str(e)}")
532+
error_message = f"Failed to stop database service with error: {str(e)}"
533+
logger.error(f"Restore failed: {error_message}")
525534
event.fail(error_message)
526535
return
527536

@@ -542,7 +551,8 @@ def _on_restore_action(self, event):
542551
namespace=self.charm._namespace,
543552
)
544553
except ApiError as e:
545-
logger.warning(f"Failed to remove previous cluster information with error: {str(e)}")
554+
error_message = f"Failed to remove previous cluster information with error: {str(e)}"
555+
logger.error(f"Restore failed: {error_message}")
546556
event.fail(error_message)
547557
self._restart_database()
548558
return
@@ -551,7 +561,8 @@ def _on_restore_action(self, event):
551561
try:
552562
self._empty_data_files()
553563
except ExecError as e:
554-
logger.warning(f"Failed to remove contents of the data directory with error: {str(e)}")
564+
error_message = f"Failed to remove contents of the data directory with error: {str(e)}"
565+
logger.error(f"Restore failed: {error_message}")
555566
event.fail(error_message)
556567
self._restart_database()
557568
return
@@ -580,17 +591,19 @@ def _pre_restore_checks(self, event: ActionEvent) -> bool:
580591
"""
581592
are_backup_settings_ok, validation_message = self._are_backup_settings_ok()
582593
if not are_backup_settings_ok:
583-
logger.warning(validation_message)
594+
logger.error(f"Restore failed: {validation_message}")
584595
event.fail(validation_message)
585596
return False
586597

587598
if not event.params.get("backup-id"):
588-
event.fail("Missing backup-id to restore")
599+
error_message = "Missing backup-id to restore"
600+
logger.error(f"Restore failed: {error_message}")
601+
event.fail(error_message)
589602
return False
590603

591604
if not self.container.can_connect():
592605
error_message = "Workload container not ready yet!"
593-
logger.warning(error_message)
606+
logger.error(f"Restore failed: {error_message}")
594607
event.fail(error_message)
595608
return False
596609

@@ -600,7 +613,7 @@ def _pre_restore_checks(self, event: ActionEvent) -> bool:
600613
and self.charm.unit.status.message != ANOTHER_CLUSTER_REPOSITORY_ERROR_MESSAGE
601614
):
602615
error_message = "Cluster or unit is in a blocking state"
603-
logger.warning(error_message)
616+
logger.error(f"Restore failed: {error_message}")
604617
event.fail(error_message)
605618
return False
606619

@@ -609,14 +622,14 @@ def _pre_restore_checks(self, event: ActionEvent) -> bool:
609622
error_message = (
610623
"Unit cannot restore backup as there are more than one unit in the cluster"
611624
)
612-
logger.warning(error_message)
625+
logger.error(f"Restore failed: {error_message}")
613626
event.fail(error_message)
614627
return False
615628

616629
logger.info("Checking that this unit was already elected the leader unit")
617630
if not self.charm.unit.is_leader():
618631
error_message = "Unit cannot restore backup as it was not elected the leader unit yet"
619-
logger.warning(error_message)
632+
logger.error(f"Restore failed: {error_message}")
620633
event.fail(error_message)
621634
return False
622635

src/charm.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -820,6 +820,7 @@ def _on_update_status(self, _) -> None:
820820

821821
if "restoring-backup" in self.app_peer_data:
822822
if services[0].current != ServiceStatus.ACTIVE:
823+
logger.error("Restore failed: database service failed to start")
823824
self.unit.status = BlockedStatus("Failed to restore backup")
824825
return
825826

@@ -830,6 +831,7 @@ def _on_update_status(self, _) -> None:
830831
# Remove the restoring backup flag and the restore stanza name.
831832
self.app_peer_data.update({"restoring-backup": "", "restore-stanza": ""})
832833
self.update_config()
834+
logger.info("Restore succeeded")
833835

834836
can_use_s3_repository, validation_message = self.backup.can_use_s3_repository()
835837
if not can_use_s3_repository:

0 commit comments

Comments
 (0)