@@ -195,8 +195,14 @@ def _apply_storage_runtime_config(
195195 self .page_size / 1024 * prefetch_timeout_per_ki_token
196196 )
197197
198- storage_metrics_collector = None
199- if enable_storage_metrics :
198+ self .enable_storage = enable_storage
199+ self .prefetch_threshold = prefetch_threshold
200+ self .prefetch_timeout_base = prefetch_timeout_base
201+ self .prefetch_timeout_per_page = prefetch_timeout_per_page
202+ self .hicache_storage_pass_prefix_keys = hicache_storage_pass_prefix_keys
203+ self .enable_storage_metrics = enable_storage_metrics
204+
205+ if self .enable_storage_metrics :
200206 labels = {
201207 "storage_backend" : storage_backend ,
202208 "tp_rank" : self .cache_controller .tp_rank ,
@@ -206,19 +212,18 @@ def _apply_storage_runtime_config(
206212 }
207213 if extra_metric_labels :
208214 labels .update (extra_metric_labels )
209- self .storage_metrics_collector = StorageMetricsCollector (labels = labels )
210- storage_metrics_collector = StorageMetricsCollector (labels = labels )
211-
212- self .enable_storage = enable_storage
213- self .prefetch_threshold = prefetch_threshold
214- self .prefetch_timeout_base = prefetch_timeout_base
215- self .prefetch_timeout_per_page = prefetch_timeout_per_page
216- self .hicache_storage_pass_prefix_keys = hicache_storage_pass_prefix_keys
217- self .enable_storage_metrics = enable_storage_metrics
218- if self .enable_storage_metrics :
219- self .storage_metrics_collector = storage_metrics_collector
220- else :
221- self .storage_metrics_collector = None
215+ existing_collector = getattr (self , "storage_metrics_collector" , None )
216+ if existing_collector is None :
217+ self .storage_metrics_collector = StorageMetricsCollector (labels = labels )
218+ elif set (existing_collector .labels .keys ()) == set (labels .keys ()):
219+ existing_collector .labels = labels
220+ else :
221+ logger .warning (
222+ "Storage metrics labels changed (%s -> %s). Keep existing labels to "
223+ "avoid duplicate metric registration." ,
224+ sorted (existing_collector .labels .keys ()),
225+ sorted (labels .keys ()),
226+ )
222227
223228 def attach_storage_backend (
224229 self ,
@@ -366,8 +371,6 @@ def detach_storage_backend(self) -> tuple[bool, str]:
366371
367372 self .enable_storage = False
368373 self .enable_storage_metrics = False
369- if hasattr (self , "storage_metrics_collector" ):
370- self .storage_metrics_collector = None
371374 return True , "Detached HiCache storage backend successfully."
372375
373376 def _force_release_pending_storage_ops (self ):
0 commit comments