diff --git a/CHANGELOG.md b/CHANGELOG.md index f61b1c0238..da779e619f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 2.40.5 / 2022-12-01 + +* [BUGFIX] TSDB: Fix queries involving native histograms due to improper reset of iterators. #11643 + ## 2.40.4 / 2022-11-29 * [SECURITY] Fix basic authentication bypass vulnerability (CVE-2022-46146). GHSA-4v48-4q5m-8vx4 diff --git a/VERSION b/VERSION index 2d6c3fe67c..0644c8fe66 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.40.4 +2.40.5 diff --git a/tsdb/chunkenc/histogram.go b/tsdb/chunkenc/histogram.go index 6e326888af..e57b96db90 100644 --- a/tsdb/chunkenc/histogram.go +++ b/tsdb/chunkenc/histogram.go @@ -624,9 +624,9 @@ func (it *histogramIterator) Err() error { } func (it *histogramIterator) Reset(b []byte) { - // The first 2 bytes contain chunk headers. + // The first 3 bytes contain chunk headers. // We skip that for actual samples. - it.br = newBReader(b[2:]) + it.br = newBReader(b[3:]) it.numTotal = binary.BigEndian.Uint16(b) it.numRead = 0 diff --git a/tsdb/chunkenc/histogram_test.go b/tsdb/chunkenc/histogram_test.go index 1a187667c3..09c08ae3c3 100644 --- a/tsdb/chunkenc/histogram_test.go +++ b/tsdb/chunkenc/histogram_test.go @@ -84,14 +84,14 @@ func TestHistogramChunkSameBuckets(t *testing.T) { require.Equal(t, exp, act) // 2. Expand second iterator while reusing first one. - // it2 := c.Iterator(it1) - // var res2 []pair - // for it2.Next() { - // ts, v := it2.At() - // res2 = append(res2, pair{t: ts, v: v}) - // } - // require.NoError(t, it2.Err()) - // require.Equal(t, exp, res2) + it2 := c.Iterator(it) + var res2 []res + for it2.Next() == ValHistogram { + ts, h := it2.AtHistogram() + res2 = append(res2, res{t: ts, h: h}) + } + require.NoError(t, it2.Err()) + require.Equal(t, exp, res2) // 3. Test iterator Seek. // mid := len(exp) / 2 diff --git a/web/ui/module/codemirror-promql/package.json b/web/ui/module/codemirror-promql/package.json index 9ca1569349..f5b539a368 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.40.4", + "version": "0.40.5", "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.40.4", + "@prometheus-io/lezer-promql": "^0.40.5", "lru-cache": "^6.0.0" }, "devDependencies": { diff --git a/web/ui/module/lezer-promql/package.json b/web/ui/module/lezer-promql/package.json index b7b8724b10..6af7b5b555 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.40.4", + "version": "0.40.5", "description": "lezer-based PromQL grammar", "main": "index.cjs", "type": "module", diff --git a/web/ui/package-lock.json b/web/ui/package-lock.json index 78f57e532c..56fa6c572a 100644 --- a/web/ui/package-lock.json +++ b/web/ui/package-lock.json @@ -28,10 +28,10 @@ }, "module/codemirror-promql": { "name": "@prometheus-io/codemirror-promql", - "version": "0.40.4", + "version": "0.40.5", "license": "Apache-2.0", "dependencies": { - "@prometheus-io/lezer-promql": "^0.40.4", + "@prometheus-io/lezer-promql": "^0.40.5", "lru-cache": "^6.0.0" }, "devDependencies": { @@ -61,7 +61,7 @@ }, "module/lezer-promql": { "name": "@prometheus-io/lezer-promql", - "version": "0.40.4", + "version": "0.40.5", "license": "Apache-2.0", "devDependencies": { "@lezer/generator": "^1.1.1", @@ -20674,7 +20674,7 @@ }, "react-app": { "name": "@prometheus-io/app", - "version": "0.40.4", + "version": "0.40.5", "dependencies": { "@codemirror/autocomplete": "^6.2.0", "@codemirror/commands": "^6.1.2", @@ -20692,7 +20692,7 @@ "@lezer/lr": "^1.2.3", "@nexucis/fuzzy": "^0.4.1", "@nexucis/kvsearch": "^0.8.1", - "@prometheus-io/codemirror-promql": "^0.40.4", + "@prometheus-io/codemirror-promql": "^0.40.5", "bootstrap": "^4.6.2", "css.escape": "^1.5.1", "downshift": "^7.0.1", @@ -23321,7 +23321,7 @@ "@lezer/lr": "^1.2.3", "@nexucis/fuzzy": "^0.4.1", "@nexucis/kvsearch": "^0.8.1", - "@prometheus-io/codemirror-promql": "^0.40.4", + "@prometheus-io/codemirror-promql": "^0.40.5", "@testing-library/react-hooks": "^7.0.2", "@types/enzyme": "^3.10.12", "@types/flot": "0.0.32", @@ -23372,7 +23372,7 @@ "@lezer/common": "^1.0.1", "@lezer/highlight": "^1.1.2", "@lezer/lr": "^1.2.3", - "@prometheus-io/lezer-promql": "^0.40.4", + "@prometheus-io/lezer-promql": "^0.40.5", "@types/lru-cache": "^5.1.1", "isomorphic-fetch": "^3.0.0", "lru-cache": "^6.0.0", diff --git a/web/ui/react-app/package.json b/web/ui/react-app/package.json index 6874a393d2..03cd317d7b 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.40.4", + "version": "0.40.5", "private": true, "dependencies": { "@codemirror/autocomplete": "^6.2.0", @@ -19,7 +19,7 @@ "@lezer/common": "^1.0.1", "@nexucis/fuzzy": "^0.4.1", "@nexucis/kvsearch": "^0.8.1", - "@prometheus-io/codemirror-promql": "^0.40.4", + "@prometheus-io/codemirror-promql": "^0.40.5", "bootstrap": "^4.6.2", "css.escape": "^1.5.1", "downshift": "^7.0.1",