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

Fix const labels with derived metrics#1221

Merged
james-bebbington merged 1 commit intocensus-instrumentation:masterfrom
camh-:derived-gauge-const-label
Jul 19, 2020
Merged

Fix const labels with derived metrics#1221
james-bebbington merged 1 commit intocensus-instrumentation:masterfrom
camh-:derived-gauge-const-label

Conversation

@camh-
Copy link
Copy Markdown
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 a team, rakyll and rghetia as code owners July 14, 2020 11:37
Copy link
Copy Markdown
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.

3 participants