99designs / 99designs/gqlgen-contrib

Error when using gqlapollotracing with subscriptions

Abierto
#10 2 comentarios 3 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Go
Estrellas
96
Forks
36
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

El error se produce en gqlapollotracing/tracer.go, en la línea 25, en getTracingData al gestionar subscriptions. Examina la interacción del tracer con el contexto de ejecución de GraphQL durante los eventos de subscription. Empieza reproduciendo el problema con una configuración mínima de subscription utilizando el paquete gqlgen-contrib. Comprueba cómo se almacenan y recuperan los datos de tracing en el contexto para las operaciones de subscription en comparación con queries/mutations.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Área
api, backend
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.