1
1
require 'fileutils'
2
2
require "cgi"
3
3
4
+ require 'prometheus/client/version'
5
+
4
6
module Prometheus
5
7
module Client
6
8
module DataStores
@@ -33,9 +35,15 @@ class InvalidStoreSettingsError < StandardError; end
33
35
DEFAULT_METRIC_SETTINGS = { aggregation : SUM }
34
36
DEFAULT_GAUGE_SETTINGS = { aggregation : ALL }
35
37
36
- def initialize ( dir :)
38
+ def initialize ( dir :, clean_dir : false )
37
39
@store_settings = { dir : dir }
38
40
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
39
47
end
40
48
41
49
def for_metric ( metric_name , metric_type :, metric_settings : { } )
@@ -52,6 +60,12 @@ def for_metric(metric_name, metric_type:, metric_settings: {})
52
60
metric_settings : settings )
53
61
end
54
62
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
+
55
69
private
56
70
57
71
def validate_metric_settings ( metric_settings )
@@ -68,6 +82,7 @@ def validate_metric_settings(metric_settings)
68
82
end
69
83
70
84
class MetricStore
85
+ FILENAME_PREFIX = "prometheus_#{ Prometheus ::Client ::VERSION } "
71
86
attr_reader :metric_name , :store_settings
72
87
73
88
def initialize ( metric_name :, store_settings :, metric_settings :)
@@ -168,12 +183,12 @@ def internal_store
168
183
169
184
# Filename for this metric's PStore (one per process)
170
185
def filemap_filename
171
- filename = "metric_ #{ metric_name } ___#{ process_id } .bin"
186
+ filename = "#{ FILENAME_PREFIX } _ #{ metric_name } ___#{ process_id } .bin"
172
187
File . join ( @store_settings [ :dir ] , filename )
173
188
end
174
189
175
190
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 " ) )
177
192
end
178
193
179
194
def process_id
0 commit comments