Skip to content

Commit

Permalink
Add more info to the inconsistent cardinality errors
Browse files Browse the repository at this point in the history
Signed-off-by: Peter Jausovec <[email protected]>
  • Loading branch information
Peter Jausovec committed Oct 31, 2018
1 parent f30f428 commit 902733d
Show file tree
Hide file tree
Showing 5 changed files with 9 additions and 5 deletions.
3 changes: 2 additions & 1 deletion prometheus/counter.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,8 @@ func NewCounterVec(opts CounterOpts, labelNames []string) *CounterVec {
return &CounterVec{
metricVec: newMetricVec(desc, func(lvs ...string) Metric {
if len(lvs) != len(desc.variableLabels) {
panic(errInconsistentCardinality)
err := fmt.Errorf("%s: labels and values for '%s' don't match: labels %v, values %v", errInconsistentCardinality, desc.fqName, desc.variableLabels, lvs)
panic(err)
}
result := &counter{desc: desc, labelPairs: makeLabelPairs(desc, lvs)}
result.init(result) // Init self-collection.
Expand Down
3 changes: 2 additions & 1 deletion prometheus/gauge.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,8 @@ func NewGaugeVec(opts GaugeOpts, labelNames []string) *GaugeVec {
return &GaugeVec{
metricVec: newMetricVec(desc, func(lvs ...string) Metric {
if len(lvs) != len(desc.variableLabels) {
panic(errInconsistentCardinality)
err := fmt.Errorf("%s: labels and values for '%s' don't match: labels %v, values %v", errInconsistentCardinality, desc.fqName, desc.variableLabels, labelValues)
panic(err)
}
result := &gauge{desc: desc, labelPairs: makeLabelPairs(desc, lvs)}
result.init(result) // Init self-collection.
Expand Down
3 changes: 2 additions & 1 deletion prometheus/histogram.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,8 @@ func NewHistogram(opts HistogramOpts) Histogram {

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

for _, n := range desc.variableLabels {
Expand Down
2 changes: 1 addition & 1 deletion prometheus/labels.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ var errInconsistentCardinality = errors.New("inconsistent label cardinality")

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

for name, val := range labels {
Expand Down
3 changes: 2 additions & 1 deletion prometheus/summary.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,8 @@ func NewSummary(opts SummaryOpts) Summary {

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

for _, n := range desc.variableLabels {
Expand Down

0 comments on commit 902733d

Please sign in to comment.