Skip to content
This repository has been archived by the owner on Jul 31, 2023. It is now read-only.

Fix const labels with derived metrics #1221

Conversation

camh-
Copy link
Contributor

@camh- camh- commented Jul 14, 2020

Include the const labels in baseMetric.upsertEntry in the same way as baseMetric.entryForValues.

The "Derived" form of metrics use an UpsertEntry method to provide the function that supplies the metric value as well as the label values. These methods use baseMetric.upsertEntry to do the work, but that method was ignoring any const labels set by WithConstLabel.

Commit c31d268 added const labels to metrics and updated baseMetric.entryForValues to add the const labels, but baseMetric.upsertEntry was not similarly updated.

This causes UpsertEntry to return an errKeyValueMismatch error ("must supply the same number of label values as keys used to construct this metric") when called unless the values for the const labels were passed to UpsertEntry. That kind of defeats the purpose of const labels.

Add a test case for const labels on Int64DerivedGauge. It is not necessary to add test cases for all the derived metrics as they all use the same baseMetric implementation.

Include the const labels in `baseMetric.upsertEntry` in the same way as
`baseMetric.entryForValues`.

The "Derived" form of metrics use an `UpsertEntry` method to provide the
function that supplies the metric value as well as the label values.
These methods use `baseMetric.upsertEntry` to do the work, but that
method was ignoring any const labels set by `WithConstLabel`.

Commit c31d268 added const labels to metrics and updated
`baseMetric.entryForValues` to add the const labels, but
`baseMetric.upsertEntry` was not similarly updated.

This cause `UpsertEntry` to return an `errKeyValueMismatch` error ("must
supply the same number of label values as keys used to construct this
metric") when called unless the values for the const labels were
passed to `UpsertEntry`. That kind of defeats the purpose of const
labels.

Add a test case for const labels on Int64DerivedGauge. It is not
necessary to add test cases for all the derived metrics as they all use
the same `baseMetric` implementation.
@camh- camh- requested review from rakyll, rghetia and a team as code owners July 14, 2020 11:37
Copy link
Collaborator

@james-bebbington james-bebbington left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thanks for the fix.

@james-bebbington james-bebbington merged commit d7677d6 into census-instrumentation:master Jul 19, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants