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

Sign up to get free protection for your applications and to get access to all the features.
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