-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix data-race in metric without code
and method
but with WithLabelFromCtx
#1318
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! Can we add regression test? This will make sure we don't reintroduce same bug.
Current logic with emptyLabels that at some point are not empty is also weird, let's fix it.
if hasExtraLabelsCtx { | ||
return prometheus.Labels{} | ||
} | ||
return emptyLabels |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This feels wrong. If the emptyLabels are no longer empty, this is highly misleading. We should fix the code and not rely on that global var or make sure no one writes to it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you @bwplotka
I removed the usage of the global emptyLabels
map because as you say it's highly misleading and it makes it trivial to introduce new data races by writing into the output of the labels
func.
…omCtx` This commit fixes a data race that exists when the metric used in any `promhttp` middleware doesn't collect the `code` and `method` but uses `WithLabelFromCtx` to collect values from context. The problem happens because when no `code` and `method` tags are collected, the `labels` function returns a pre-initialized map `emptyLabels` for every request. When one or multipe `WithLabelFromCtx` options are configured, the returned map from the `labels` function call is used to collect the metrics from context which creates a multi-write data race. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wow, that was simple fix =D
….0 (#939) [](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/prometheus/client_golang](https://togithub.com/prometheus/client_golang) | require | minor | `v1.16.0` -> `v1.17.0` | --- ### Release Notes <details> <summary>prometheus/client_golang (github.com/prometheus/client_golang)</summary> ### [`v1.17.0`](https://togithub.com/prometheus/client_golang/releases/tag/v1.17.0) [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.16.0...v1.17.0) #### What's Changed - \[CHANGE] Minimum required go version is now 1.19 (we also test client_golang against new 1.21 version). [#​1325](https://togithub.com/prometheus/client_golang/issues/1325) - \[FEATURE] Add support for Created Timestamps in Counters, Summaries and Historams. [#​1313](https://togithub.com/prometheus/client_golang/issues/1313) - \[ENHANCEMENT] Enable detection of a native histogram without observations. [#​1314](https://togithub.com/prometheus/client_golang/issues/1314) <details><summary>Commits</summary> - Merge v1.16.0 to main by [@​bwplotka](https://togithub.com/bwplotka) in [https://github.com/prometheus/client_golang/pull/1293](https://togithub.com/prometheus/client_golang/pull/1293) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/1297](https://togithub.com/prometheus/client_golang/pull/1297) - ci: define minimal permissions to GitHub workflows by [@​diogoteles08](https://togithub.com/diogoteles08) in [https://github.com/prometheus/client_golang/pull/1295](https://togithub.com/prometheus/client_golang/pull/1295) - Do not allocate memory when there's no constraints by [@​Okhoshi](https://togithub.com/Okhoshi) in [https://github.com/prometheus/client_golang/pull/1296](https://togithub.com/prometheus/client_golang/pull/1296) - Bump golang.org/x/sys from 0.8.0 to 0.9.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1306](https://togithub.com/prometheus/client_golang/pull/1306) - Bump google.golang.org/grpc from 1.45.0 to 1.53.0 in /tutorial/whatsup by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1307](https://togithub.com/prometheus/client_golang/pull/1307) - histogram: Enable detection of a native histogram without observations by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/1314](https://togithub.com/prometheus/client_golang/pull/1314) - Bump github.com/prometheus/procfs from 0.10.1 to 0.11.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1305](https://togithub.com/prometheus/client_golang/pull/1305) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/1302](https://togithub.com/prometheus/client_golang/pull/1302) - Fix data-race in metric without `code` and `method` but with `WithLabelFromCtx` by [@​tigrato](https://togithub.com/tigrato) in [https://github.com/prometheus/client_golang/pull/1318](https://togithub.com/prometheus/client_golang/pull/1318) - Add missing tick "\`" in README by [@​ZiViZiViZ](https://togithub.com/ZiViZiViZ) in [https://github.com/prometheus/client_golang/pull/1321](https://togithub.com/prometheus/client_golang/pull/1321) - Bump golang.org/x/sys from 0.9.0 to 0.10.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1320](https://togithub.com/prometheus/client_golang/pull/1320) - Bump github.com/prometheus/procfs from 0.11.0 to 0.11.1 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1319](https://togithub.com/prometheus/client_golang/pull/1319) - docs: trivial grammar fixes to improve readability in promauto Godoc by [@​sengi](https://togithub.com/sengi) in [https://github.com/prometheus/client_golang/pull/1322](https://togithub.com/prometheus/client_golang/pull/1322) - Add Go 1.21 support by [@​kakkoyun](https://togithub.com/kakkoyun) in [https://github.com/prometheus/client_golang/pull/1325](https://togithub.com/prometheus/client_golang/pull/1325) - Bump client_model by [@​ArthurSens](https://togithub.com/ArthurSens) in [https://github.com/prometheus/client_golang/pull/1323](https://togithub.com/prometheus/client_golang/pull/1323) - histogram docs: Fixed minor nit. by [@​bwplotka](https://togithub.com/bwplotka) in [https://github.com/prometheus/client_golang/pull/1324](https://togithub.com/prometheus/client_golang/pull/1324) - Update building by [@​SuperQ](https://togithub.com/SuperQ) in [https://github.com/prometheus/client_golang/pull/1326](https://togithub.com/prometheus/client_golang/pull/1326) - Bump golang.org/x/sys from 0.10.0 to 0.11.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1331](https://togithub.com/prometheus/client_golang/pull/1331) - Bump github.com/prometheus/client_golang from 1.15.1-0.20230416215738-0963f595c689 to 1.16.0 in /tutorial/whatsup by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1329](https://togithub.com/prometheus/client_golang/pull/1329) - Bump github.com/prometheus/client_golang from 1.13.1 to 1.16.0 in /examples/middleware by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1328](https://togithub.com/prometheus/client_golang/pull/1328) - Bump github.com/prometheus/common from 0.42.0 to 0.44.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1284](https://togithub.com/prometheus/client_golang/pull/1284) - Bump github.com/prometheus/common from 0.42.0 to 0.44.0 in /tutorial/whatsup by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1330](https://togithub.com/prometheus/client_golang/pull/1330) - Bump google.golang.org/protobuf from 1.30.0 to 1.31.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1304](https://togithub.com/prometheus/client_golang/pull/1304) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/1332](https://togithub.com/prometheus/client_golang/pull/1332) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/1338](https://togithub.com/prometheus/client_golang/pull/1338) - Cleanup golangci-lint errcheck by [@​SuperQ](https://togithub.com/SuperQ) in [https://github.com/prometheus/client_golang/pull/1339](https://togithub.com/prometheus/client_golang/pull/1339) - Add go_godebug_non_default_behavior_tlsmaxrsasize_events_total by [@​alexandear](https://togithub.com/alexandear) in [https://github.com/prometheus/client_golang/pull/1348](https://togithub.com/prometheus/client_golang/pull/1348) - Extend Counters, Summaries and Histograms with creation timestamp by [@​ArthurSens](https://togithub.com/ArthurSens) in [https://github.com/prometheus/client_golang/pull/1313](https://togithub.com/prometheus/client_golang/pull/1313) - Fix typos in comments, tests, and errors by [@​alexandear](https://togithub.com/alexandear) in [https://github.com/prometheus/client_golang/pull/1346](https://togithub.com/prometheus/client_golang/pull/1346) - Deprecated comment should begin with "Deprecated:" by [@​alexandear](https://togithub.com/alexandear) in [https://github.com/prometheus/client_golang/pull/1347](https://togithub.com/prometheus/client_golang/pull/1347) - Add changelog entry for 1.17 by [@​ArthurSens](https://togithub.com/ArthurSens) in [https://github.com/prometheus/client_golang/pull/1352](https://togithub.com/prometheus/client_golang/pull/1352) </details> #### New Contributors * @​diogoteles08 made their first contributi[https://github.com/prometheus/client_golang/pull/1295](https://togithub.com/prometheus/client_golang/pull/1295)l/1295 * @​tigrato made their first contributi[https://github.com/prometheus/client_golang/pull/1318](https://togithub.com/prometheus/client_golang/pull/1318)l/1318 * @​ZiViZiViZ made their first contributi[https://github.com/prometheus/client_golang/pull/1321](https://togithub.com/prometheus/client_golang/pull/1321)l/1321 * @​sengi made their first contributi[https://github.com/prometheus/client_golang/pull/1322](https://togithub.com/prometheus/client_golang/pull/1322)l/1322 * @​ArthurSens made their first contributi[https://github.com/prometheus/client_golang/pull/1323](https://togithub.com/prometheus/client_golang/pull/1323)l/1323 * @​alexandear made their first contributi[https://github.com/prometheus/client_golang/pull/1348](https://togithub.com/prometheus/client_golang/pull/1348)l/1348 **Full Changelog**: prometheus/client_golang@v1.16.0...v1.17.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/open-feature/flagd). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDcuMiIsInVwZGF0ZWRJblZlciI6IjM2LjEwNy4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
) [](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/prometheus/client_golang](https://togithub.com/prometheus/client_golang) | require | minor | `v1.16.0` -> `v1.17.0` | --- ### Release Notes <details> <summary>prometheus/client_golang (github.com/prometheus/client_golang)</summary> ### [`v1.17.0`](https://togithub.com/prometheus/client_golang/releases/tag/v1.17.0) [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.16.0...v1.17.0) #### What's Changed - \[CHANGE] Minimum required go version is now 1.19 (we also test client_golang against new 1.21 version). [#​1325](https://togithub.com/prometheus/client_golang/issues/1325) - \[FEATURE] Add support for Created Timestamps in Counters, Summaries and Historams. [#​1313](https://togithub.com/prometheus/client_golang/issues/1313) - \[ENHANCEMENT] Enable detection of a native histogram without observations. [#​1314](https://togithub.com/prometheus/client_golang/issues/1314) <details><summary>Commits</summary> - Merge v1.16.0 to main by [@​bwplotka](https://togithub.com/bwplotka) in [https://github.com/prometheus/client_golang/pull/1293](https://togithub.com/prometheus/client_golang/pull/1293) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/1297](https://togithub.com/prometheus/client_golang/pull/1297) - ci: define minimal permissions to GitHub workflows by [@​diogoteles08](https://togithub.com/diogoteles08) in [https://github.com/prometheus/client_golang/pull/1295](https://togithub.com/prometheus/client_golang/pull/1295) - Do not allocate memory when there's no constraints by [@​Okhoshi](https://togithub.com/Okhoshi) in [https://github.com/prometheus/client_golang/pull/1296](https://togithub.com/prometheus/client_golang/pull/1296) - Bump golang.org/x/sys from 0.8.0 to 0.9.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1306](https://togithub.com/prometheus/client_golang/pull/1306) - Bump google.golang.org/grpc from 1.45.0 to 1.53.0 in /tutorial/whatsup by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1307](https://togithub.com/prometheus/client_golang/pull/1307) - histogram: Enable detection of a native histogram without observations by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/1314](https://togithub.com/prometheus/client_golang/pull/1314) - Bump github.com/prometheus/procfs from 0.10.1 to 0.11.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1305](https://togithub.com/prometheus/client_golang/pull/1305) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/1302](https://togithub.com/prometheus/client_golang/pull/1302) - Fix data-race in metric without `code` and `method` but with `WithLabelFromCtx` by [@​tigrato](https://togithub.com/tigrato) in [https://github.com/prometheus/client_golang/pull/1318](https://togithub.com/prometheus/client_golang/pull/1318) - Add missing tick "\`" in README by [@​ZiViZiViZ](https://togithub.com/ZiViZiViZ) in [https://github.com/prometheus/client_golang/pull/1321](https://togithub.com/prometheus/client_golang/pull/1321) - Bump golang.org/x/sys from 0.9.0 to 0.10.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1320](https://togithub.com/prometheus/client_golang/pull/1320) - Bump github.com/prometheus/procfs from 0.11.0 to 0.11.1 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1319](https://togithub.com/prometheus/client_golang/pull/1319) - docs: trivial grammar fixes to improve readability in promauto Godoc by [@​sengi](https://togithub.com/sengi) in [https://github.com/prometheus/client_golang/pull/1322](https://togithub.com/prometheus/client_golang/pull/1322) - Add Go 1.21 support by [@​kakkoyun](https://togithub.com/kakkoyun) in [https://github.com/prometheus/client_golang/pull/1325](https://togithub.com/prometheus/client_golang/pull/1325) - Bump client_model by [@​ArthurSens](https://togithub.com/ArthurSens) in [https://github.com/prometheus/client_golang/pull/1323](https://togithub.com/prometheus/client_golang/pull/1323) - histogram docs: Fixed minor nit. by [@​bwplotka](https://togithub.com/bwplotka) in [https://github.com/prometheus/client_golang/pull/1324](https://togithub.com/prometheus/client_golang/pull/1324) - Update building by [@​SuperQ](https://togithub.com/SuperQ) in [https://github.com/prometheus/client_golang/pull/1326](https://togithub.com/prometheus/client_golang/pull/1326) - Bump golang.org/x/sys from 0.10.0 to 0.11.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1331](https://togithub.com/prometheus/client_golang/pull/1331) - Bump github.com/prometheus/client_golang from 1.15.1-0.20230416215738-0963f595c689 to 1.16.0 in /tutorial/whatsup by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1329](https://togithub.com/prometheus/client_golang/pull/1329) - Bump github.com/prometheus/client_golang from 1.13.1 to 1.16.0 in /examples/middleware by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1328](https://togithub.com/prometheus/client_golang/pull/1328) - Bump github.com/prometheus/common from 0.42.0 to 0.44.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1284](https://togithub.com/prometheus/client_golang/pull/1284) - Bump github.com/prometheus/common from 0.42.0 to 0.44.0 in /tutorial/whatsup by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1330](https://togithub.com/prometheus/client_golang/pull/1330) - Bump google.golang.org/protobuf from 1.30.0 to 1.31.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1304](https://togithub.com/prometheus/client_golang/pull/1304) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/1332](https://togithub.com/prometheus/client_golang/pull/1332) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/1338](https://togithub.com/prometheus/client_golang/pull/1338) - Cleanup golangci-lint errcheck by [@​SuperQ](https://togithub.com/SuperQ) in [https://github.com/prometheus/client_golang/pull/1339](https://togithub.com/prometheus/client_golang/pull/1339) - Add go_godebug_non_default_behavior_tlsmaxrsasize_events_total by [@​alexandear](https://togithub.com/alexandear) in [https://github.com/prometheus/client_golang/pull/1348](https://togithub.com/prometheus/client_golang/pull/1348) - Extend Counters, Summaries and Histograms with creation timestamp by [@​ArthurSens](https://togithub.com/ArthurSens) in [https://github.com/prometheus/client_golang/pull/1313](https://togithub.com/prometheus/client_golang/pull/1313) - Fix typos in comments, tests, and errors by [@​alexandear](https://togithub.com/alexandear) in [https://github.com/prometheus/client_golang/pull/1346](https://togithub.com/prometheus/client_golang/pull/1346) - Deprecated comment should begin with "Deprecated:" by [@​alexandear](https://togithub.com/alexandear) in [https://github.com/prometheus/client_golang/pull/1347](https://togithub.com/prometheus/client_golang/pull/1347) - Add changelog entry for 1.17 by [@​ArthurSens](https://togithub.com/ArthurSens) in [https://github.com/prometheus/client_golang/pull/1352](https://togithub.com/prometheus/client_golang/pull/1352) </details> #### New Contributors * @​diogoteles08 made their first contributi[https://github.com/prometheus/client_golang/pull/1295](https://togithub.com/prometheus/client_golang/pull/1295)l/1295 * @​tigrato made their first contributi[https://github.com/prometheus/client_golang/pull/1318](https://togithub.com/prometheus/client_golang/pull/1318)l/1318 * @​ZiViZiViZ made their first contributi[https://github.com/prometheus/client_golang/pull/1321](https://togithub.com/prometheus/client_golang/pull/1321)l/1321 * @​sengi made their first contributi[https://github.com/prometheus/client_golang/pull/1322](https://togithub.com/prometheus/client_golang/pull/1322)l/1322 * @​ArthurSens made their first contributi[https://github.com/prometheus/client_golang/pull/1323](https://togithub.com/prometheus/client_golang/pull/1323)l/1323 * @​alexandear made their first contributi[https://github.com/prometheus/client_golang/pull/1348](https://togithub.com/prometheus/client_golang/pull/1348)l/1348 **Full Changelog**: prometheus/client_golang@v1.16.0...v1.17.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/hetznercloud/hcloud-cloud-controller-manager). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDcuMiIsInVwZGF0ZWRJblZlciI6IjM2LjEwNy4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
….0 (#4144) [](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/prometheus/client_golang](https://togithub.com/prometheus/client_golang) | require | minor | `v1.16.0` -> `v1.17.0` | --- ### Release Notes <details> <summary>prometheus/client_golang (github.com/prometheus/client_golang)</summary> ### [`v1.17.0`](https://togithub.com/prometheus/client_golang/releases/tag/v1.17.0) [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.16.0...v1.17.0) #### What's Changed - \[CHANGE] Minimum required go version is now 1.19 (we also test client_golang against new 1.21 version). [#​1325](https://togithub.com/prometheus/client_golang/issues/1325) - \[FEATURE] Add support for Created Timestamps in Counters, Summaries and Historams. [#​1313](https://togithub.com/prometheus/client_golang/issues/1313) - \[ENHANCEMENT] Enable detection of a native histogram without observations. [#​1314](https://togithub.com/prometheus/client_golang/issues/1314) <details><summary>Commits</summary> - Merge v1.16.0 to main by [@​bwplotka](https://togithub.com/bwplotka) in [https://github.com/prometheus/client_golang/pull/1293](https://togithub.com/prometheus/client_golang/pull/1293) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/1297](https://togithub.com/prometheus/client_golang/pull/1297) - ci: define minimal permissions to GitHub workflows by [@​diogoteles08](https://togithub.com/diogoteles08) in [https://github.com/prometheus/client_golang/pull/1295](https://togithub.com/prometheus/client_golang/pull/1295) - Do not allocate memory when there's no constraints by [@​Okhoshi](https://togithub.com/Okhoshi) in [https://github.com/prometheus/client_golang/pull/1296](https://togithub.com/prometheus/client_golang/pull/1296) - Bump golang.org/x/sys from 0.8.0 to 0.9.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1306](https://togithub.com/prometheus/client_golang/pull/1306) - Bump google.golang.org/grpc from 1.45.0 to 1.53.0 in /tutorial/whatsup by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1307](https://togithub.com/prometheus/client_golang/pull/1307) - histogram: Enable detection of a native histogram without observations by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/1314](https://togithub.com/prometheus/client_golang/pull/1314) - Bump github.com/prometheus/procfs from 0.10.1 to 0.11.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1305](https://togithub.com/prometheus/client_golang/pull/1305) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/1302](https://togithub.com/prometheus/client_golang/pull/1302) - Fix data-race in metric without `code` and `method` but with `WithLabelFromCtx` by [@​tigrato](https://togithub.com/tigrato) in [https://github.com/prometheus/client_golang/pull/1318](https://togithub.com/prometheus/client_golang/pull/1318) - Add missing tick "\`" in README by [@​ZiViZiViZ](https://togithub.com/ZiViZiViZ) in [https://github.com/prometheus/client_golang/pull/1321](https://togithub.com/prometheus/client_golang/pull/1321) - Bump golang.org/x/sys from 0.9.0 to 0.10.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1320](https://togithub.com/prometheus/client_golang/pull/1320) - Bump github.com/prometheus/procfs from 0.11.0 to 0.11.1 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1319](https://togithub.com/prometheus/client_golang/pull/1319) - docs: trivial grammar fixes to improve readability in promauto Godoc by [@​sengi](https://togithub.com/sengi) in [https://github.com/prometheus/client_golang/pull/1322](https://togithub.com/prometheus/client_golang/pull/1322) - Add Go 1.21 support by [@​kakkoyun](https://togithub.com/kakkoyun) in [https://github.com/prometheus/client_golang/pull/1325](https://togithub.com/prometheus/client_golang/pull/1325) - Bump client_model by [@​ArthurSens](https://togithub.com/ArthurSens) in [https://github.com/prometheus/client_golang/pull/1323](https://togithub.com/prometheus/client_golang/pull/1323) - histogram docs: Fixed minor nit. by [@​bwplotka](https://togithub.com/bwplotka) in [https://github.com/prometheus/client_golang/pull/1324](https://togithub.com/prometheus/client_golang/pull/1324) - Update building by [@​SuperQ](https://togithub.com/SuperQ) in [https://github.com/prometheus/client_golang/pull/1326](https://togithub.com/prometheus/client_golang/pull/1326) - Bump golang.org/x/sys from 0.10.0 to 0.11.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1331](https://togithub.com/prometheus/client_golang/pull/1331) - Bump github.com/prometheus/client_golang from 1.15.1-0.20230416215738-0963f595c689 to 1.16.0 in /tutorial/whatsup by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1329](https://togithub.com/prometheus/client_golang/pull/1329) - Bump github.com/prometheus/client_golang from 1.13.1 to 1.16.0 in /examples/middleware by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1328](https://togithub.com/prometheus/client_golang/pull/1328) - Bump github.com/prometheus/common from 0.42.0 to 0.44.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1284](https://togithub.com/prometheus/client_golang/pull/1284) - Bump github.com/prometheus/common from 0.42.0 to 0.44.0 in /tutorial/whatsup by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1330](https://togithub.com/prometheus/client_golang/pull/1330) - Bump google.golang.org/protobuf from 1.30.0 to 1.31.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1304](https://togithub.com/prometheus/client_golang/pull/1304) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/1332](https://togithub.com/prometheus/client_golang/pull/1332) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/1338](https://togithub.com/prometheus/client_golang/pull/1338) - Cleanup golangci-lint errcheck by [@​SuperQ](https://togithub.com/SuperQ) in [https://github.com/prometheus/client_golang/pull/1339](https://togithub.com/prometheus/client_golang/pull/1339) - Add go_godebug_non_default_behavior_tlsmaxrsasize_events_total by [@​alexandear](https://togithub.com/alexandear) in [https://github.com/prometheus/client_golang/pull/1348](https://togithub.com/prometheus/client_golang/pull/1348) - Extend Counters, Summaries and Histograms with creation timestamp by [@​ArthurSens](https://togithub.com/ArthurSens) in [https://github.com/prometheus/client_golang/pull/1313](https://togithub.com/prometheus/client_golang/pull/1313) - Fix typos in comments, tests, and errors by [@​alexandear](https://togithub.com/alexandear) in [https://github.com/prometheus/client_golang/pull/1346](https://togithub.com/prometheus/client_golang/pull/1346) - Deprecated comment should begin with "Deprecated:" by [@​alexandear](https://togithub.com/alexandear) in [https://github.com/prometheus/client_golang/pull/1347](https://togithub.com/prometheus/client_golang/pull/1347) - Add changelog entry for 1.17 by [@​ArthurSens](https://togithub.com/ArthurSens) in [https://github.com/prometheus/client_golang/pull/1352](https://togithub.com/prometheus/client_golang/pull/1352) </details> #### New Contributors * @​diogoteles08 made their first contributi[https://github.com/prometheus/client_golang/pull/1295](https://togithub.com/prometheus/client_golang/pull/1295)l/1295 * @​tigrato made their first contributi[https://github.com/prometheus/client_golang/pull/1318](https://togithub.com/prometheus/client_golang/pull/1318)l/1318 * @​ZiViZiViZ made their first contributi[https://github.com/prometheus/client_golang/pull/1321](https://togithub.com/prometheus/client_golang/pull/1321)l/1321 * @​sengi made their first contributi[https://github.com/prometheus/client_golang/pull/1322](https://togithub.com/prometheus/client_golang/pull/1322)l/1322 * @​ArthurSens made their first contributi[https://github.com/prometheus/client_golang/pull/1323](https://togithub.com/prometheus/client_golang/pull/1323)l/1323 * @​alexandear made their first contributi[https://github.com/prometheus/client_golang/pull/1348](https://togithub.com/prometheus/client_golang/pull/1348)l/1348 **Full Changelog**: prometheus/client_golang@v1.16.0...v1.17.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 6am on Monday" in timezone Europe/Paris, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/cozy/cozy-stack). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4wLjMiLCJ1cGRhdGVkSW5WZXIiOiIzNy4wLjMiLCJ0YXJnZXRCcmFuY2giOiJtYXN0ZXIifQ==-->
This PR fixes a data race that exists when the metric used in any
promhttp
middleware doesn't collect thecode
andmethod
but usesWithLabelFromCtx
to collect values from context.The problem happens because when no
code
andmethod
tags are collected, thelabels
function returns a pre-initialized mapemptyLabels
for every request.When one or multiple
WithLabelFromCtx
options are configured, the returned map from thelabels
function call is used to collect the metrics from context which creates a multi-write data race.Fixes #1317