11require 'fileutils'
22require "cgi"
33
4+ require 'prometheus/client/version'
5+
46module Prometheus
57 module Client
68 module DataStores
@@ -33,9 +35,15 @@ class InvalidStoreSettingsError < StandardError; end
3335 DEFAULT_METRIC_SETTINGS = { aggregation : SUM }
3436 DEFAULT_GAUGE_SETTINGS = { aggregation : ALL }
3537
36- def initialize ( dir :)
38+ def initialize ( dir :, clean_dir : false )
3739 @store_settings = { dir : dir }
3840 FileUtils . mkdir_p ( dir )
41+
42+ if clean_dir
43+ Dir . glob ( File . join ( dir , "#{ MetricStore ::FILENAME_PREFIX } _*___*.bin" ) ) . each do |file_path |
44+ File . unlink ( file_path )
45+ end
46+ end
3947 end
4048
4149 def for_metric ( metric_name , metric_type :, metric_settings : { } )
@@ -52,6 +60,12 @@ def for_metric(metric_name, metric_type:, metric_settings: {})
5260 metric_settings : settings )
5361 end
5462
63+ def clean_pid ( pid )
64+ Dir . glob ( File . join ( @store_settings [ :dir ] , "#{ MetricStore ::FILENAME_PREFIX } _*___#{ pid } .bin" ) ) . each do |file_path |
65+ File . unlink ( file_path )
66+ end
67+ end
68+
5569 private
5670
5771 def validate_metric_settings ( metric_settings )
@@ -68,6 +82,7 @@ def validate_metric_settings(metric_settings)
6882 end
6983
7084 class MetricStore
85+ FILENAME_PREFIX = "prometheus_#{ Prometheus ::Client ::VERSION } "
7186 attr_reader :metric_name , :store_settings
7287
7388 def initialize ( metric_name :, store_settings :, metric_settings :)
@@ -168,12 +183,12 @@ def internal_store
168183
169184 # Filename for this metric's PStore (one per process)
170185 def filemap_filename
171- filename = "metric_ #{ metric_name } ___#{ process_id } .bin"
186+ filename = "#{ FILENAME_PREFIX } _ #{ metric_name } ___#{ process_id } .bin"
172187 File . join ( @store_settings [ :dir ] , filename )
173188 end
174189
175190 def stores_for_metric
176- Dir . glob ( File . join ( @store_settings [ :dir ] , "metric_ #{ metric_name } ___*" ) )
191+ Dir . glob ( File . join ( @store_settings [ :dir ] , "#{ FILENAME_PREFIX } _ #{ metric_name } ___*.bin " ) )
177192 end
178193
179194 def process_id
0 commit comments