influxdata / influxdata/influxdb
Using table stream in contains function lead to panic
Nobody has claimed this yet.
- 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.
```flux
data1 = from(bucket: "mybucket")
|> keep(columns: ["_value", "sql", "_time", "hash"])
hashs = data1
|> keep(columns: ["hash"])
data2 = from(bucket: "mybucket")
|> filter(fn: (r) => contains(value: r["hash"], set: hashs))
```
__Expected behavior:__
- At the time I did try this syntax I did not know that the contains function cannot handle table streams
- I would expect a proper error message, that the input type is not expected, similar to other mismatches of types like the keep function if a pass for columns a string an not an array
- type error @11:6-11:27: expected [string] but found string (argument columns)
__Actual behavior:__
- The UI just shows Internal Server Error
__Environment info:__
* System info: Run `uname -srm` and copy the output here
- Darwin 20.5.0 x86_64
* InfluxDB version: Run `influxd version` and copy the output here
- InfluxDB 2.0.7 (git: 2a45f0c037) build_date: 2021-06-04T19:17:40Z
__Logs:__
```
2021-07-06T06:33:18.817230Z info panic during program start {"log_id": "0V9MRFWG000", "service": "storage-reads", "error": "panic: length of stream not supported"}
goroutine 499 [running]:
runtime/debug.Stack(0xc002d8c600, 0x0, 0x10585805e)
/usr/local/go/src/runtime/debug/stack.go:24 +0x9f
github.com/influxdata/influxdb/v2/query/control.(*Controller).executeQuery.func1(0xc00b72a180, 0xc004890f00)
/home/circleci/go/src/github.com/influxdata/influxdb/query/control/controller.go:457 +0x153
panic(0x10539bf60, 0x106b07c40)
/usr/local/go/src/runtime/panic.go:969 +0x175
github.com/influxdata/flux.(*TableObject).Len(0xc008fa5c80, 0xc00bf78180)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/compile.go:192 +0x39
github.com/influxdata/flux/interpreter.resolveValue(0x106bc45c0, 0xc008fa5c80, 0x5, 0x106bc45c0, 0xc008fa5c80, 0xc00f3e8601, 0x106b9a780)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:1217 +0x677
github.com/influxdata/flux/interpreter.ResolveIdsInFunction(0x106bbecc0, 0xc008c46c30, 0xc009949900, 0x106b9a780, 0xc00bf22850, 0xc00f3e8638, 0x106b9a940, 0xc00bf78100, 0x0, 0x0)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:1027 +0x225
github.com/influxdata/flux/interpreter.ResolveIdsInFunction(0x106bbecc0, 0xc008c46c30, 0xc009949900, 0x106b9aac0, 0xc00aea6540, 0xc00f3e8638, 0x106b9aac0, 0xc00aea64e0, 0x0, 0x0)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:1156 +0x12de
github.com/influxdata/flux/interpreter.ResolveIdsInFunction(0x106bbecc0, 0xc008c46c30, 0xc009949900, 0x106b9a9c0, 0xc00bf78080, 0xc00f3e8638, 0x106b9a380, 0xc004ba9710, 0x0, 0x0)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:1131 +0x1b2f
github.com/influxdata/flux/interpreter.ResolveIdsInFunction(0x106bbecc0, 0xc008c46c30, 0xc009949900, 0x106b9a480, 0xc004ba97a0, 0xc00f3e8638, 0x106b9a8c0, 0xc00bf22540, 0x0, 0x0)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:1068 +0x8b1
github.com/influxdata/flux/interpreter.ResolveIdsInFunction(0x106bbecc0, 0xc008c46c30, 0xc009949900, 0x106b9a8c0, 0xc00bf224d0, 0xc00f3e8638, 0x11a787aa8, 0x105618a00, 0xc000600000, 0x10e7777d0)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:1105 +0x1cf7
github.com/influxdata/flux/interpreter.ResolveIdsInFunction(0x106bbecc0, 0xc008c46c30, 0xc009949900, 0x106b9ab40, 0xc00f000f50, 0xc00f3e8638, 0x1037de539, 0xc004a0b860, 0x106b9aac0, 0xc00aea6540)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:1055 +0x1e4e
github.com/influxdata/flux/interpreter.ResolveIdsInFunction(0x106bbecc0, 0xc008c46c30, 0xc009949900, 0x106b9a3c0, 0xc00aea6480, 0xc00f3e8638, 0xa0, 0x10539bf60, 0x1055b0a20, 0xc00bf22400)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:1036 +0x198a
github.com/influxdata/flux/interpreter.ResolveIdsInFunction(0x106bbecc0, 0xc008c46c30, 0xc009949900, 0x106b9a680, 0xc008fa5e80, 0xc00f3e8638, 0xc00f000e60, 0x10581b2f9, 0x7, 0x106bc4de0)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:1075 +0xe71
github.com/influxdata/flux/interpreter.function.Resolve(0xc009949900, 0x106bbecc0, 0xc008c46c30, 0xc00bb88d80, 0x1054afb60, 0x1057cb120, 0x106bc6001, 0x11562f228)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:970 +0xcd
github.com/influxdata/flux/interpreter.ResolveFunction(0x106bc6020, 0xc00bf66da0, 0x7, 0x0, 0x0, 0x0, 0x0)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:928 +0x7a
github.com/influxdata/flux/stdlib/universe.createFilterOpSpec(0x106bc8d20, 0xc00bf66d40, 0xc00bf66d80, 0xc00bb89900, 0x10574cb03, 0x106b6fc40, 0xc00bf66d60)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/stdlib/universe/filter.go:67 +0x157
github.com/influxdata/flux.(*function).call(0xc0002c3a00, 0x106b99740, 0xc008c47aa0, 0x106bc8d20, 0xc00bf66d40, 0x20, 0x10554fd00, 0x1, 0xc00bf66d40)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/compile.go:312 +0x142
github.com/influxdata/flux/interpreter.DoFunctionCallContext(0xc00f3e89c8, 0x106b99740, 0xc008c47aa0, 0x106bc87e0, 0xc00f000e60, 0x106b00330, 0x10531d220, 0xc00aea63c0, 0x106b99740)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:645 +0xfc
github.com/influxdata/flux.(*function).Call(0xc0002c3a00, 0x106b99740, 0xc008c47aa0, 0x106bc87e0, 0xc00f000e60, 0x0, 0xf, 0x6, 0xf)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/compile.go:301 +0x7b
github.com/influxdata/flux/interpreter.(*Interpreter).doCall(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0xc004ba8bd0, 0x106bbecc0, 0xc008c46c30, 0x11562e770, 0xc00bb89700, 0x0, 0x0)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:686 +0x5b7
github.com/influxdata/flux/interpreter.(*Interpreter).doExpression(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0x106bab5c0, 0xc004ba8bd0, 0x106bbecc0, 0xc008c46c30, 0x11562e770, 0xc00bb89700, 0x0, ...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:336 +0x19fb
github.com/influxdata/flux/interpreter.(*Interpreter).doArguments.func1(0xc00bf66380, 0xc00bf66380, 0xc00f3e9050)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:745 +0x45f
github.com/influxdata/flux/values.BuildObjectWithSize(0x0, 0xc00f3e9188, 0x6, 0xc0044b8e00, 0x6, 0xc0005f9890)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/values/object.go:113 +0xcf
github.com/influxdata/flux/values.BuildObject(...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/values/object.go:100
github.com/influxdata/flux/interpreter.(*Interpreter).doArguments(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0xc009949880, 0x106bbecc0, 0xc008c46c30, 0xc008c46c05, 0x106b6fe00, 0xc00037d360, 0xc, ...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:732 +0x185
github.com/influxdata/flux/interpreter.(*Interpreter).doCall(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0xc004ba8b40, 0x106bbecc0, 0xc008c46c30, 0x0, 0x10381e725, 0x10381da54, 0x10381d825)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:664 +0x385
github.com/influxdata/flux/interpreter.(*Interpreter).doExpression(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0x106bab5c0, 0xc004ba8b40, 0x106bbecc0, 0xc008c46c30, 0x106bc4e80, 0xc008c47860, 0x0, ...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:336 +0x19fb
github.com/influxdata/flux/interpreter.(*Interpreter).doArguments.func1(0xc00bf66300, 0xc00bf66300, 0xc00f3e9858)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:745 +0x45f
github.com/influxdata/flux/values.BuildObjectWithSize(0x0, 0xc00f3e9990, 0x6, 0xc0044b8df6, 0x6, 0xc0005f9888)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/values/object.go:113 +0xcf
github.com/influxdata/flux/values.BuildObject(...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/values/object.go:100
github.com/influxdata/flux/interpreter.(*Interpreter).doArguments(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0xc009949780, 0x106bbecc0, 0xc008c46c30, 0xc008c46c05, 0x106b6fe00, 0xc00037d1c0, 0xc, ...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:732 +0x185
github.com/influxdata/flux/interpreter.(*Interpreter).doCall(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0xc004ba8990, 0x106bbecc0, 0xc008c46c30, 0xc00f3e9cf0, 0x103371dea, 0x10558d9c0, 0x1056187c0)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:664 +0x385
github.com/influxdata/flux/interpreter.(*Interpreter).doExpression(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0x106bab5c0, 0xc004ba8990, 0x106bbecc0, 0xc008c46c30, 0x18, 0x105595f80, 0xc00a292c70, ...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:336 +0x19fb
github.com/influxdata/flux/interpreter.(*Interpreter).doArguments.func1(0xc00bf66280, 0xc00bf66280, 0xc00f3ea060)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:745 +0x45f
github.com/influxdata/flux/values.BuildObjectWithSize(0x0, 0xc00f3ea198, 0x6, 0xc0044b8df0, 0x6, 0xc0005f9880)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/values/object.go:113 +0xcf
github.com/influxdata/flux/values.BuildObject(...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/values/object.go:100
github.com/influxdata/flux/interpreter.(*Interpreter).doArguments(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0xc009949700, 0x106bbecc0, 0xc008c46c30, 0xc008c46c05, 0x106b6fe00, 0xc00037cfe0, 0xc, ...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:732 +0x185
github.com/influxdata/flux/interpreter.(*Interpreter).doCall(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0xc004d89ef0, 0x106bbecc0, 0xc008c46c30, 0x1038214db, 0xc00bb88d80, 0x106b99740, 0xc008c47320)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:664 +0x385
github.com/influxdata/flux/interpreter.(*Interpreter).doExpression(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0x106bab5c0, 0xc004d89ef0, 0x106bbecc0, 0xc008c46c30, 0x106bc4b60, 0xc00bf66200, 0x0, ...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:336 +0x19fb
github.com/influxdata/flux/interpreter.(*Interpreter).doArguments.func1(0xc00bf661e0, 0xc00bf661e0, 0xc00f3ea868)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:745 +0x45f
github.com/influxdata/flux/values.BuildObjectWithSize(0x0, 0xc00f3ea9a0, 0x6, 0xc0044b8db6, 0x6, 0xc0005f9878)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/values/object.go:113 +0xcf
github.com/influxdata/flux/values.BuildObject(...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/values/object.go:100
github.com/influxdata/flux/interpreter.(*Interpreter).doArguments(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0xc009949680, 0x106bbecc0, 0xc008c46c30, 0xc008c46c05, 0x106b6fe00, 0xc00037d180, 0xc, ...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:732 +0x185
github.com/influxdata/flux/interpreter.(*Interpreter).doCall(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0xc004d89dd0, 0x106bbecc0, 0xc008c46c30, 0x11562e688, 0xc00f000be0, 0x0, 0x0)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:664 +0x385
github.com/influxdata/flux/interpreter.(*Interpreter).doExpression(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0x106bab5c0, 0xc004d89dd0, 0x106bbecc0, 0xc008c46c30, 0x11562e688, 0xc00f000be0, 0x0, ...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:336 +0x19fb
github.com/influxdata/flux/interpreter.(*Interpreter).doArguments.func1(0xc00bf660c0, 0xc00bf660c0, 0xc00f3eb070)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:745 +0x45f
github.com/influxdata/flux/values.BuildObjectWithSize(0x0, 0xc00f3eb1a8, 0x6, 0xc0044b8d86, 0x6, 0xc0005f9868)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/values/object.go:113 +0xcf
github.com/influxdata/flux/values.BuildObject(...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/values/object.go:100
github.com/influxdata/flux/interpreter.(*Interpreter).doArguments(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0xc009949400, 0x106bbecc0, 0xc008c46c30, 0xc008c46c05, 0x106b6fe00, 0xc00037d300, 0xc, ...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:732 +0x185
github.com/influxdata/flux/interpreter.(*Interpreter).doCall(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0xc004d89d40, 0x106bbecc0, 0xc008c46c30, 0x106bc45c0, 0xc008fa5c80, 0x0, 0x0)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:664 +0x385
github.com/influxdata/flux/interpreter.(*Interpreter).doExpression(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0x106bab5c0, 0xc004d89d40, 0x106bbecc0, 0xc008c46c30, 0x105784a00, 0xc008c47800, 0x10d091d60, ...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:336 +0x19fb
github.com/influxdata/flux/interpreter.(*Interpreter).doVariableAssignment(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0xc004a0b2c0, 0x106bbecc0, 0xc008c46c30, 0x106bc45c0, 0xc008fa5c80, 0x0, 0x0)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:287 +0x7d
github.com/influxdata/flux/interpreter.(*Interpreter).doStatement(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0x106ba1900, 0xc004a0b2c0, 0x106bbecc0, 0xc008c46c30, 0x106bc45c0, 0xc008fa5c80, 0x0, ...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:167 +0x645
github.com/influxdata/flux/interpreter.(*Interpreter).doFile(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0xc009948a00, 0x106bbecc0, 0xc008c46c30, 0x106b48c00, 0xc006144b20, 0x0, 0x0)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:111 +0x1d4
github.com/influxdata/flux/interpreter.(*Interpreter).doPackage(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0xc00b6ec1c0, 0x106bbecc0, 0xc008c46c30, 0x106b48c00, 0xc006144b20, 0xc001354c48, 0x38)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:94 +0xc5
github.com/influxdata/flux/interpreter.(*Interpreter).doRoot(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0x106b9aa40, 0xc00b6ec1c0, 0x106bbecc0, 0xc008c46c30, 0x106b48c00, 0xc006144b20, 0x10581dd01, ...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:84 +0x255
github.com/influxdata/flux/interpreter.(*Interpreter).Eval(0xc00bb88d80, 0x106b99740, 0xc003a5adb0, 0x106b9aa40, 0xc00b6ec1c0, 0x106bbecc0, 0xc008c46c30, 0x106b48c00, 0xc006144b20, 0x105609d80, ...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/interpreter/interpreter.go:75 +0x99
github.com/influxdata/flux/runtime.(*runtime).Eval(0x10d08ec80, 0x106b99740, 0xc003a5adb0, 0x106b826c0, 0xc0005f8678, 0x106b70080, 0x10d0c6848, 0xc0061449d0, 0x2, 0x2, ...)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/runtime/runtime.go:140 +0x226
github.com/influxdata/flux/lang.(*AstProgram).getSpec(0xc00ff0a280, 0x106b99740, 0xc003a5ad80, 0xc00ff0a370, 0x0, 0x0, 0x0, 0x0, 0x0)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/lang/compiler.go:447 +0x27f
github.com/influxdata/flux/lang.(*AstProgram).Start(0xc00ff0a280, 0x106b99740, 0xc003a5acc0, 0xc00ff0a370, 0x0, 0x0, 0x0, 0x0)
/home/circleci/go/pkg/mod/github.com/influxdata/flux@v0.117.0/lang/compiler.go:484 +0x1c7
github.com/influxdata/influxdb/v2/query/control.(*Controller).executeQuery(0xc004890f00, 0xc00b72a180)
/home/circleci/go/src/github.com/influxdata/influxdb/query/control/controller.go:480 +0x12f
github.com/influxdata/influxdb/v2/query/control.(*Controller).processQueryQueue(0xc004890f00)
/home/circleci/go/src/github.com/influxdata/influxdb/query/control/controller.go:438 +0x4c
github.com/influxdata/influxdb/v2/query/control.New.func1(0xc004890f00)
/home/circleci/go/src/github.com/influxdata/influxdb/query/control/controller.go:220 +0x57
created by github.com/influxdata/influxdb/v2/query/control.New
/home/circleci/go/src/github.com/influxdata/influxdb/query/control/controller.go:218 +0x7e5
```
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the Flux query using a table stream as contains(value: ..., set: ...), then trace the panic from flux/compile.go TableObject.Len through interpreter/interpreter.go and stdlib/universe/filter.go. Compare the behavior with the type errors described for keep; done means the query reports a proper input-type error instead of returning an internal server error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100