lib/prometheus/client/mmaped_value.rb in prometheus-client-mmap-0.7.0.beta32 vs lib/prometheus/client/mmaped_value.rb in prometheus-client-mmap-0.7.0.beta33
- old
+ new
@@ -17,12 +17,10 @@
@labels = labels
if type == :gauge
@file_prefix += '_' + multiprocess_mode.to_s
end
- self.class.reset_on_pid_change
- # initialize_file
@pid = -1
@mutex = Mutex.new
initialize_file
end
@@ -63,10 +61,11 @@
end
def initialize_file
VALUE_LOCK.synchronize do
return if @file && !pid_changed?
+ self.class.reset_on_pid_change
@pid = Process.pid
unless @@files.has_key?(@file_prefix)
unless @file.nil?
@file.close
@@ -88,19 +87,20 @@
@value = read_value(@key)
end
end
def self.reset_on_pid_change
- VALUE_LOCK.synchronize do
- if pid_changed?
- @@pid = Process.pid
- @@files = {}
- end
+ if pid_changed?
+ @@pid = Process.pid
+ @@files = {}
end
end
def self.reinitialize_on_pid_change
- reset_on_pid_change
+ VALUE_LOCK.synchronize do
+ reset_on_pid_change
+ end
+
ObjectSpace.each_object(MmapedValue, &:reinitialize)
end
def self.pid_changed?
@@pid != Process.pid