Skip to content

Commit 902733d

Browse files
author
Peter Jausovec
committed
Add more info to the inconsistent cardinality errors
Signed-off-by: Peter Jausovec <[email protected]>
1 parent f30f428 commit 902733d

File tree

5 files changed

+9
-5
lines changed

5 files changed

+9
-5
lines changed

prometheus/counter.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,8 @@ func NewCounterVec(opts CounterOpts, labelNames []string) *CounterVec {
136136
return &CounterVec{
137137
metricVec: newMetricVec(desc, func(lvs ...string) Metric {
138138
if len(lvs) != len(desc.variableLabels) {
139-
panic(errInconsistentCardinality)
139+
err := fmt.Errorf("%s: labels and values for '%s' don't match: labels %v, values %v", errInconsistentCardinality, desc.fqName, desc.variableLabels, lvs)
140+
panic(err)
140141
}
141142
result := &counter{desc: desc, labelPairs: makeLabelPairs(desc, lvs)}
142143
result.init(result) // Init self-collection.

prometheus/gauge.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,8 @@ func NewGaugeVec(opts GaugeOpts, labelNames []string) *GaugeVec {
147147
return &GaugeVec{
148148
metricVec: newMetricVec(desc, func(lvs ...string) Metric {
149149
if len(lvs) != len(desc.variableLabels) {
150-
panic(errInconsistentCardinality)
150+
err := fmt.Errorf("%s: labels and values for '%s' don't match: labels %v, values %v", errInconsistentCardinality, desc.fqName, desc.variableLabels, labelValues)
151+
panic(err)
151152
}
152153
result := &gauge{desc: desc, labelPairs: makeLabelPairs(desc, lvs)}
153154
result.init(result) // Init self-collection.

prometheus/histogram.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,8 @@ func NewHistogram(opts HistogramOpts) Histogram {
165165

166166
func newHistogram(desc *Desc, opts HistogramOpts, labelValues ...string) Histogram {
167167
if len(desc.variableLabels) != len(labelValues) {
168-
panic(errInconsistentCardinality)
168+
err := fmt.Errorf("%s: labels and values for '%s' don't match: labels %v, values %v", errInconsistentCardinality, desc.fqName, desc.variableLabels, labelValues)
169+
panic(err)
169170
}
170171

171172
for _, n := range desc.variableLabels {

prometheus/labels.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ var errInconsistentCardinality = errors.New("inconsistent label cardinality")
3939

4040
func validateValuesInLabels(labels Labels, expectedNumberOfValues int) error {
4141
if len(labels) != expectedNumberOfValues {
42-
return errInconsistentCardinality
42+
return fmt.Errorf("%s: number of labels and values don't match: expected %d, actual %d, labels %v", errInconsistentCardinality, expectedNumberOfValues, len(labels), labels)
4343
}
4444

4545
for name, val := range labels {

prometheus/summary.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,8 @@ func NewSummary(opts SummaryOpts) Summary {
181181

182182
func newSummary(desc *Desc, opts SummaryOpts, labelValues ...string) Summary {
183183
if len(desc.variableLabels) != len(labelValues) {
184-
panic(errInconsistentCardinality)
184+
err := fmt.Errorf("%s: labels and values for '%s' don't match: labels %v, values %v", errInconsistentCardinality, desc.fqName, desc.variableLabels, labelValues)
185+
panic(err)
185186
}
186187

187188
for _, n := range desc.variableLabels {

0 commit comments

Comments
 (0)