diff --git a/etc/init_cnpg_backup.sh b/etc/init_cnpg_backup.sh index c90b50f..65722a8 100755 --- a/etc/init_cnpg_backup.sh +++ b/etc/init_cnpg_backup.sh @@ -967,6 +967,16 @@ case "$ACTION" in ensure_namespace wait_for_apiserver_ready 180 ensure_cluster + # Fast-path: skip re-initialization when continuous archiving is already healthy + # and at least one successful base backup exists. All the wait_for_* loops below + # are idempotent but slow — no need to re-run them on every installer pass. + _ca_status_fp=$(kubectl -n "$NAMESPACE" get cluster "$CNPG_CLUSTER_NAME" \ + -o jsonpath='{range .status.conditions[?(@.type=="ContinuousArchiving")]}{.status}{end}' \ + 2>/dev/null || true) + if [[ "$_ca_status_fp" == "True" ]] && has_successful_base_backup; then + echo "[CNPG BACKUP] Continuous archiving healthy and base backup exists — skipping re-initialization." + exit 0 + fi resolve_garage_namespace_and_endpoint ensure_garage_bucket_and_key wait_for_barman_plugin_infra_ready diff --git a/knoe/ui/screens/services.py b/knoe/ui/screens/services.py index a019fb1..628f614 100644 --- a/knoe/ui/screens/services.py +++ b/knoe/ui/screens/services.py @@ -683,6 +683,9 @@ class ServicesScreenMixin: # 3. CloudNative-PG initialization (Python) cnpg_script = "init_cloudnative_pg.sh" if overall_success: + _con("init_monitoring.sh").write( + "\nMonitoring done — running database initialization (see Database tab)...\n" + ) _select_tab(cnpg_script) _con(cnpg_script).clear() _con(cnpg_script).write("Running CloudNative-PG initialization...\n")