99designs / 99designs/gqlgen-contrib

Error when using gqlapollotracing with subscriptions

Ouverte
#10 2 commentaires 3 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Go
Étoiles
96
Forks
36
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

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.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

L’erreur se produit dans gqlapollotracing/tracer.go à la ligne 25, dans getTracingData, lors du traitement des subscriptions. Examinez l’interaction du tracer avec le contexte d’exécution de GraphQL pendant les événements de subscription. Commencez par reproduire le problème avec une configuration minimale de subscription en utilisant le package gqlgen-contrib. Examinez comment les données de tracing sont stockées et récupérées dans le contexte pour les opérations de subscription par rapport aux queries/mutations.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Domaine
api, backend
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.