prometheus-client-mmap 0.7.0.beta16 → 0.7.0.beta17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 123eb98e1cef887c18bd5c2d33b3979361456ebb
4
- data.tar.gz: bd48325e2f9e2c71d25b694156e0275e8d369132
3
+ metadata.gz: a830232952d5753fc160f570cc962602f35b219b
4
+ data.tar.gz: 33183db099150ced78e22ff071cbde0730a1f993
5
5
  SHA512:
6
- metadata.gz: 0210d8bf50f8e5ec6befc59e5b8e1b9ef4915af1941a1ac6601356e1274988fc6f3e49702fbec457ac625c4f8cb5923dbb0b3bbc30fc41f1732eb90cb308e34f
7
- data.tar.gz: 42efaed06ef0ed251786949510451dbb5b58e7a4f5590431481ff44958e078c811058538dd4d03714cc0f61ecb7cc26223ceaa9f54cb1a587a8c3f67f98d214f
6
+ metadata.gz: f2f6b8fba44ce2760d0dd44a271718024b622cb21387590316c2de0590b895d4ce120c86b2e98ada39ceb2e3c3eb7fccacc96ceeb867ab21de4364e5db92faaa
7
+ data.tar.gz: c024e67d7f75e52a45b00791a481bb2ee5f99aa5f4b52b73b27f4e57ee54ae25cae35e3f6c6ebab84ceb4da0532cbddf921f551f18e5161489e483659e8df70c
@@ -5,6 +5,46 @@ module Prometheus
5
5
  module Client
6
6
  module Helper
7
7
  class MmapedFile < Mmap
8
+ class << self
9
+ def open_readonly(filepath)
10
+ MmapedFile.new(filepath, 'r', Mmap::MAP_PRIVATE)
11
+ end
12
+
13
+ def open(filepath)
14
+ MmapedFile.new(filepath, 'rw', Mmap::MAP_SHARED)
15
+ end
16
+
17
+ def lock_to_process(filepath)
18
+ m = open(filepath)
19
+ if m.lock_to_process
20
+ Kernel.at_exit do
21
+ open(filepath).unlock
22
+ end
23
+ true
24
+ else
25
+ false
26
+ end
27
+ ensure
28
+ m.close
29
+ end
30
+
31
+ def ensure_process_exclusive_file(file_prefix = 'mmaped_file')
32
+ path = nil
33
+ filename_number = 0
34
+ until path && Helper::MmapedFile.lock_to_process(path)
35
+ filename = "#{file_prefix}_#{Prometheus::Client.pid}-#{filename_number}.db"
36
+ path = File.join(Prometheus::Client.configuration.multiprocess_files_dir, filename)
37
+ filename_number += 1
38
+ end
39
+ path
40
+ end
41
+
42
+ def open_process_exclusive_file(file_prefix = 'mmaped_file')
43
+ filename = Helper::MmapedFile.ensure_process_exclusive_file(file_prefix)
44
+ open(filename)
45
+ end
46
+ end
47
+
8
48
  MINIMUM_SIZE = 8
9
49
  attr_reader :filepath, :size
10
50
 
@@ -36,7 +76,7 @@ module Prometheus
36
76
  end
37
77
 
38
78
  def locked_to_process?
39
- pid > 0
79
+ pid > 0 && pid_alive?(pid)
40
80
  end
41
81
 
42
82
  def lock_owner?
@@ -108,43 +148,14 @@ module Prometheus
108
148
  munmap
109
149
  end
110
150
 
111
- class << self
112
- def open_readonly(filepath)
113
- MmapedFile.new(filepath, 'r', Mmap::MAP_PRIVATE)
114
- end
115
-
116
- def open(filepath)
117
- MmapedFile.new(filepath, 'rw', Mmap::MAP_SHARED)
118
- end
119
-
120
- def lock_to_process(filepath)
121
- m = open(filepath)
122
- if m.lock_to_process
123
- Kernel.at_exit do
124
- open(filepath).unlock
125
- end
126
- true
127
- else
128
- false
129
- end
130
- ensure
131
- m.close
132
- end
133
-
134
- def ensure_process_exclusive_file(file_prefix = 'mmaped_file')
135
- path = nil
136
- filename_number = 0
137
- until path && Helper::MmapedFile.lock_to_process(path)
138
- filename = "#{file_prefix}_#{Prometheus::Client.pid}-#{filename_number}.db"
139
- path = File.join(Prometheus::Client.configuration.multiprocess_files_dir, filename)
140
- filename_number += 1
141
- end
142
- path
143
- end
151
+ private
144
152
 
145
- def open_process_exclusive_file(file_prefix = 'mmaped_file')
146
- filename = Helper::MmapedFile.ensure_process_exclusive_file(file_prefix)
147
- open(filename)
153
+ def pid_alive?(pid)
154
+ begin
155
+ Process.getpgid(pid)
156
+ true
157
+ rescue Errno::ESRCH
158
+ false
148
159
  end
149
160
  end
150
161
  end
@@ -1,5 +1,5 @@
1
1
  module Prometheus
2
2
  module Client
3
- VERSION = '0.7.0.beta16'
3
+ VERSION = '0.7.0.beta17'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prometheus-client-mmap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0.beta16
4
+ version: 0.7.0.beta17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Schmidt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-11 00:00:00.000000000 Z
11
+ date: 2017-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mmap2