From cc99b966133ede2d72788a1a4c02338a51e5718d Mon Sep 17 00:00:00 2001 From: bearsyankees Date: Mon, 13 Jul 2026 14:14:26 -0400 Subject: [PATCH] Retry failed scan ended telemetry --- strix/telemetry/posthog.py | 9 +++++---- strix/telemetry/scarf.py | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/strix/telemetry/posthog.py b/strix/telemetry/posthog.py index 566fed9b..1cf0d448 100644 --- a/strix/telemetry/posthog.py +++ b/strix/telemetry/posthog.py @@ -26,10 +26,10 @@ def _is_enabled() -> bool: return load_settings().telemetry.enabled -def _send(event: str, properties: dict[str, Any]) -> None: +def _send(event: str, properties: dict[str, Any]) -> bool: if not _is_enabled(): logger.debug("posthog disabled; skipping event %s", event) - return + return False try: payload = { "api_key": _POSTHOG_PUBLIC_API_KEY, @@ -46,8 +46,10 @@ def _send(event: str, properties: dict[str, Any]) -> None: pass except Exception: # noqa: BLE001 logger.debug("posthog send failed for event %s", event, exc_info=True) + return False else: logger.debug("posthog event sent: %s", event) + return True def start( @@ -84,7 +86,6 @@ def finding(severity: str) -> None: def end(report_state: "ReportState", exit_reason: str = "completed") -> None: if report_state.posthog_scan_ended_sent: return - report_state.posthog_scan_ended_sent = True vulnerabilities_counts = {"critical": 0, "high": 0, "medium": 0, "low": 0, "info": 0} for v in report_state.vulnerability_reports: @@ -114,7 +115,7 @@ def end(report_state: "ReportState", exit_reason: str = "completed") -> None: except (TypeError, ValueError, AttributeError): pass - _send( + report_state.posthog_scan_ended_sent = _send( "scan_ended", { **base_props(), diff --git a/strix/telemetry/scarf.py b/strix/telemetry/scarf.py index d3d3684e..f4c17abe 100644 --- a/strix/telemetry/scarf.py +++ b/strix/telemetry/scarf.py @@ -28,10 +28,10 @@ def _is_enabled() -> bool: return load_settings().telemetry.enabled -def _send(event: str, properties: dict[str, Any]) -> None: +def _send(event: str, properties: dict[str, Any]) -> bool: if not _is_enabled(): logger.debug("scarf disabled; skipping event %s", event) - return + return False try: props = dict(properties) version = str(props.pop("strix_version", get_version()) or "unknown") @@ -47,8 +47,10 @@ def _send(event: str, properties: dict[str, Any]) -> None: pass except Exception: # noqa: BLE001 logger.debug("scarf send failed for event %s", event, exc_info=True) + return False else: logger.debug("scarf event sent: %s", event) + return True def start( @@ -87,7 +89,6 @@ def finding(severity: str) -> None: def end(report_state: ReportState, exit_reason: str = "completed") -> None: if report_state.scarf_scan_ended_sent: return - report_state.scarf_scan_ended_sent = True vulnerabilities_counts = {"critical": 0, "high": 0, "medium": 0, "low": 0, "info": 0} for v in report_state.vulnerability_reports: @@ -119,7 +120,7 @@ def end(report_state: ReportState, exit_reason: str = "completed") -> None: except (TypeError, ValueError, AttributeError): pass - _send( + report_state.scarf_scan_ended_sent = _send( "scan_ended", { **base_props(),