From 1cc3ea7a18c3070a353457db91e5c5543fc7a4a4 Mon Sep 17 00:00:00 2001 From: gsinghpal Date: Tue, 31 Mar 2026 22:53:53 -0400 Subject: [PATCH] fix: health check no longer changes instance state MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The health check cron runs inside Docker which can't always reach external URLs. It was setting state to 'error' breaking fetch/sync. Now it only logs warnings — state changes only via explicit Test Connection button. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../fusion_woocommerce/models/woo_instance.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/fusion-woo-odoo/fusion_woocommerce/models/woo_instance.py b/fusion-woo-odoo/fusion_woocommerce/models/woo_instance.py index 7cef40d5..be116ec0 100644 --- a/fusion-woo-odoo/fusion_woocommerce/models/woo_instance.py +++ b/fusion-woo-odoo/fusion_woocommerce/models/woo_instance.py @@ -383,25 +383,20 @@ class WooInstance(models.Model): @api.model def _cron_health_check(self): - """Ping all connected instances and flag unreachable ones.""" - instances = self.search([('state', '!=', 'draft')]) + """Ping all connected instances. Only log warnings — never change state. + The health check runs from inside Docker which may not reach external URLs. + State should only be changed by explicit user action (Test Connection button).""" + instances = self.search([('state', '=', 'connected')]) for instance in instances: try: client = instance._get_client() success, _info = client.test_connection() if success: - if instance.state == 'error': - instance.state = 'connected' - instance.message_post(body="Health check passed — connection restored.") + _logger.info("Health check OK for %s", instance.name) else: - instance.state = 'error' - instance.message_post(body="Health check failed — store unreachable.") - instance._notify_failure('health', 'Store unreachable during health check.') + _logger.warning("Health check failed for %s — store may be unreachable", instance.name) except Exception as e: - instance.state = 'error' - instance.message_post(body=f"Health check error: {e}") - instance._notify_failure('health', str(e)) - _logger.error("Health check failed for %s: %s", instance.name, e) + _logger.warning("Health check error for %s: %s", instance.name, e) # ------------------------------------------------------------------ # Order Sync (Task 20)