-
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
api: Extend and improve json-iterator usage #1225
Conversation
This seemingly undoes #440, but all the json-iterator usage was actually pulled up into client_golang in prometheus/client_golang#1225 . Detailed explanation there. In short, we would like to keep heavy dependencies like json-iterator out of prometheus/common/model since many importers of this package aren't even interested in the JSON marshaling. Signed-off-by: beorn7 <beorn@grafana.com>
@zenador as discussed. I believe, together with prometheus/common#453 , this should still work out in Mimir. To try it out, just make sure you have vendored in both PRs. |
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.
LGTM after @krajorama's comments. I believe this code was ported from common
, so I did not do a deep review
It's not just ported. It also adds the unmarshal abilities. Also, it tries to fully embrace json-iterator, whereas the previous code in common was implementing json-iterator usage within a conventional marshaling method (which I believe only gets you some of the benefits of using json-iterator). |
This seemingly undoes #440, but all the json-iterator usage was actually pulled up into client_golang in prometheus/client_golang#1225 . Detailed explanation there. In short, we would like to keep heavy dependencies like json-iterator out of prometheus/common/model since many importers of this package aren't even interested in the JSON marshaling. Signed-off-by: beorn7 <beorn@grafana.com>
OK, this should do the trick. |
Ah wait, now the order of labels is not deterministic (in fact, it never was, but we used only one in the tests so far). Will fix that, too. |
OK, we should be good now. @krajorama and @zenador, could you double check that this doesn't create any undue burdens for Mimir? |
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.
LGTM with small comments on the tests.
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.
LGTM.
Out of curiosity: Do we have result of the benchmark comparison anywhere?
Note: Previously posted benchmark used wrong dependencies (and thus snuck in jsoniter again). Will post correct results soon. |
For one, this pulls up the histogram-related json-iterator usage from prometheus/common into the API client. Previously, the only json-iterater usage was here in the API client. But then json-iterator was used for the native histogram additions directly in prometheus/common, see https://github.com/prometheus/common/pull/440/files . This however meant that any user of prometheus/common/model would now link in json-iterator, even if they are not using the JSON marshaling at all. To keep prometheus/common/model more leightweight, this commit moves all the json-iterator usage into the API client itself, as it was done before for the normal float samples. This commit also adds an unmarshaling function for native histograms, which didn't even exist in prometheus/common/model so far. It also adds json-iterator marshaling and un-marshaling for model.SampleStream, which is only needed for the benchmark (BenchmarkSamplesJsonSerialization). This fixes the benchmark such that it actually compares json-iterator and std-lib json encoding (which didn't work before because the custom marshaling methods of model.SampleStream enforced std-lib json encoding for floats and json-iterator encoding for histograms in all cases). I expect this to fix #1179. Signed-off-by: beorn7 <beorn@grafana.com>
And here the benchmark in its full glory:
|
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! 💪🏽
….0 (#424) [](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.14.0` -> `v1.15.0` | --- ### Release Notes <details> <summary>prometheus/client_golang</summary> ### [`v1.15.0`](https://togithub.com/prometheus/client_golang/releases/tag/v1.15.0) [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.14.0...v1.15.0) #### Changed \[BUGFIX] Fix issue with atomic variables on ppc64le [#​1171](https://togithub.com/prometheus/client_golang/issues/1171) \[BUGFIX] Support for multiple samples within same metric [#​1181](https://togithub.com/prometheus/client_golang/issues/1181) \[BUGFIX] Bump golang.org/x/text to v0.3.8 to mitigate CVE-2022-32149 [#​1187](https://togithub.com/prometheus/client_golang/issues/1187) \[ENHANCEMENT] Add exemplars and middleware examples [#​1173](https://togithub.com/prometheus/client_golang/issues/1173) \[ENHANCEMENT] Add more context to "duplicate label names" error to enable debugging [#​1177](https://togithub.com/prometheus/client_golang/issues/1177) \[ENHANCEMENT] Add constrained labels and constrained variant for all MetricVecs [#​1151](https://togithub.com/prometheus/client_golang/issues/1151) \[ENHANCEMENT] Moved away from deprecated github.com/golang/protobuf package [#​1183](https://togithub.com/prometheus/client_golang/issues/1183) \[ENHANCEMENT] Add possibility to dynamically get label values for http instrumentation [#​1066](https://togithub.com/prometheus/client_golang/issues/1066) \[ENHANCEMENT] Add ability to Pusher to add custom headers [#​1218](https://togithub.com/prometheus/client_golang/issues/1218) \[ENHANCEMENT] api: Extend and improve efficiency of json-iterator usage [#​1225](https://togithub.com/prometheus/client_golang/issues/1225) \[ENHANCEMENT] Added (official) support for go 1.20 [#​1234](https://togithub.com/prometheus/client_golang/issues/1234) \[ENHANCEMENT] timer: Added support for exemplars [#​1233](https://togithub.com/prometheus/client_golang/issues/1233) \[ENHANCEMENT] Filter expected metrics as well in CollectAndCompare [#​1143](https://togithub.com/prometheus/client_golang/issues/1143) \[ENHANCEMENT]⚠️ Only set start/end if time is not Zero. This breaks compatibility in experimental api package. If you strictly depend on empty time.Time as actual value, the behavior is now changed [#​1238](https://togithub.com/prometheus/client_golang/issues/1238) <details> <summary>All commits</summary> - Merge release 1.14 to main by [@​bwplotka](https://togithub.com/bwplotka) in [https://github.com/prometheus/client_golang/pull/1164](https://togithub.com/prometheus/client_golang/pull/1164) - Fix typo in doc comment by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/1166](https://togithub.com/prometheus/client_golang/pull/1166) - Fix issue with atomic variables on ppc64le by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/1171](https://togithub.com/prometheus/client_golang/pull/1171) - examples: Add exemplars and middleware examples by [@​jessicalins](https://togithub.com/jessicalins) in [https://github.com/prometheus/client_golang/pull/1173](https://togithub.com/prometheus/client_golang/pull/1173) - Add context to "duplicate label names" to enable debugging by [@​SpencerMalone](https://togithub.com/SpencerMalone) in [https://github.com/prometheus/client_golang/pull/1177](https://togithub.com/prometheus/client_golang/pull/1177) - Add constrained labels and Constrained variant for all MetricVecs by [@​Okhoshi](https://togithub.com/Okhoshi) in [https://github.com/prometheus/client_golang/pull/1151](https://togithub.com/prometheus/client_golang/pull/1151) - Support for multiple samples within same metric by [@​machadovilaca](https://togithub.com/machadovilaca) in [https://github.com/prometheus/client_golang/pull/1181](https://togithub.com/prometheus/client_golang/pull/1181) - Replace deprecated github.com/golang/protobuf package by [@​zhsj](https://togithub.com/zhsj) in [https://github.com/prometheus/client_golang/pull/1183](https://togithub.com/prometheus/client_golang/pull/1183) - Bump golang.org/x/text to v0.3.8 to mitigate CVE-2022-32149 by [@​b4bay](https://togithub.com/b4bay) in [https://github.com/prometheus/client_golang/pull/1187](https://togithub.com/prometheus/client_golang/pull/1187) - typo fix by [@​ibreakthecloud](https://togithub.com/ibreakthecloud) in [https://github.com/prometheus/client_golang/pull/1178](https://togithub.com/prometheus/client_golang/pull/1178) - Add possibility to dynamically get label values for http instrumentation by [@​Okhoshi](https://togithub.com/Okhoshi) in [https://github.com/prometheus/client_golang/pull/1066](https://togithub.com/prometheus/client_golang/pull/1066) - Bump github.com/cespare/xxhash/v2 from 2.1.2 to 2.2.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1199](https://togithub.com/prometheus/client_golang/pull/1199) - Bump github.com/prometheus/procfs from 0.8.0 to 0.9.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1198](https://togithub.com/prometheus/client_golang/pull/1198) - Bump golang.org/x/sys from 0.3.0 to 0.4.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1217](https://togithub.com/prometheus/client_golang/pull/1217) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/1213](https://togithub.com/prometheus/client_golang/pull/1213) - Bump github.com/prometheus/common from 0.37.0 to 0.39.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1197](https://togithub.com/prometheus/client_golang/pull/1197) - Add `Header` method to Pusher for custom header by [@​songjiayang](https://togithub.com/songjiayang) in [https://github.com/prometheus/client_golang/pull/1218](https://togithub.com/prometheus/client_golang/pull/1218) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/1224](https://togithub.com/prometheus/client_golang/pull/1224) - api: Extend and improve json-iterator usage by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/1225](https://togithub.com/prometheus/client_golang/pull/1225) - Indent example in godoc consistently by [@​lamida](https://togithub.com/lamida) in [https://github.com/prometheus/client_golang/pull/1226](https://togithub.com/prometheus/client_golang/pull/1226) - Remove unnecessary check if label is nil in observeWithExemplar by [@​dimonl](https://togithub.com/dimonl) in [https://github.com/prometheus/client_golang/pull/1235](https://togithub.com/prometheus/client_golang/pull/1235) - README: Remove not working gocoverage images. by [@​bwplotka](https://togithub.com/bwplotka) in [https://github.com/prometheus/client_golang/pull/1236](https://togithub.com/prometheus/client_golang/pull/1236) - Added support for go 1.20. by [@​bwplotka](https://togithub.com/bwplotka) in [https://github.com/prometheus/client_golang/pull/1234](https://togithub.com/prometheus/client_golang/pull/1234) - timer: Added support for exemplars. by [@​bwplotka](https://togithub.com/bwplotka) in [https://github.com/prometheus/client_golang/pull/1233](https://togithub.com/prometheus/client_golang/pull/1233) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/1237](https://togithub.com/prometheus/client_golang/pull/1237) - Filter expected metrics as well in CollectAndCompare by [@​DariaKunoichi](https://togithub.com/DariaKunoichi) in [https://github.com/prometheus/client_golang/pull/1143](https://togithub.com/prometheus/client_golang/pull/1143) - Only set start/end if time is not Zero by [@​jacksontj](https://togithub.com/jacksontj) in [https://github.com/prometheus/client_golang/pull/1238](https://togithub.com/prometheus/client_golang/pull/1238) - Bump google.golang.org/protobuf from 1.28.1 to 1.30.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1243](https://togithub.com/prometheus/client_golang/pull/1243) - Bump golang.org/x/sys from 0.5.0 to 0.6.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1246](https://togithub.com/prometheus/client_golang/pull/1246) - Bump github.com/golang/protobuf from 1.5.2 to 1.5.3 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1245](https://togithub.com/prometheus/client_golang/pull/1245) - Bump github.com/prometheus/common from 0.41.0 to 0.42.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1244](https://togithub.com/prometheus/client_golang/pull/1244) - Cut v1.15.0 by [@​bwplotka](https://togithub.com/bwplotka) in [https://github.com/prometheus/client_golang/pull/1249](https://togithub.com/prometheus/client_golang/pull/1249) </details> #### New Contributors * @​SpencerMalone made their first contributi[https://github.com/prometheus/client_golang/pull/1177](https://togithub.com/prometheus/client_golang/pull/1177)l/1177 * @​Okhoshi made their first contributi[https://github.com/prometheus/client_golang/pull/1151](https://togithub.com/prometheus/client_golang/pull/1151)l/1151 * @​machadovilaca made their first contributi[https://github.com/prometheus/client_golang/pull/1181](https://togithub.com/prometheus/client_golang/pull/1181)l/1181 * @​b4bay made their first contributi[https://github.com/prometheus/client_golang/pull/1187](https://togithub.com/prometheus/client_golang/pull/1187)l/1187 * @​ibreakthecloud made their first contributi[https://github.com/prometheus/client_golang/pull/1178](https://togithub.com/prometheus/client_golang/pull/1178)l/1178 * @​songjiayang made their first contributi[https://github.com/prometheus/client_golang/pull/1218](https://togithub.com/prometheus/client_golang/pull/1218)l/1218 * @​lamida made their first contributi[https://github.com/prometheus/client_golang/pull/1226](https://togithub.com/prometheus/client_golang/pull/1226)l/1226 * @​dimonl made their first contributi[https://github.com/prometheus/client_golang/pull/1235](https://togithub.com/prometheus/client_golang/pull/1235)l/1235 * @​DariaKunoichi made their first contributi[https://github.com/prometheus/client_golang/pull/1143](https://togithub.com/prometheus/client_golang/pull/1143)l/1143 **Full Changelog**: prometheus/client_golang@v1.14.0...v1.15.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://app.renovatebot.com/dashboard#github/hetznercloud/hcloud-cloud-controller-manager). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS40MC4wIiwidXBkYXRlZEluVmVyIjoiMzUuNDAuMCJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
….0 (#608) [](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.14.0` -> `v1.15.0` | --- ### Release Notes <details> <summary>prometheus/client_golang</summary> ### [`v1.15.0`](https://togithub.com/prometheus/client_golang/releases/tag/v1.15.0) [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.14.0...v1.15.0) #### Changed \[BUGFIX] Fix issue with atomic variables on ppc64le [#​1171](https://togithub.com/prometheus/client_golang/issues/1171) \[BUGFIX] Support for multiple samples within same metric [#​1181](https://togithub.com/prometheus/client_golang/issues/1181) \[BUGFIX] Bump golang.org/x/text to v0.3.8 to mitigate CVE-2022-32149 [#​1187](https://togithub.com/prometheus/client_golang/issues/1187) \[ENHANCEMENT] Add exemplars and middleware examples [#​1173](https://togithub.com/prometheus/client_golang/issues/1173) \[ENHANCEMENT] Add more context to "duplicate label names" error to enable debugging [#​1177](https://togithub.com/prometheus/client_golang/issues/1177) \[ENHANCEMENT] Add constrained labels and constrained variant for all MetricVecs [#​1151](https://togithub.com/prometheus/client_golang/issues/1151) \[ENHANCEMENT] Moved away from deprecated github.com/golang/protobuf package [#​1183](https://togithub.com/prometheus/client_golang/issues/1183) \[ENHANCEMENT] Add possibility to dynamically get label values for http instrumentation [#​1066](https://togithub.com/prometheus/client_golang/issues/1066) \[ENHANCEMENT] Add ability to Pusher to add custom headers [#​1218](https://togithub.com/prometheus/client_golang/issues/1218) \[ENHANCEMENT] api: Extend and improve efficiency of json-iterator usage [#​1225](https://togithub.com/prometheus/client_golang/issues/1225) \[ENHANCEMENT] Added (official) support for go 1.20 [#​1234](https://togithub.com/prometheus/client_golang/issues/1234) \[ENHANCEMENT] timer: Added support for exemplars [#​1233](https://togithub.com/prometheus/client_golang/issues/1233) \[ENHANCEMENT] Filter expected metrics as well in CollectAndCompare [#​1143](https://togithub.com/prometheus/client_golang/issues/1143) \[ENHANCEMENT]⚠️ Only set start/end if time is not Zero. This breaks compatibility in experimental api package. If you strictly depend on empty time.Time as actual value, the behavior is now changed [#​1238](https://togithub.com/prometheus/client_golang/issues/1238) <details> <summary>All commits</summary> - Merge release 1.14 to main by [@​bwplotka](https://togithub.com/bwplotka) in [https://github.com/prometheus/client_golang/pull/1164](https://togithub.com/prometheus/client_golang/pull/1164) - Fix typo in doc comment by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/1166](https://togithub.com/prometheus/client_golang/pull/1166) - Fix issue with atomic variables on ppc64le by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/1171](https://togithub.com/prometheus/client_golang/pull/1171) - examples: Add exemplars and middleware examples by [@​jessicalins](https://togithub.com/jessicalins) in [https://github.com/prometheus/client_golang/pull/1173](https://togithub.com/prometheus/client_golang/pull/1173) - Add context to "duplicate label names" to enable debugging by [@​SpencerMalone](https://togithub.com/SpencerMalone) in [https://github.com/prometheus/client_golang/pull/1177](https://togithub.com/prometheus/client_golang/pull/1177) - Add constrained labels and Constrained variant for all MetricVecs by [@​Okhoshi](https://togithub.com/Okhoshi) in [https://github.com/prometheus/client_golang/pull/1151](https://togithub.com/prometheus/client_golang/pull/1151) - Support for multiple samples within same metric by [@​machadovilaca](https://togithub.com/machadovilaca) in [https://github.com/prometheus/client_golang/pull/1181](https://togithub.com/prometheus/client_golang/pull/1181) - Replace deprecated github.com/golang/protobuf package by [@​zhsj](https://togithub.com/zhsj) in [https://github.com/prometheus/client_golang/pull/1183](https://togithub.com/prometheus/client_golang/pull/1183) - Bump golang.org/x/text to v0.3.8 to mitigate CVE-2022-32149 by [@​b4bay](https://togithub.com/b4bay) in [https://github.com/prometheus/client_golang/pull/1187](https://togithub.com/prometheus/client_golang/pull/1187) - typo fix by [@​ibreakthecloud](https://togithub.com/ibreakthecloud) in [https://github.com/prometheus/client_golang/pull/1178](https://togithub.com/prometheus/client_golang/pull/1178) - Add possibility to dynamically get label values for http instrumentation by [@​Okhoshi](https://togithub.com/Okhoshi) in [https://github.com/prometheus/client_golang/pull/1066](https://togithub.com/prometheus/client_golang/pull/1066) - Bump github.com/cespare/xxhash/v2 from 2.1.2 to 2.2.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1199](https://togithub.com/prometheus/client_golang/pull/1199) - Bump github.com/prometheus/procfs from 0.8.0 to 0.9.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1198](https://togithub.com/prometheus/client_golang/pull/1198) - Bump golang.org/x/sys from 0.3.0 to 0.4.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1217](https://togithub.com/prometheus/client_golang/pull/1217) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/1213](https://togithub.com/prometheus/client_golang/pull/1213) - Bump github.com/prometheus/common from 0.37.0 to 0.39.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1197](https://togithub.com/prometheus/client_golang/pull/1197) - Add `Header` method to Pusher for custom header by [@​songjiayang](https://togithub.com/songjiayang) in [https://github.com/prometheus/client_golang/pull/1218](https://togithub.com/prometheus/client_golang/pull/1218) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/1224](https://togithub.com/prometheus/client_golang/pull/1224) - api: Extend and improve json-iterator usage by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/1225](https://togithub.com/prometheus/client_golang/pull/1225) - Indent example in godoc consistently by [@​lamida](https://togithub.com/lamida) in [https://github.com/prometheus/client_golang/pull/1226](https://togithub.com/prometheus/client_golang/pull/1226) - Remove unnecessary check if label is nil in observeWithExemplar by [@​dimonl](https://togithub.com/dimonl) in [https://github.com/prometheus/client_golang/pull/1235](https://togithub.com/prometheus/client_golang/pull/1235) - README: Remove not working gocoverage images. by [@​bwplotka](https://togithub.com/bwplotka) in [https://github.com/prometheus/client_golang/pull/1236](https://togithub.com/prometheus/client_golang/pull/1236) - Added support for go 1.20. by [@​bwplotka](https://togithub.com/bwplotka) in [https://github.com/prometheus/client_golang/pull/1234](https://togithub.com/prometheus/client_golang/pull/1234) - timer: Added support for exemplars. by [@​bwplotka](https://togithub.com/bwplotka) in [https://github.com/prometheus/client_golang/pull/1233](https://togithub.com/prometheus/client_golang/pull/1233) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/1237](https://togithub.com/prometheus/client_golang/pull/1237) - Filter expected metrics as well in CollectAndCompare by [@​DariaKunoichi](https://togithub.com/DariaKunoichi) in [https://github.com/prometheus/client_golang/pull/1143](https://togithub.com/prometheus/client_golang/pull/1143) - Only set start/end if time is not Zero by [@​jacksontj](https://togithub.com/jacksontj) in [https://github.com/prometheus/client_golang/pull/1238](https://togithub.com/prometheus/client_golang/pull/1238) - Bump google.golang.org/protobuf from 1.28.1 to 1.30.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1243](https://togithub.com/prometheus/client_golang/pull/1243) - Bump golang.org/x/sys from 0.5.0 to 0.6.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1246](https://togithub.com/prometheus/client_golang/pull/1246) - Bump github.com/golang/protobuf from 1.5.2 to 1.5.3 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1245](https://togithub.com/prometheus/client_golang/pull/1245) - Bump github.com/prometheus/common from 0.41.0 to 0.42.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/prometheus/client_golang/pull/1244](https://togithub.com/prometheus/client_golang/pull/1244) - Cut v1.15.0 by [@​bwplotka](https://togithub.com/bwplotka) in [https://github.com/prometheus/client_golang/pull/1249](https://togithub.com/prometheus/client_golang/pull/1249) </details> #### New Contributors * @​SpencerMalone made their first contributi[https://github.com/prometheus/client_golang/pull/1177](https://togithub.com/prometheus/client_golang/pull/1177)l/1177 * @​Okhoshi made their first contributi[https://github.com/prometheus/client_golang/pull/1151](https://togithub.com/prometheus/client_golang/pull/1151)l/1151 * @​machadovilaca made their first contributi[https://github.com/prometheus/client_golang/pull/1181](https://togithub.com/prometheus/client_golang/pull/1181)l/1181 * @​b4bay made their first contributi[https://github.com/prometheus/client_golang/pull/1187](https://togithub.com/prometheus/client_golang/pull/1187)l/1187 * @​ibreakthecloud made their first contributi[https://github.com/prometheus/client_golang/pull/1178](https://togithub.com/prometheus/client_golang/pull/1178)l/1178 * @​songjiayang made their first contributi[https://github.com/prometheus/client_golang/pull/1218](https://togithub.com/prometheus/client_golang/pull/1218)l/1218 * @​lamida made their first contributi[https://github.com/prometheus/client_golang/pull/1226](https://togithub.com/prometheus/client_golang/pull/1226)l/1226 * @​dimonl made their first contributi[https://github.com/prometheus/client_golang/pull/1235](https://togithub.com/prometheus/client_golang/pull/1235)l/1235 * @​DariaKunoichi made their first contributi[https://github.com/prometheus/client_golang/pull/1143](https://togithub.com/prometheus/client_golang/pull/1143)l/1143 **Full Changelog**: prometheus/client_golang@v1.14.0...v1.15.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://app.renovatebot.com/dashboard#github/open-feature/flagd). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS40MC4wIiwidXBkYXRlZEluVmVyIjoiMzUuNDAuMCJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This seemingly undoes prometheus#440, but all the json-iterator usage was actually pulled up into client_golang in prometheus/client_golang#1225 . Detailed explanation there. In short, we would like to keep heavy dependencies like json-iterator out of prometheus/common/model since many importers of this package aren't even interested in the JSON marshaling. Signed-off-by: beorn7 <beorn@grafana.com>
For one, this pulls up the histogram-related json-iterator usage from prometheus/common into the API client. Previously, the only json-iterater usage was here in the API client. But then json-iterator was used for the native histogram additions directly in prometheus/common, see
https://github.com/prometheus/common/pull/440/files . This however meant that any user of prometheus/common/model would now link in json-iterator, even if they are not using the JSON marshaling at all. To keep prometheus/common/model more leightweight, this commit moves all the json-iterator usage into the API client itself, as it was done before for the normal float samples.
This commit also adds an unmarshaling function for native histograms, which didn't even exist in prometheus/common/model so far.
It also adds json-iterator marshaling and un-marshaling for model.SampleStream, which is only needed for the benchmark (BenchmarkSamplesJsonSerialization). This fixes the benchmark such that it actually compares json-iterator and std-lib json encoding (which didn't work before because the custom marshaling methods of model.SampleStream enforced std-lib json encoding for floats and json-iterator encoding for histograms in all cases).
I expect this to fix #1179.