influxdata / influxdata/influxdb
Using `group` causes panic in backend
- Dominant language
- Rust
- Stars
- 31.7k
- Forks
- 3.7k
- Avg merge
- 13h 37m
- Merged PRs (30d)
- 8
Description
__Steps to reproduce:__
1. probably have to set up data in a very specific way -> no idea what might have caused it
2. append `group` at the end of a query...
```
from(bucket:"telegraf")
|> range(start: 2022-03-17T12:54:59Z, stop: 2022-03-17T12:55:03Z)
|> filter(fn: (r) => r["_measurement"] == "DataSeries")
|> pivot(rowKey:["_time"],
columnKey: ["_field"],
valueColumn: "_value")
|> group(columns: ["dataSeriesId"])
```
__Expected behavior:__
Tables from the previous result are grouped into one table or an error message describing the problem is shown.
__Actual behavior:__
```
a panic has occurred: /api/v2/query?orgID=[redacted]: interface conversion: array.Interface is *array.Binary, not *array.Int64
```
__Environment info:__
* System info: Linux 5.15.28-1-MANJARO x86_64
* InfluxDB version: 2.0.7 (Docker)
* Other relevant environment details: Docker 20.10.12 running `influxdb:alpine@sha256:7630ad8caae177fe5442cce81068b944c13e2daa7ec289d6d3710b836824cd79`
__Logs:__
Full stacktrace from the logs:
```
goroutine 214366 [running]:
runtime/debug.Stack(0xc00b61a180, 0xc00d68e102, 0x21f87cb)
/usr/local/go/src/runtime/debug/stack.go:24 +0x9f
github.com/influxdata/influxdb/v2/http.baseHandler.panic(0x3d78920, 0x34ae098, 0x3dacc40, 0xc009590660, 0xc004d79400, 0x399f6a0, 0xc00cb60090)
/home/circleci/go/src/github.com/influxdata/influxdb/http/router.go:96 +0x21d
github.com/influxdata/httprouter.(*Router).recv(0xc0005f75f0, 0x3dacc40, 0xc009590660, 0xc004d79400)
/home/circleci/go/pkg/mod/github.com/influxdata/httprouter@v1.3.1-0.20191122104820-ee83e2772f69/router.go:361 +0x7b
panic(0x399f6a0, 0xc00cb60090)
/usr/local/go/src/runtime/panic.go:969 +0x175
github.com/influxdata/flux/arrow.(*TableBuffer).Ints(0xc00a323500, 0xe, 0xc009571b00)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/arrow/table_buffer.go:39 +0x7f
github.com/influxdata/flux/csv.encodeValueFrom(0x0, 0xe, 0xc00e109670, 0xc, 0x2, 0x0, 0x0, 0x3de6fc0, 0xc00a323500, 0xc009578900, ...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/csv/result.go:1233 +0x212
github.com/influxdata/flux/csv.(*ResultEncoder).Encode.func1.1(0x3de6fc0, 0xc00a323500, 0x7f0828cb9560, 0x0)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/csv/result.go:951 +0x285
github.com/influxdata/flux/execute/table.(*BufferedTable).Do(0xc00a3a7130, 0xc00d68e080, 0x0, 0x0)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/execute/table/buffered.go:55 +0x12e
github.com/influxdata/flux/csv.(*ResultEncoder).Encode.func1(0x3dca0c0, 0xc00a3a7130, 0x2, 0x1)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/csv/result.go:946 +0x49d
github.com/influxdata/flux/execute.(*result).Do(0xc002f5fac0, 0xc00c9c01e0, 0x60, 0x3c48000)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/execute/result.go:71 +0x12b
github.com/influxdata/influxdb/v2/query/control.(*errorCollectingTableIterator).Do(0xc00952a200, 0xc00c9c01e0, 0xc00952a200, 0xc00217d000)
/home/circleci/go/src/github.com/influxdata/influxdb/query/control/controller.go:989 +0x43
github.com/influxdata/flux/csv.(*ResultEncoder).Encode(0xc00cb7ec00, 0x3d71e80, 0xc009591300, 0x3d9cc80, 0xc00952a180, 0x2c0042c440, 0x3, 0x4)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/csv/result.go:891 +0x33e
github.com/influxdata/flux.(*DelimitedMultiResultEncoder).Encode(0xc00cb7ec30, 0x3d71e80, 0xc009591140, 0x3dc9f00, 0xc00cb7ebd0, 0xc009632300, 0x0, 0x0)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/result.go:295 +0xe3
github.com/influxdata/influxdb/v2/query.ProxyQueryServiceAsyncBridge.Query(0x3d74c60, 0xc00ac7ed00, 0x3dc22c0, 0xc00cb7e990, 0x3d71e80, 0xc009591140, 0xc00c2b04d0, 0x0, 0x0, 0x0, ...)
/home/circleci/go/src/github.com/influxdata/influxdb/query/bridges.go:145 +0x223
github.com/influxdata/influxdb/v2/http.routingQueryService.Query(0x3da2500, 0xc001f8b200, 0x3da2500, 0xc001f8b200, 0x3dc22c0, 0xc00cb7e990, 0x3d71e80, 0xc009591140, 0xc00c2b04d0, 0x0, ...)
/home/circleci/go/src/github.com/influxdata/influxdb/http/query_handler.go:660 +0x108
github.com/influxdata/influxdb/v2/http.(*FluxHandler).handleQuery(0xc001776b00, 0x3da8580, 0xc0079ca480, 0xc004d79500)
/home/circleci/go/src/github.com/influxdata/influxdb/http/query_handler.go:196 +0xa2e
net/http.HandlerFunc.ServeHTTP(0xc0050f08f0, 0x3da8580, 0xc0079ca480, 0xc004d79500)
/usr/local/go/src/net/http/server.go:2042 +0x46
github.com/NYTimes/gziphandler.GzipHandlerWithOpts.func1.1(0x3dacc40, 0xc009590660, 0xc004d79500)
/home/circleci/go/pkg/mod/github.com/!n!y!times/gziphandler@v1.0.1/gzip.go:289 +0x28f
net/http.HandlerFunc.ServeHTTP(0xc00872f2f0, 0x3dacc40, 0xc009590660, 0xc004d79500)
/usr/local/go/src/net/http/server.go:2042 +0x46
github.com/influxdata/influxdb/v2/http.(*proxyHandler).ServeHTTP(0xc008738ae0, 0x3dacc40, 0xc009590660, 0xc004d79500)
/home/circleci/go/src/github.com/influxdata/influxdb/http/proxy_handler.go:33 +0x9d
github.com/influxdata/httprouter.(*Router).Handler.func1(0x3dacc40, 0xc009590660, 0xc004d79500, 0x0, 0x0, 0x0)
/home/circleci/go/pkg/mod/github.com/influxdata/httprouter@v1.3.1-0.20191122104820-ee83e2772f69/router.go:325 +0x1e7
github.com/influxdata/httprouter.(*Router).ServeHTTP(0xc0005f75f0, 0x3dacc40, 0xc009590660, 0xc004d79400)
/home/circleci/go/pkg/mod/github.com/influxdata/httprouter@v1.3.1-0.20191122104820-ee83e2772f69/router.go:453 +0xa9b
github.com/go-chi/chi.(*Mux).Mount.func1(0x3dacc40, 0xc009590660, 0xc004d79400)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/mux.go:298 +0x122
net/http.HandlerFunc.ServeHTTP(0xc008738c20, 0x3dacc40, 0xc009590660, 0xc004d79400)
/usr/local/go/src/net/http/server.go:2042 +0x46
github.com/go-chi/chi.(*Mux).routeHTTP(0xc008717f80, 0x3dacc40, 0xc009590660, 0xc004d79400)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/mux.go:431 +0x28b
net/http.HandlerFunc.ServeHTTP(0xc000b2bba0, 0x3dacc40, 0xc009590660, 0xc004d79400)
/usr/local/go/src/net/http/server.go:2042 +0x46
github.com/influxdata/influxdb/v2/kit/transport/http.SetCORS.func1(0x3dacc40, 0xc009590660, 0xc004d79400)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/transport/http/middleware.go:35 +0xcd
net/http.HandlerFunc.ServeHTTP(0xc008721b80, 0x3dacc40, 0xc009590660, 0xc004d79400)
/usr/local/go/src/net/http/server.go:2042 +0x46
github.com/go-chi/chi/middleware.StripSlashes.func1(0x3dacc40, 0xc009590660, 0xc004d79400)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/middleware/strip.go:25 +0xee
net/http.HandlerFunc.ServeHTTP(0xc008721ba0, 0x3dacc40, 0xc009590660, 0xc004d79400)
/usr/local/go/src/net/http/server.go:2042 +0x46
github.com/influxdata/influxdb/v2/kit/transport/http.SkipOptions.func1(0x3dacc40, 0xc009590660, 0xc004d79400)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/transport/http/middleware.go:73 +0xba
net/http.HandlerFunc.ServeHTTP(0xc008721bc0, 0x3dacc40, 0xc009590660, 0xc004d79400)
/usr/local/go/src/net/http/server.go:2042 +0x46
github.com/influxdata/influxdb/v2/http.panicMW.func1.1(0x3dacc40, 0xc009590660, 0xc004d79400)
/home/circleci/go/src/github.com/influxdata/influxdb/http/router.go:126 +0x93
net/http.HandlerFunc.ServeHTTP(0xc008721be0, 0x3dacc40, 0xc009590660, 0xc004d79400)
/usr/local/go/src/net/http/server.go:2042 +0x46
github.com/go-chi/chi.(*Mux).ServeHTTP(0xc008717f80, 0x3dacc40, 0xc009590660, 0xc004d79400)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/mux.go:70 +0x50c
github.com/influxdata/influxdb/v2/kit/feature.(*Handler).ServeHTTP(0xc00876cf40, 0x3dacc40, 0xc009590660, 0xc004d78b00)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/feature/middleware.go:43 +0x2be
github.com/influxdata/influxdb/v2/http.(*AuthenticationHandler).ServeHTTP(0xc00b5fd650, 0x3dacc40, 0xc009590660, 0xc004d78a00)
/home/circleci/go/src/github.com/influxdata/influxdb/http/authentication_middleware.go:125 +0x2cd
github.com/influxdata/influxdb/v2/kit/transport/http.SetCORS.func1(0x3dacc40, 0xc009590660, 0xc004d78a00)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/transport/http/middleware.go:35 +0xcd
net/http.HandlerFunc.ServeHTTP(0xc0087497e0, 0x3dacc40, 0xc009590660, 0xc004d78a00)
/usr/local/go/src/net/http/server.go:2042 +0x46
github.com/influxdata/influxdb/v2/kit/transport/http.SkipOptions.func1(0x3dacc40, 0xc009590660, 0xc004d78a00)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/transport/http/middleware.go:73 +0xba
net/http.HandlerFunc.ServeHTTP(0xc008749800, 0x3dacc40, 0xc009590660, 0xc004d78a00)
/usr/local/go/src/net/http/server.go:2042 +0x46
github.com/influxdata/influxdb/v2/http.(*PlatformHandler).ServeHTTP(0xc00874b830, 0x3dacc40, 0xc009590660, 0xc004d78a00)
/home/circleci/go/src/github.com/influxdata/influxdb/http/platform_handler.go:78 +0x154
github.com/go-chi/chi.(*Mux).Mount.func1(0x3dacc40, 0xc009590660, 0xc004d78a00)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/mux.go:298 +0x122
net/http.HandlerFunc.ServeHTTP(0xc0087740c0, 0x3dacc40, 0xc009590660, 0xc004d78a00)
/usr/local/go/src/net/http/server.go:2042 +0x46
github.com/influxdata/influxdb/v2/kit/transport/http.Metrics.func1.1(0x3db51c0, 0xc00bba8000, 0xc004d78a00)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/transport/http/middleware.go:58 +0x191
net/http.HandlerFunc.ServeHTTP(0xc008776340, 0x3db51c0, 0xc00bba8000, 0xc004d78a00)
/usr/local/go/src/net/http/server.go:2042 +0x46
github.com/influxdata/influxdb/v2/kit/transport/http.Trace.func1.1(0x3db51c0, 0xc00bba8000, 0xc004d78a00)
/home/circleci/go/src/github.com/influxdata/influxdb/kit/transport/http/middleware.go:98 +0x38f
net/http.HandlerFunc.ServeHTTP(0xc00874bf50, 0x3db51c0, 0xc00bba8000, 0xc004d78900)
/usr/local/go/src/net/http/server.go:2042 +0x46
github.com/go-chi/chi.(*ChainHandler).ServeHTTP(0xc008776380, 0x3db51c0, 0xc00bba8000, 0xc004d78900)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/chain.go:31 +0x54
github.com/go-chi/chi.(*Mux).routeHTTP(0xc00876e5a0, 0x3db51c0, 0xc00bba8000, 0xc004d78900)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/mux.go:431 +0x28b
net/http.HandlerFunc.ServeHTTP(0xc0050f1740, 0x3db51c0, 0xc00bba8000, 0xc004d78900)
/usr/local/go/src/net/http/server.go:2042 +0x46
github.com/go-chi/chi.(*Mux).ServeHTTP(0xc00876e5a0, 0x3db51c0, 0xc00bba8000, 0xc004d78800)
/home/circleci/go/pkg/mod/github.com/go-chi/chi@v4.1.0+incompatible/mux.go:86 +0x2d1
github.com/influxdata/influxdb/v2/http.(*Handler).ServeHTTP(0xc00876d080, 0x3db51c0, 0xc00bba8000, 0xc004d78800)
/home/circleci/go/src/github.com/influxdata/influxdb/http/handler.go:145 +0x57
net/http.serverHandler.ServeHTTP(0xc000d24700, 0x3db51c0, 0xc00bba8000, 0xc004d78800)
/usr/local/go/src/net/http/server.go:2843 +0xa5
net/http.(*conn).serve(0xc00c0e4280, 0x3dc2200, 0xc00c6fc700)
/usr/local/go/src/net/http/server.go:1925 +0x8ad
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:2969 +0x36c
```
Contributor guide
Research direction
Start by reproducing the provided Flux query against the reported InfluxDB environment, then inspect the stack frames in flux/arrow/table_buffer.go and flux/csv/result.go. Trace how the grouped result reaches CSV encoding and add coverage for this query; done means it returns grouped tables or a descriptive error without panicking.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- backend, databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100