Skip to content

Commit 62a5f37

Browse files
authored
Fix HashedMetricList when supplying multiple labels (#8)
1 parent db09abf commit 62a5f37

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

prometheus/hashed_metric_list.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package prometheus
33
import (
44
"crypto/sha256"
55
"fmt"
6+
"maps"
7+
"slices"
68
"sync"
79
"time"
810

@@ -80,8 +82,8 @@ func (m *HashedMetricList) Inc(labels prometheus.Labels) {
8082
defer m.mux.Unlock()
8183

8284
metricKey := ""
83-
for key, value := range labels {
84-
metricKey = metricKey + key + "=" + value + ";"
85+
for _, key := range slices.Sorted(maps.Keys(labels)) {
86+
metricKey = metricKey + key + "=" + labels[key] + ";"
8587
}
8688
hashKey := fmt.Sprintf("%x", sha256.Sum256([]byte(metricKey)))
8789
if _, exists := m.List[hashKey]; exists {

prometheus/hashed_metrics_list_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,25 @@ func Test_HashedMetricsList(t *testing.T) {
1414

1515
func hashedMetricsListGenerateMetrics(t *testing.T, m *HashedMetricList) {
1616
expectHashedListCount(t, m, 0)
17-
m.Inc(prometheus.Labels{"key": "info"})
17+
m.Inc(prometheus.Labels{"key": "info", "foo": "bar"})
1818
expectHashedListCount(t, m, 1)
1919

20-
m.Inc(prometheus.Labels{"key": "info"})
20+
m.Inc(prometheus.Labels{"key": "info", "foo": "bar"})
2121
expectHashedListCount(t, m, 1)
2222

23-
m.Inc(prometheus.Labels{"key": "test"})
23+
m.Inc(prometheus.Labels{"key": "test", "foo": "bar"})
2424
expectHashedListCount(t, m, 2)
2525

26-
m.Inc(prometheus.Labels{"key": "info"})
26+
m.Inc(prometheus.Labels{"key": "info", "foo": "bar"})
2727
expectHashedListCount(t, m, 2)
2828

29-
m.Inc(prometheus.Labels{"key": "test"})
29+
m.Inc(prometheus.Labels{"key": "test", "foo": "bar"})
3030
expectHashedListCount(t, m, 2)
3131

32-
m.Inc(prometheus.Labels{"key": "test2"})
32+
m.Inc(prometheus.Labels{"key": "test2", "foo": "bar"})
3333
expectHashedListCount(t, m, 3)
3434

35-
m.Inc(prometheus.Labels{"key": "info"})
35+
m.Inc(prometheus.Labels{"key": "info", "foo": "bar"})
3636
expectHashedListCount(t, m, 3)
3737
}
3838

0 commit comments

Comments
 (0)