lib/prometheus/client/helper/mmaped_file.rb in prometheus-client-mmap-0.7.0.beta17 vs lib/prometheus/client/helper/mmaped_file.rb in prometheus-client-mmap-0.7.0.beta18

- old
+ new

@@ -27,18 +27,14 @@ ensure m.close end def ensure_process_exclusive_file(file_prefix = 'mmaped_file') - path = nil - filename_number = 0 - until path && Helper::MmapedFile.lock_to_process(path) - filename = "#{file_prefix}_#{Prometheus::Client.pid}-#{filename_number}.db" - path = File.join(Prometheus::Client.configuration.multiprocess_files_dir, filename) - filename_number += 1 - end - path + (0..Float::INFINITY).lazy + .map { |f_num| "#{file_prefix}_#{Prometheus::Client.pid}-#{f_num}.db" } + .map { |filename| File.join(Prometheus::Client.configuration.multiprocess_files_dir, filename) } + .find { |path| Helper::MmapedFile.lock_to_process(path) } end def open_process_exclusive_file(file_prefix = 'mmaped_file') filename = Helper::MmapedFile.ensure_process_exclusive_file(file_prefix) open(filename) @@ -100,14 +96,10 @@ return unless lock_owner? self.pid = 0 end - def initial_mmap_file_size - Prometheus::Client.configuration.initial_mmap_file_size - end - def entries return Enumerator.new {} if used.zero? Enumerator.new do |yielder| used_ = used # cache used to avoid unnecessary unpack operations @@ -116,14 +108,15 @@ while pos < used_ data = slice(pos..-1) encoded_len, = data.unpack('l') padding_len = 8 - (encoded_len + 4) % 8 value_offset = 4 + encoded_len + padding_len + pos += value_offset - yielder.yield data, encoded_len, value_offset + yielder.yield data, encoded_len, value_offset, pos - pos += value_offset + 8 + pos += 8 end end end def add_entry(data, value) @@ -147,9 +140,13 @@ def close munmap end private + + def initial_mmap_file_size + Prometheus::Client.configuration.initial_mmap_file_size + end def pid_alive?(pid) begin Process.getpgid(pid) true