prometheus-client-mmap 1.3.0-x86_64-darwin → 1.5.0-x86_64-darwin

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
  SHA256:
3
- metadata.gz: 7b55c087bbe14321888a83f919e1464ce8bcd28383084a2320d29daf314afc38
4
- data.tar.gz: 4fdf1fd67a20c945a463cc98fb2aa8d5b3573a21882da6915375113c0253a824
3
+ metadata.gz: e8635c634887d98f584855c6c74bf1c010749a771ba775c151f9c16f616c39eb
4
+ data.tar.gz: ff6becfcd33b3ab5c998cda91ff2082cc52b16cb2b7126071dc815af1317a01d
5
5
  SHA512:
6
- metadata.gz: c693abe9442e35236dd28bf39362a8facc68027f366b0b3216bf490b4a8659a9f44749793bae5ed00b0f0e3414a059a04ed98c29cb2ad9b634d2e300f1e060d8
7
- data.tar.gz: 8492b54fcef823ed491323f5b068038f69d0756893d17d539eeb88a1b76a8bff8e085b6100991d8fee76962ccad0a21c72b642a1195a9cbf4ecc316b174e6dc9
6
+ metadata.gz: ffc00b82097ce7cd1bd043630061e1fbb4eab290cc33974b3a5571829b9355dceb6af5104c6ad0539184f39dfa9123a569a60cc947025fa15c26db88d6ed1014
7
+ data.tar.gz: ea4da6c1cda9df0dfbb6a98b5bd1ac22872cbf16f51eb2fbdf84d876f4af5cef5de973d22e6b652bba19f49e28920f021b5357ec8fd830bacc4ce63e0fb99bcd
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -12,29 +12,37 @@ module Prometheus
12
12
  include UsesValueType
13
13
  attr_accessor :sum, :total, :total_inf
14
14
 
15
- def initialize(type, name, labels, buckets)
15
+ def initialize(type, name, labels, buckets, buckets_descending)
16
16
  @sum = value_object(type, name, "#{name}_sum", labels)
17
17
  @total = value_object(type, name, "#{name}_count", labels)
18
18
  @total_inf = value_object(type, name, "#{name}_bucket", labels.merge(le: "+Inf"))
19
19
 
20
- buckets.each do |bucket|
20
+ # Buckets are precomputed/frozen at the metric level; values hold
21
+ # references to avoid per-label duplication.
22
+ @buckets, @buckets_descending = buckets, buckets_descending
23
+
24
+ @buckets.each do |bucket|
21
25
  self[bucket] = value_object(type, name, "#{name}_bucket", labels.merge(le: bucket.to_s))
22
26
  end
23
27
  end
24
28
 
25
29
  def observe(value)
26
- @sum.increment(value)
27
- @total.increment()
28
30
  @total_inf.increment()
31
+ @total.increment()
32
+ @sum.increment(value)
29
33
 
30
- each_key do |bucket|
31
- self[bucket].increment() if value <= bucket
34
+ # Write buckets from largest to smallest so any reader always sees
35
+ # monotonic (cumulative) counts; stop once the observation no longer
36
+ # fits to skip needless increments.
37
+ @buckets_descending.each do |bucket|
38
+ break if value > bucket
39
+ self[bucket].increment()
32
40
  end
33
41
  end
34
42
 
35
43
  def get()
36
44
  hash = {}
37
- each_key do |bucket|
45
+ @buckets.each do |bucket|
38
46
  hash[bucket] = self[bucket].get()
39
47
  end
40
48
  hash
@@ -52,7 +60,11 @@ module Prometheus
52
60
  buckets = DEFAULT_BUCKETS)
53
61
  raise ArgumentError, 'Unsorted buckets, typo?' unless sorted? buckets
54
62
 
55
- @buckets = buckets
63
+ # Precompute both orders once per metric. Shared across all label sets
64
+ # to avoid per-value allocation and per-observe reverse calls.
65
+ @buckets = buckets.dup.freeze
66
+ @buckets_descending = @buckets.reverse.freeze
67
+
56
68
  super(name, docstring, base_labels)
57
69
  end
58
70
 
@@ -69,7 +81,7 @@ module Prometheus
69
81
 
70
82
  def default(labels)
71
83
  # TODO: default function needs to know key of hash info (label names and values)
72
- Value.new(type, @name, labels, @buckets)
84
+ Value.new(type, @name, labels, @buckets, @buckets_descending)
73
85
  end
74
86
 
75
87
  def sorted?(bucket)
@@ -1,5 +1,5 @@
1
1
  module Prometheus
2
2
  module Client
3
- VERSION = '1.3.0'.freeze
3
+ VERSION = '1.5.0'.freeze
4
4
  end
5
5
  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: 1.3.0
4
+ version: 1.5.0
5
5
  platform: x86_64-darwin
6
6
  authors:
7
7
  - Tobias Schmidt
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2025-11-19 00:00:00.000000000 Z
14
+ date: 2026-01-06 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: base64
@@ -61,14 +61,14 @@ dependencies:
61
61
  requirements:
62
62
  - - "~>"
63
63
  - !ruby/object:Gem::Version
64
- version: 0.9.117
64
+ version: 0.9.124
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
69
  - - "~>"
70
70
  - !ruby/object:Gem::Version
71
- version: 0.9.117
71
+ version: 0.9.124
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: fuzzbert
74
74
  requirement: !ruby/object:Gem::Requirement
@@ -123,14 +123,14 @@ dependencies:
123
123
  requirements:
124
124
  - - "~>"
125
125
  - !ruby/object:Gem::Version
126
- version: 1.2.7
126
+ version: '1.3'
127
127
  type: :development
128
128
  prerelease: false
129
129
  version_requirements: !ruby/object:Gem::Requirement
130
130
  requirements:
131
131
  - - "~>"
132
132
  - !ruby/object:Gem::Version
133
- version: 1.2.7
133
+ version: '1.3'
134
134
  - !ruby/object:Gem::Dependency
135
135
  name: rspec
136
136
  requirement: !ruby/object:Gem::Requirement
@@ -193,6 +193,7 @@ files:
193
193
  - lib/3.2/fast_mmaped_file_rs.bundle
194
194
  - lib/3.3/fast_mmaped_file_rs.bundle
195
195
  - lib/3.4/fast_mmaped_file_rs.bundle
196
+ - lib/4.0/fast_mmaped_file_rs.bundle
196
197
  - lib/prometheus.rb
197
198
  - lib/prometheus/client.rb
198
199
  - lib/prometheus/client/configuration.rb
@@ -237,7 +238,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
237
238
  version: '3.1'
238
239
  - - "<"
239
240
  - !ruby/object:Gem::Version
240
- version: 3.5.dev
241
+ version: 4.1.dev
241
242
  required_rubygems_version: !ruby/object:Gem::Requirement
242
243
  requirements:
243
244
  - - ">="