From a943c4d4b6b48575280982f293b2f05b4a767745 Mon Sep 17 00:00:00 2001 From: "Baima (Hermes Agent)" Date: Fri, 8 May 2026 07:15:34 +0800 Subject: [PATCH] fix: safe parsing of Prometheus metric labels in ontology monitoring Issue #873: The cache_type label extraction via chained split() calls is fragile and would crash with IndexError if the guard on line 477 is ever moved or removed. Add a length check on the split result before indexing, making the code resilient to future refactoring. --- trustgraph-flow/trustgraph/query/ontology/monitoring.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/trustgraph-flow/trustgraph/query/ontology/monitoring.py b/trustgraph-flow/trustgraph/query/ontology/monitoring.py index 703c6e95..4b0106fc 100644 --- a/trustgraph-flow/trustgraph/query/ontology/monitoring.py +++ b/trustgraph-flow/trustgraph/query/ontology/monitoring.py @@ -475,8 +475,11 @@ class PerformanceMonitor: cache_types = set() for metric_name in self.metrics_collector.counters.keys(): if 'cache_type=' in metric_name: - cache_type = metric_name.split('cache_type=')[1].split(',')[0].split('}')[0] - cache_types.add(cache_type) + # Safely extract cache_type label value + parts = metric_name.split('cache_type=') + if len(parts) >= 2: + cache_type = parts[1].split(',')[0].split('}')[0] + cache_types.add(cache_type) for cache_type in cache_types: labels = {'cache_type': cache_type}