From 56fd8a1e4a910a35399b1062a3d452b0bb1000fe Mon Sep 17 00:00:00 2001 From: AVejahat Date: Fri, 3 May 2024 19:07:49 +0200 Subject: [PATCH 1/2] bugfix: add missing comma in vector/matrix array (#14047) * bugfix: Add missing comma when encoding JSON results in web API --------- Signed-off-by: Amir Vejahat Co-authored-by: Arthur Silva Sens --- web/api/v1/json_codec.go | 10 ++++++++-- web/api/v1/json_codec_test.go | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/web/api/v1/json_codec.go b/web/api/v1/json_codec.go index dfcdf78f8..f07e57696 100644 --- a/web/api/v1/json_codec.go +++ b/web/api/v1/json_codec.go @@ -241,8 +241,11 @@ func labelsIsEmpty(ptr unsafe.Pointer) bool { func unsafeMarshalVectorJSON(ptr unsafe.Pointer, stream *jsoniter.Stream) { v := *((*promql.Vector)(ptr)) stream.WriteArrayStart() - for _, s := range v { + for i, s := range v { marshalSampleJSON(s, stream) + if i != len(v)-1 { + stream.WriteMore() + } } stream.WriteArrayEnd() } @@ -251,8 +254,11 @@ func unsafeMarshalVectorJSON(ptr unsafe.Pointer, stream *jsoniter.Stream) { func unsafeMarshalMatrixJSON(ptr unsafe.Pointer, stream *jsoniter.Stream) { m := *((*promql.Matrix)(ptr)) stream.WriteArrayStart() - for _, s := range m { + for i, s := range m { marshalSeriesJSON(s, stream) + if i != len(m)-1 { + stream.WriteMore() + } } stream.WriteArrayEnd() } diff --git a/web/api/v1/json_codec_test.go b/web/api/v1/json_codec_test.go index b8384baaa..759dabd28 100644 --- a/web/api/v1/json_codec_test.go +++ b/web/api/v1/json_codec_test.go @@ -29,6 +29,40 @@ func TestJsonCodec_Encode(t *testing.T) { response interface{} expected string }{ + { + response: &QueryData{ + ResultType: parser.ValueTypeVector, + Result: promql.Vector{ + promql.Sample{ + Metric: labels.FromStrings("__name__", "foo"), + T: 1000, + F: 1, + }, + promql.Sample{ + Metric: labels.FromStrings("__name__", "bar"), + T: 2000, + F: 2, + }, + }, + }, + expected: `{"status":"success","data":{"resultType":"vector","result":[{"metric":{"__name__":"foo"},"value":[1,"1"]},{"metric":{"__name__":"bar"},"value":[2,"2"]}]}}`, + }, + { + response: &QueryData{ + ResultType: parser.ValueTypeMatrix, + Result: promql.Matrix{ + promql.Series{ + Metric: labels.FromStrings("__name__", "foo"), + Floats: []promql.FPoint{{F: 1, T: 1000}}, + }, + promql.Series{ + Metric: labels.FromStrings("__name__", "bar"), + Floats: []promql.FPoint{{F: 2, T: 2000}}, + }, + }, + }, + expected: `{"status":"success","data":{"resultType":"matrix","result":[{"metric":{"__name__":"foo"},"values":[[1,"1"]]},{"metric":{"__name__":"bar"},"values":[[2,"2"]]}]}}`, + }, { response: &QueryData{ ResultType: parser.ValueTypeMatrix, From 48e6e169435e934abea41db3d37b80cd5066c10f Mon Sep 17 00:00:00 2001 From: Arthur Silva Sens Date: Fri, 3 May 2024 14:31:50 -0300 Subject: [PATCH 2/2] Prepare v2.52.0-rc.1 release (#14050) Signed-off-by: Arthur Silva Sens --- CHANGELOG.md | 4 ++++ VERSION | 2 +- web/ui/module/codemirror-promql/package.json | 4 ++-- web/ui/module/lezer-promql/package.json | 2 +- web/ui/package-lock.json | 14 +++++++------- web/ui/package.json | 2 +- web/ui/react-app/package.json | 4 ++-- 7 files changed, 18 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1d9b9f48..40755e7eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## unreleased +## 2.52.0-rc.1 / 2024-05-03 + +* [BUGFIX] API: Fix missing comma during JSON encoding of API results. #14047 + ## 2.52.0-rc.0 / 2024-04-22 * [CHANGE] TSDB: Fix the predicate checking for blocks which are beyond the retention period to include the ones right at the retention boundary. #9633 diff --git a/VERSION b/VERSION index 7968b5679..867c356bb 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.52.0-rc.0 +2.52.0-rc.1 diff --git a/web/ui/module/codemirror-promql/package.json b/web/ui/module/codemirror-promql/package.json index 269dc2c96..e6bb12c7d 100644 --- a/web/ui/module/codemirror-promql/package.json +++ b/web/ui/module/codemirror-promql/package.json @@ -1,6 +1,6 @@ { "name": "@prometheus-io/codemirror-promql", - "version": "0.52.0-rc.0", + "version": "0.52.0-rc.1", "description": "a CodeMirror mode for the PromQL language", "types": "dist/esm/index.d.ts", "module": "dist/esm/index.js", @@ -29,7 +29,7 @@ }, "homepage": "https://github.com/prometheus/prometheus/blob/main/web/ui/module/codemirror-promql/README.md", "dependencies": { - "@prometheus-io/lezer-promql": "0.52.0-rc.0", + "@prometheus-io/lezer-promql": "0.52.0-rc.1", "lru-cache": "^7.18.3" }, "devDependencies": { diff --git a/web/ui/module/lezer-promql/package.json b/web/ui/module/lezer-promql/package.json index 93a53f555..0118246ab 100644 --- a/web/ui/module/lezer-promql/package.json +++ b/web/ui/module/lezer-promql/package.json @@ -1,6 +1,6 @@ { "name": "@prometheus-io/lezer-promql", - "version": "0.52.0-rc.0", + "version": "0.52.0-rc.1", "description": "lezer-based PromQL grammar", "main": "dist/index.cjs", "type": "module", diff --git a/web/ui/package-lock.json b/web/ui/package-lock.json index 283e923c3..d54712250 100644 --- a/web/ui/package-lock.json +++ b/web/ui/package-lock.json @@ -1,12 +1,12 @@ { "name": "prometheus-io", - "version": "0.52.0-rc.0", + "version": "0.52.0-rc.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "prometheus-io", - "version": "0.52.0-rc.0", + "version": "0.52.0-rc.1", "workspaces": [ "react-app", "module/*" @@ -30,10 +30,10 @@ }, "module/codemirror-promql": { "name": "@prometheus-io/codemirror-promql", - "version": "0.52.0-rc.0", + "version": "0.52.0-rc.1", "license": "Apache-2.0", "dependencies": { - "@prometheus-io/lezer-promql": "0.52.0-rc.0", + "@prometheus-io/lezer-promql": "0.52.0-rc.1", "lru-cache": "^7.18.3" }, "devDependencies": { @@ -69,7 +69,7 @@ }, "module/lezer-promql": { "name": "@prometheus-io/lezer-promql", - "version": "0.52.0-rc.0", + "version": "0.52.0-rc.1", "license": "Apache-2.0", "devDependencies": { "@lezer/generator": "^1.5.1", @@ -19233,7 +19233,7 @@ }, "react-app": { "name": "@prometheus-io/app", - "version": "0.52.0-rc.0", + "version": "0.52.0-rc.1", "dependencies": { "@codemirror/autocomplete": "^6.11.1", "@codemirror/commands": "^6.3.2", @@ -19251,7 +19251,7 @@ "@lezer/lr": "^1.3.14", "@nexucis/fuzzy": "^0.4.1", "@nexucis/kvsearch": "^0.8.1", - "@prometheus-io/codemirror-promql": "0.52.0-rc.0", + "@prometheus-io/codemirror-promql": "0.52.0-rc.1", "bootstrap": "^4.6.2", "css.escape": "^1.5.1", "downshift": "^7.6.2", diff --git a/web/ui/package.json b/web/ui/package.json index 5ce0bc691..6892aa15a 100644 --- a/web/ui/package.json +++ b/web/ui/package.json @@ -28,5 +28,5 @@ "ts-jest": "^29.1.1", "typescript": "^4.9.5" }, - "version": "0.52.0-rc.0" + "version": "0.52.0-rc.1" } diff --git a/web/ui/react-app/package.json b/web/ui/react-app/package.json index 577bfe565..51ebf3351 100644 --- a/web/ui/react-app/package.json +++ b/web/ui/react-app/package.json @@ -1,6 +1,6 @@ { "name": "@prometheus-io/app", - "version": "0.52.0-rc.0", + "version": "0.52.0-rc.1", "private": true, "dependencies": { "@codemirror/autocomplete": "^6.11.1", @@ -19,7 +19,7 @@ "@lezer/lr": "^1.3.14", "@nexucis/fuzzy": "^0.4.1", "@nexucis/kvsearch": "^0.8.1", - "@prometheus-io/codemirror-promql": "0.52.0-rc.0", + "@prometheus-io/codemirror-promql": "0.52.0-rc.1", "bootstrap": "^4.6.2", "css.escape": "^1.5.1", "downshift": "^7.6.2",