lib/prometheus/client/mmaped_dict.rb in prometheus-client-mmap-0.7.0.beta28 vs lib/prometheus/client/mmaped_dict.rb in prometheus-client-mmap-0.7.0.beta29
- old
+ new
@@ -37,19 +37,19 @@
rescue StandardError => e
raise ParsingError, "exception #{e} while processing metrics file #{path}"
end
def read_value(key)
- init_value(key) unless @positions.key?(key)
+ pos = @m.add_entry(@positions, key, 0.0)
- @m.get_double(@positions[key])
+ @m.get_double(pos)
end
def write_value(key, value)
- init_value(key) unless @positions.key?(key)
+ pos = @m.add_entry(@positions, key, 0.0)
- pos = @positions[key]
+ # pos = @positions[key]
@m[pos..pos + 7] = [value].pack('d')
end
def path
@m.filepath if @m
@@ -62,25 +62,11 @@
Prometheus::Client.logger.warn("munmap raised error #{e}")
end
private
- def ok(key)
- @m.add_entry(@positions, key, 0.0)
- rescue RuntimeError => e
- raise e if e.message.match /.*ugh.*/
- nil
- end
-
def init_value(key)
- until ok(key)
- filepath = @m.filepath
- size = @m.size
- @m.close
-
- File.truncate(filepath, size * 2)
- @m = Helper::MmapedFile.open(filepath)
- end
+ @m.add_entry(@positions, key, 0.0)
end
# Yield (key, pos). No locking is performed.
def read_all_positions
@m.entries.map do |data, encoded_len, _, absolute_pos|