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

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: 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