From 45676fdab3ab034850b94df082c84c95160def36 Mon Sep 17 00:00:00 2001 From: Benjamin Gaussorgues Date: Mon, 18 May 2026 12:10:07 +0200 Subject: [PATCH] feat(openmetrics): export more resilient if exception happens feat(openmetrics): export more resilient if exception happens Signed-off-by: Benjamin Gaussorgues [skip ci] --- core/Controller/OpenMetricsController.php | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/core/Controller/OpenMetricsController.php b/core/Controller/OpenMetricsController.php index 8c57eb1a66335..f674ca1e947cd 100644 --- a/core/Controller/OpenMetricsController.php +++ b/core/Controller/OpenMetricsController.php @@ -1,6 +1,7 @@ exporterManager->export() as $family) { - yield $this->formatFamily($family); + try { + yield $this->formatFamily($family); + } catch (\Exception $e) { + // Skip family and return a valid result + $this->logger->error('Exception caught when exporting family {family}', [ + 'app' => 'metrics', + 'family' => $family->name(), + 'exception' => $e, + ]); + } } $elapsed = (string)(microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']); @@ -129,11 +139,7 @@ private function formatLabels(Metric $metric): string { } private function escapeString(string $string): string { - return json_encode( - $string, - JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_THROW_ON_ERROR, - 1 - ); + return json_encode($string, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_THROW_ON_ERROR, 1); } private function formatValue(Metric $metric): string {