From 7732e2a2ffa238c69492cd867f31e7e668600e67 Mon Sep 17 00:00:00 2001 From: Josh Knapp Date: Thu, 2 Jul 2026 05:50:22 -0700 Subject: [PATCH] chore(log): downgrade "no backend name" domain-skip from WARNING to INFO MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit generate_config emits "Skipping domain - no backend name" on every run for domains registered without a proxy backend — most commonly the panel's own hostname (whpNN.cloud-hosting.io), which lives in the DB only for certificate management and intentionally has no backend. Logging it at WARNING tripped the WHP AI log monitor as a recurring error and prompted a bogus "restart haproxy-manager" remediation. It's expected, benign, and recurs by design. Log it at INFO instead (consistent with the sibling per-domain "Added ACL for domain" INFO lines) with a clearer message ("no proxy backend (cert/management-only)"). Verified against the WHP monitor's ErrorClassifier: the old WARNING line classified as non_critical (captured); the new INFO line classifies as None (skipped) — so it no longer shows up in reports, while remaining visible in container logs for manual routing debugging. Co-Authored-By: Claude Opus 4.8 (1M context) --- VERSION | 2 +- haproxy_manager.py | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/VERSION b/VERSION index 0f03152..22c4432 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2026.07.1 +2026.07.2 diff --git a/haproxy_manager.py b/haproxy_manager.py index f935ab0..ebe1166 100644 --- a/haproxy_manager.py +++ b/haproxy_manager.py @@ -1855,7 +1855,11 @@ def generate_config(): # First pass: exact domain ACLs (higher priority - evaluated first) for domain in exact_domains: if not domain['backend_name']: - logger.warning(f"Skipping domain {domain['domain']} - no backend name") + # Expected for domains registered without a proxy backend (e.g. the + # panel's own hostname, present only for certificate management). + # Log at INFO — not WARNING — so it doesn't trip log monitors as an + # error; it recurs on every generate_config by design. + logger.info(f"Skipping domain {domain['domain']} - no proxy backend (cert/management-only)") continue try: @@ -1874,7 +1878,8 @@ def generate_config(): # Second pass: wildcard domain ACLs (lower priority - evaluated after exact matches) for domain in wildcard_domains: if not domain['backend_name']: - logger.warning(f"Skipping wildcard domain {domain['domain']} - no backend name") + # See note above — INFO, not WARNING; expected for cert/management-only domains. + logger.info(f"Skipping wildcard domain {domain['domain']} - no proxy backend (cert/management-only)") continue try: