99designs / 99designs/gqlgen-contrib
Error when using gqlapollotracing with subscriptions
- Ngôn ngữ chính
- Go
- Star
- 96
- Fork
- 36
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
Hi,
I've been using gqlapollotracing but lately when I started playing with subscriptions I realized the subscriptions only work when I don't use tracing, otherwise I get this error when I subscribe to a subscription and a value is sent through the chan:
```
interface conversion: interface {} is nil, not *gqlapollotracing.tracingData
goroutine 28 [running]:
runtime/debug.Stack(0x1, 0x0, 0x0)
/usr/local/go/src/runtime/debug/stack.go:24 +0xa7
runtime/debug.PrintStack()
/usr/local/go/src/runtime/debug/stack.go:16 +0x22
github.com/99designs/gqlgen/graphql.DefaultRecover(0x193f9a0, 0xc00042dcc0, 0x1783500, 0xc000b320f0, 0x203000, 0x203000)
/Users/Username/golang/src/github.com/99designs/gqlgen/graphql/recovery.go:16 +0xa7
github.com/99designs/gqlgen/handler.(*wsConnection).subscribe.func1.1(0xc0000b70e0, 0x193f9a0, 0xc00042dcc0, 0xc000b1e2d0, 0xc00042d800)
/Users/Username/golang/src/github.com/99designs/gqlgen/handler/websocket.go:223 +0x73
panic(0x1783500, 0xc000b320f0)
/usr/local/go/src/runtime/panic.go:513 +0x1b9
github.com/99designs/gqlgen-contrib/gqlapollotracing.getTracingData(0x193fa60, 0xc000ad9ec0, 0xc000086800)
/Users/Username/golang/src/github.com/99designs/gqlgen-contrib/gqlapollotracing/tracer.go:25 +0x88
github.com/99designs/gqlgen-contrib/gqlapollotracing.(*tracerImpl).StartFieldExecution(0x1f023d0, 0x193fa60, 0xc000ad9ec0, 0xc0000dcb80, 0x0, 0x0, 0x0, 0x0, 0x0)
/Users/Username/golang/src/github.com/99designs/gqlgen-contrib/gqlapollotracing/tracer.go:67 +0x58
MY_APP/graphql/gql.(*executionContext)._Message_content(0xc000b60970, 0x193fa60, 0xc000ad9ec0, 0xc0000dcb80, 0x0, 0x0, 0x0, 0xc0000dcc80, 0x0, 0x0)
/Users/Username/workspace/MY_APP_MONOREPO/golang/src/MY_APP/graphql/gql/generated_gen.go:6471 +0xde
MY_APP/graphql/gql.(*executionContext)._Message(0xc000b60970, 0x193fa60, 0xc000ad9ec0, 0xc0000fd040, 0x2, 0x2, 0xc0000dcc80, 0x1, 0xc000b32090)
/Users/Username/workspace/MY_APP_MONOREPO/golang/src/MY_APP/graphql/gql/generated_gen.go:6380 +0x826
MY_APP/graphql/gql.(*executionContext)._Subscription_messageAdded.func1.1(0xc000b60970, 0x193fa60, 0xc000ad9ec0, 0xc0000dcb00, 0xc0000fd040, 0x2, 0x2, 0xc0000dcc80, 0x17d7c20, 0xc000067c01)
/Users/Username/workspace/MY_APP_MONOREPO/golang/src/MY_APP/graphql/gql/generated_gen.go:11204 +0x74
MY_APP/graphql/gql.(*executionContext)._Subscription_messageAdded.func1(0xc00003ec30, 0x205cd80)
/Users/Username/workspace/MY_APP_MONOREPO/golang/src/MY_APP/graphql/gql/generated_gen.go:11205 +0x17a
MY_APP/graphql/gql.(*executableSchema).Subscription.func1.1(0x193f9a0, 0xc00042dcc0, 0xc00042dcc0, 0x193f9a0, 0xc00042dcc0)
/Users/Username/workspace/MY_APP_MONOREPO/golang/src/MY_APP/graphql/gql/generated_gen.go:2973 +0x47
github.com/99designs/gqlgen/handler.Tracer.func1.1(0x193f9a0, 0xc00042dcc0, 0xc0000fd0c0, 0xc0000fd0e0, 0x0, 0xc000b5e000)
/Users/Username/golang/src/github.com/99designs/gqlgen/handler/graphql.go:168 +0x78
github.com/99designs/gqlgen/handler.RequestMiddleware.func1.1.1(0x193f9a0, 0xc00042dcc0, 0xc00000e168, 0x18, 0x18)
/Users/Username/golang/src/github.com/99designs/gqlgen/handler/graphql.go:145 +0x42
github.com/99designs/gqlgen-contrib/gqlapollotracing.RequestMiddleware.func1(0x193f9a0, 0xc00042dcc0, 0xc0000fd0e0, 0x100e158,0x20, 0x17bd340)
/Users/Username/golang/src/github.com/99designs/gqlgen-contrib/gqlapollotracing/middleware.go:11 +0x3e
github.com/99designs/gqlgen/handler.RequestMiddleware.func1.1(0x193f9a0, 0xc00042dcc0, 0xc0000fd0c0, 0xc000ad9e30, 0xc000b606b0, 0x1)
/Users/Username/golang/src/github.com/99designs/gqlgen/handler/graphql.go:144 +0x8f
MY_APP/graphql/gql.(*executableSchema).Subscription.func1(0xc00047c000)
/Users/Username/workspace/MY_APP_MONOREPO/golang/src/MY_APP/graphql/gql/generated_gen.go:2971 +0xb5
github.com/99designs/gqlgen/handler.(*wsConnection).subscribe.func1(0xc0000b70e0, 0x193f9a0, 0xc00042dcc0, 0xc000b1e2d0, 0xc00042d800, 0xc0000de2a0, 0xc000b60960)
/Users/Username/golang/src/github.com/99designs/gqlgen/handler/websocket.go:228 +0xba
created by github.com/99designs/gqlgen/handler.(*wsConnection).subscribe
/Users/Username/golang/src/github.com/99designs/gqlgen/handler/websocket.go:220 +0x52c
```
Here's where I use tracing :
```
gqlHandler := handler.GraphQL(
// ...
handler.RequestMiddleware(gqlapollotracing.RequestMiddleware()),
handler.Tracer(gqlapollotracing.NewTracer()),
// ...
)
```
So for the moment I'm just gonna stop using it. I'll try digging into it If I have time.
Thanks for your work.
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Hướng nghiên cứu
Lỗi xảy ra trong gqlapollotracing/tracer.go tại dòng 25, trong getTracingData khi xử lý subscriptions. Hãy kiểm tra sự tương tác của tracer với execution context của GraphQL trong các sự kiện subscription. Bắt đầu bằng cách tái hiện vấn đề với một thiết lập subscription tối thiểu sử dụng package gqlgen-contrib. Xem dữ liệu tracing được lưu trữ và truy xuất trong context như thế nào đối với các thao tác subscription so với queries/mutations.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Lĩnh vực
- api, backend
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức phù hợp với người mới
- 45/100