influxdata / influxdata/influxdb
"panic: length of stream not supported" with json.encode
- Dominant language
- Rust
- Stars
- 31.7k
- Forks
- 3.7k
- Avg merge
- 13h 37m
- Merged PRs (30d)
- 8
Description
__Steps to reproduce:__
List the minimal actions needed to reproduce the behavior.
Run flux script like such:
```
import "http"
import "json"
data = from(bucket: "canopy")
|> range(start: -10s)
|> filter(fn: (r) => r["_measurement"] == "amqp_consumer")
|> filter(fn: (r) => r["host"] == "jetson1")
|> filter(fn: (r) => r["_field"] == "class_id")
|> map(fn: (r) => ({r with _value: 1.0 - r._value}))
|> mean()
http.post(url: "http://webapp:5000/allenbradley", headers: {}, data: json.encode(v: data[0]))
```
__Expected behavior:__
Successfully send the HTTP post request
__Actual behavior:__
Receive " An internal error has occurred" message in query window and the following message in influxdb logs:
```
ts=2021-03-11T19:59:42.883623Z lvl=info msg="panic during program start" log_id=0SpijqP0000 service=storage-reads error="panic: length of stream not supported" stacktrace="goroutine 135 [running]:\nruntime/debug.Stack(0xc0006e66c0, 0x0, 0x27794f1)\n\t/usr/local/go/src/runtime/debug/stack.go:24 +0x9f\ngithub.com/influxdata/influxdb/v2/query/control.(*Controller).executeQuery.func1(0xc00388cd80, 0xc0004f07e0)\n\t/go/src/github.com/influxdata/influxdb/query/control/controller.go:424 +0x153\npanic(0x22c6e20, 0x39b6980)\n\t/usr/local/go/src/runtime/panic.go:969 +0x1b9\ngithub.com/influxdata/flux.(*TableObject).Len(0xc000ef8300, 0x3a76e60)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/compile.go:192 +0x39\ngithub.com/influxdata/flux/interpreter.(*Interpreter).doExpression(0xc004732e80, 0x3a46ba0, 0xc000b2a840, 0x3a59980, 0xc000e32980, 0x3a6bca0, 0xc0039d4c00, 0x18, 0x24beb00, 0xc0039d4c00, ...)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/interpreter/interpreter.go:361 +0x22da\ngithub.com/influxdata/flux/interpreter.(*Interpreter).doArguments.func1(0xc004056a80, 0xc004056a80, 0x3a47be0)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/interpreter/interpreter.go:734 +0x205\ngithub.com/influxdata/flux/values.BuildObjectWithSize(0x0, 0xc00192ca10, 0x1, 0x1, 0x0, 0x0)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/values/object.go:114 +0xcf\ngithub.com/influxdata/flux/values.BuildObject(...)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/values/object.go:101\ngithub.com/influxdata/flux/interpreter.(*Interpreter).doArguments(0xc004732e80, 0x3a46ba0, 0xc000b2a840, 0xc000e32a00, 0x3a6bca0, 0xc0039d4c00, 0xc0039d4c05, 0x3a1d420, 0xc0004ebba0, 0x0, ...)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/interpreter/interpreter.go:729 +0x185\ngithub.com/influxdata/flux/interpreter.(*Interpreter).doCall(0xc004732e80, 0x3a46ba0, 0xc000b2a840, 0xc000120400, 0x3a6bca0, 0xc0039d4c00, 0x7f1035382b10, 0xc00177d680, 0x0, 0x0)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/interpreter/interpreter.go:661 +0x3a6\ngithub.com/influxdata/flux/interpreter.(*Interpreter).doExpression(0xc004732e80, 0x3a46ba0, 0xc000b2a840, 0x3a59680, 0xc000120400, 0x3a6bca0, 0xc0039d4c00, 0x7f1035382b10, 0xc00177d680, 0x0, ...)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/interpreter/interpreter.go:336 +0x1b7b\ngithub.com/influxdata/flux/interpreter.(*Interpreter).doArguments.func1(0xc004056220, 0xc004056220, 0x2)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/interpreter/interpreter.go:734 +0x205\ngithub.com/influxdata/flux/values.BuildObjectWithSize(0x0, 0xc00192d210, 0x3, 0x3, 0x0, 0x0)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/values/object.go:114 +0xcf\ngithub.com/influxdata/flux/values.BuildObject(...)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/values/object.go:101\ngithub.com/influxdata/flux/interpreter.(*Interpreter).doArguments(0xc004732e80, 0x3a46ba0, 0xc000b2a840, 0xc000e32a80, 0x3a6bca0, 0xc0039d4c00, 0xc0039d4c05, 0x3a1d420, 0xc0004eb780, 0x0, ...)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/interpreter/interpreter.go:729 +0x185\ngithub.com/influxdata/flux/interpreter.(*Interpreter).doCall(0xc004732e80, 0x3a46ba0, 0xc000b2a840, 0xc001642680, 0x3a6bca0, 0xc0039d4c00, 0xc000b49a10, 0x6, 0x0, 0x1)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/interpreter/interpreter.go:661 +0x3a6\ngithub.com/influxdata/flux/interpreter.(*Interpreter).doExpression(0xc004732e80, 0x3a46ba0, 0xc000b2a840, 0x3a59680, 0xc001642680, 0x3a6bca0, 0xc0039d4c00, 0xc000ef8300, 0x0, 0x0, ...)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/interpreter/interpreter.go:336 +0x1b7b\ngithub.com/influxdata/flux/interpreter.(*Interpreter).doStatement(0xc004732e80, 0x3a46ba0, 0xc000b2a840, 0x3a4eae0, 0xc000fa7950, 0x3a6bca0, 0xc0039d4c00, 0x3a71700, 0xc000ef8300, 0x0, ...)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/interpreter/interpreter.go:171 +0x448\ngithub.com/influxdata/flux/interpreter.(*Interpreter).doFile(0xc004732e80, 0x3a46ba0, 0xc000b2a840, 0xc006ddf200, 0x3a6bca0, 0xc0039d4c00, 0x39f6860, 0xc000b49400, 0x0, 0x0)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/interpreter/interpreter.go:111 +0x1d4\ngithub.com/influxdata/flux/interpreter.(*Interpreter).doPackage(0xc004732e80, 0x3a46ba0, 0xc000b2a840, 0xc0018d8770, 0x3a6bca0, 0xc0039d4c00, 0x39f6860, 0xc000b49400, 0xc003372158, 0x7f103ec38630)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/interpreter/interpreter.go:94 +0xc5\ngithub.com/influxdata/flux/interpreter.(*Interpreter).doRoot(0xc004732e80, 0x3a46ba0, 0xc000b2a840, 0x3a47ea0, 0xc0018d8770, 0x3a6bca0, 0xc0039d4c00, 0x39f6860, 0xc000b49400, 0x2741f01, ...)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/interpreter/interpreter.go:84 +0x255\ngithub.com/influxdata/flux/interpreter.(*Interpreter).Eval(0xc004732e80, 0x3a46ba0, 0xc000b2a840, 0x3a47ea0, 0xc0018d8770, 0x3a6bca0, 0xc0039d4c00, 0x39f6860, 0xc000b49400, 0x25341e0, ...)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/interpreter/interpreter.go:75 +0x99\ngithub.com/influxdata/flux/runtime.(*runtime).Eval(0x6093820, 0x3a46ba0, 0xc000b2a840, 0x3a1d6e0, 0xc004fd4050, 0x3a1d6a0, 0x60cbf08, 0xc000b49340, 0x2, 0x2, ...)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/runtime/runtime.go:140 +0x226\ngithub.com/influxdata/flux/lang.(*AstProgram).getSpec(0xc000fa6410, 0x3a46ba0, 0xc000b2a7b0, 0xc000fa6500, 0x0, 0x0, 0x0, 0x0, 0x0)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/lang/compiler.go:440 +0x27f\ngithub.com/influxdata/flux/lang.(*AstProgram).Start(0xc000fa6410, 0x3a46ba0, 0xc000b2a6f0, 0xc000fa6500, 0x0, 0x0, 0x0, 0x0)\n\t/go/pkg/mod/github.com/influxdata/flux@v0.99.0/lang/compiler.go:477 +0x1c7\ngithub.com/influxdata/influxdb/v2/query/control.(*Controller).executeQuery(0xc0004f07e0, 0xc00388cd80)\n\t/go/src/github.com/influxdata/influxdb/query/control/controller.go:447 +0x12f\ngithub.com/influxdata/influxdb/v2/query/control.(*Controller).processQueryQueue(0xc0004f07e0)\n\t/go/src/github.com/influxdata/influxdb/query/control/controller.go:405 +0x4c\ngithub.com/influxdata/influxdb/v2/query/control.New.func1(0xc0004f07e0)\n\t/go/src/github.com/influxdata/influxdb/query/control/controller.go:208 +0x57\ncreated by github.com/influxdata/influxdb/v2/query/control.New\n\t/go/src/github.com/influxdata/influxdb/query/control/controller.go:206 +0x7ac\n"
```
__Environment info:__
Linux docker container, Influx 2.0
__Config:__
Copy any non-default config values here or attach the full config as a gist or file.
Contributor guide
Research direction
The reproduction uses Flux's json.encode and http.post; the stack trace points to flux compile.go:192 and influxdb query/control/controller.go:424 and 447. Start by reproducing the script in the Linux Docker InfluxDB 2.0 environment, then trace the panic path. Done means the query no longer returns an internal error or panics and the HTTP POST succeeds.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, go, linux
- Domain
- backend, databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100