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