prometheus-client-mmap 0.7.0.beta33 → 0.7.0.beta34

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: 6a7956684dd9781b3ca54566d1822574a9efaba7
4
- data.tar.gz: b1673743af7ef8d4cbe1f1fa40d2da9560ed4f98
3
+ metadata.gz: 1225b344f2939116817abcefbfe4483e38c7087c
4
+ data.tar.gz: 4fe5ade968d6d4df62d7ab7b9801ee8b1c80aa50
5
5
  SHA512:
6
- metadata.gz: 20ca0cf0603f45196a403348f8db23f5fb2b1d64fa0855c966e3448908eec3254b492670d219faa4f1040ab3f5c674a00eb34621729a38c34378641257c02e1f
7
- data.tar.gz: c35c741b2a573826d3ac3096c14cf8e92a475f894bab7097404340161f37010e8703866424253ab2cb06871658105a9a7ba53136350ef07ce23c8e54f849d1b4
6
+ metadata.gz: f3afd81bf5703647413b61a0762882bc3796325a51fa0db271620d6b0c1d70bbcba0d5191c9acf740e2d856539982a04bdcc253c4f4c1ecb969e9affca7dcb73
7
+ data.tar.gz: f083690e3b0e19f3968576c64d7f31e71ffa982b90f29edfb5e8ce6b738f2e97a5345f6dfc2f23ed98dd6a04b0d06f6015fb377b519bd760d1bf9cc3b796ca7a
@@ -69,7 +69,7 @@ void save_entry(mm_ipc *i_mm, uint32_t offset, VALUE key, VALUE value){
69
69
  }
70
70
 
71
71
  inline uint32_t load_used(mm_ipc *i_mm){
72
- uint32_t used=0;
72
+ uint32_t used = 0;
73
73
  memcpy(&used, (char *)i_mm->t->addr, sizeof(uint32_t));
74
74
 
75
75
  if (used == 0){
Binary file
@@ -35,17 +35,24 @@ module Prometheus
35
35
  size < MINIMUM_SIZE || used.zero?
36
36
  end
37
37
 
38
- def entries
38
+ def entries(ignore_errors = false)
39
39
  return Enumerator.new {} if empty?
40
40
 
41
41
  Enumerator.new do |yielder|
42
42
  used_ = used # cache used to avoid unnecessary unpack operations
43
43
 
44
44
  pos = START_POSITION # used + padding offset
45
- while pos < used_
45
+ while pos < used_ && pos < size && pos > 0
46
46
  data = slice(pos..-1)
47
- encoded_len, first_encoded_bytes = data.unpack('ll')
48
- if encoded_len.zero? || first_encoded_bytes.zero? # do not parse empty data
47
+ unless data
48
+ raise ParsingError, "data slice is nil at pos #{pos}" unless ignore_errors
49
+ pos += 8
50
+ next
51
+ end
52
+
53
+ encoded_len, first_encoded_bytes = data.unpack('LL')
54
+ if encoded_len.nil? || encoded_len.zero? || first_encoded_bytes.nil? || first_encoded_bytes.zero?
55
+ # do not parse empty data
49
56
  pos += 8
50
57
  next
51
58
  end
@@ -54,21 +61,24 @@ module Prometheus
54
61
  value_offset = 4 + encoded_len + padding_len
55
62
  pos += value_offset
56
63
 
57
- yielder.yield data, encoded_len, value_offset, pos
58
-
64
+ if value_offset > 0 && (pos + 8) < size # if positions are safe
65
+ yielder.yield data, encoded_len, value_offset, pos
66
+ else
67
+ raise ParsingError, "data slice is nil at pos #{pos}" unless ignore_errors
68
+ end
59
69
  pos += 8
60
70
  end
61
71
  end
62
72
  end
63
73
 
64
74
  def parsed_entries(ignore_errors = false)
65
- result = entries.map do |data, encoded_len, value_offset, _|
75
+ result = entries(ignore_errors).map do |data, encoded_len, value_offset, _|
66
76
  begin
67
77
  encoded, value = data.unpack(format('@4A%d@%dd', encoded_len, value_offset))
68
78
  [encoded, value]
69
79
  rescue ArgumentError => e
70
80
  Prometheus::Client.logger.debug("Error processing data: #{bin_to_hex(data[0, 7])} len: #{encoded_len} value_offset: #{value_offset}")
71
- raise ParsingError(e) unless ignore_errors
81
+ raise ParsingError, e unless ignore_errors
72
82
  end
73
83
  end
74
84
 
@@ -80,6 +90,8 @@ module Prometheus
80
90
  parsed_entries(ignore_errors).each do |key, value|
81
91
  begin
82
92
  metric_name, name, labelnames, labelvalues = JsonParser.load(key)
93
+ labelnames = [] unless labelnames
94
+ labelvalues = [] unless labelvalues
83
95
  metric = metrics.fetch(metric_name,
84
96
  metric_name: metric_name,
85
97
  help: 'Multiprocess metric',
@@ -4,7 +4,7 @@ require 'mmap'
4
4
  module Prometheus
5
5
  module Client
6
6
  class SimpleValue
7
- def initialize(type, metric_name, name, labels, *args)
7
+ def initialize(type, metric_name, name, _labels, *_args)
8
8
  @value = 0.0
9
9
  end
10
10
 
@@ -1,5 +1,5 @@
1
1
  module Prometheus
2
2
  module Client
3
- VERSION = '0.7.0.beta33'.freeze
3
+ VERSION = '0.7.0.beta34'.freeze
4
4
  end
5
5
  end
data/lib/prometheus.rb CHANGED
@@ -1,5 +1,3 @@
1
- # encoding: UTF-8
2
-
3
1
  # Prometheus is a generic time-series collection and computation server.
4
2
  module Prometheus
5
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prometheus-client-mmap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0.beta33
4
+ version: 0.7.0.beta34
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Schmidt
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-11-21 00:00:00.000000000 Z
12
+ date: 2017-11-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mmap2
@@ -31,6 +31,26 @@ dependencies:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: 2.2.9
34
+ - !ruby/object:Gem::Dependency
35
+ name: fuzzbert
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.0'
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.0.4
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - "~>"
49
+ - !ruby/object:Gem::Version
50
+ version: '1.0'
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.0.4
34
54
  - !ruby/object:Gem::Dependency
35
55
  name: gem_publisher
36
56
  requirement: !ruby/object:Gem::Requirement
@@ -134,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
154
  version: 1.3.1
135
155
  requirements: []
136
156
  rubyforge_project:
137
- rubygems_version: 2.6.14
157
+ rubygems_version: 2.6.8
138
158
  signing_key:
139
159
  specification_version: 4
140
160
  summary: A suite of instrumentation metric primitivesthat can be exposed through a