prometheus-client-mmap 1.3.0-x86_64-darwin → 1.4.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: c782404719edd5fc8c4297e77bfc4c32389290b7a3d7888d90b050c262f23276
4
+ data.tar.gz: 1d3bb8395647622666be44e7b95a4b391bb2a533348e96cc865089c6efea6f03
5
5
  SHA512:
6
- metadata.gz: c693abe9442e35236dd28bf39362a8facc68027f366b0b3216bf490b4a8659a9f44749793bae5ed00b0f0e3414a059a04ed98c29cb2ad9b634d2e300f1e060d8
7
- data.tar.gz: 8492b54fcef823ed491323f5b068038f69d0756893d17d539eeb88a1b76a8bff8e085b6100991d8fee76962ccad0a21c72b642a1195a9cbf4ecc316b174e6dc9
6
+ metadata.gz: c00ec54fec8dd8a3895434e75404b6d2c385663e401fc770baabc8b1a4cc5c53d3150ae1779e00755d1cea2077f08515f6622c6f097207161e92598fff0a23d2
7
+ data.tar.gz: c837ee1e22767ef2f278544aa37e6860450006ebb43d3970ef5850080782c6bc2ffe09544d8a149145c31fa2c5b2819ee8cd3de2e0c766249101a81aa97539be
@@ -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.4.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.4.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: 2025-12-02 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: base64