[HiCache] fix: StorageMetricsCollector was initialized twice (#18354)

This commit is contained in:
shuwenn
2026-02-10 00:53:00 -08:00
committed by GitHub
parent d94d0af573
commit 8da14aea88
+20 -17
View File
@@ -195,8 +195,14 @@ class HiRadixCache(RadixCache):
self.page_size / 1024 * prefetch_timeout_per_ki_token self.page_size / 1024 * prefetch_timeout_per_ki_token
) )
storage_metrics_collector = None self.enable_storage = enable_storage
if enable_storage_metrics: self.prefetch_threshold = prefetch_threshold
self.prefetch_timeout_base = prefetch_timeout_base
self.prefetch_timeout_per_page = prefetch_timeout_per_page
self.hicache_storage_pass_prefix_keys = hicache_storage_pass_prefix_keys
self.enable_storage_metrics = enable_storage_metrics
if self.enable_storage_metrics:
labels = { labels = {
"storage_backend": storage_backend, "storage_backend": storage_backend,
"tp_rank": self.cache_controller.tp_rank, "tp_rank": self.cache_controller.tp_rank,
@@ -206,19 +212,18 @@ class HiRadixCache(RadixCache):
} }
if extra_metric_labels: if extra_metric_labels:
labels.update(extra_metric_labels) labels.update(extra_metric_labels)
self.storage_metrics_collector = StorageMetricsCollector(labels=labels) existing_collector = getattr(self, "storage_metrics_collector", None)
storage_metrics_collector = StorageMetricsCollector(labels=labels) if existing_collector is None:
self.storage_metrics_collector = StorageMetricsCollector(labels=labels)
self.enable_storage = enable_storage elif set(existing_collector.labels.keys()) == set(labels.keys()):
self.prefetch_threshold = prefetch_threshold existing_collector.labels = labels
self.prefetch_timeout_base = prefetch_timeout_base else:
self.prefetch_timeout_per_page = prefetch_timeout_per_page logger.warning(
self.hicache_storage_pass_prefix_keys = hicache_storage_pass_prefix_keys "Storage metrics labels changed (%s -> %s). Keep existing labels to "
self.enable_storage_metrics = enable_storage_metrics "avoid duplicate metric registration.",
if self.enable_storage_metrics: sorted(existing_collector.labels.keys()),
self.storage_metrics_collector = storage_metrics_collector sorted(labels.keys()),
else: )
self.storage_metrics_collector = None
def attach_storage_backend( def attach_storage_backend(
self, self,
@@ -366,8 +371,6 @@ class HiRadixCache(RadixCache):
self.enable_storage = False self.enable_storage = False
self.enable_storage_metrics = False self.enable_storage_metrics = False
if hasattr(self, "storage_metrics_collector"):
self.storage_metrics_collector = None
return True, "Detached HiCache storage backend successfully." return True, "Detached HiCache storage backend successfully."
def _force_release_pending_storage_ops(self): def _force_release_pending_storage_ops(self):