[Bug] Network errors are discarded.
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Comienza con lib/graphql/client/http.rb alrededor del retorno de estilo Either y con lib/graphql/schema/loader.rb, donde load_schema consume dump_schema. Sigue la ruta de error a través de load_schema y de los otros llamadores de execute mencionados, incluido query(), y verifica después que los errores HTTP o GraphQL sigan estando disponibles en lugar de convertirse en un KeyError.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
If there's an HTTP error, calls to GraphQL::Client can return this:
KeyError: key not found: "data" (KeyError)
E.g., when I try the example in the readme to https://example.com/graphql, I expect some kind of network or HTTP error. Instead, I get the above KeyError.
I got this when making changes to my infrastructure. It made it very hard to debug problems.
I looked at load_schema, and found:
pry(main)> GraphQL::Client.load_schema(HTTP)
KeyError: key not found: "data" (KeyError)
from gems/3.4.0/gems/graphql-2.5.2/lib/graphql/schema/loader.rb:17:in 'Hash#fetch'
The load_schema call turns into load_schema(dump_schema(HTTP)). dump_schema seems to return full error info. So, between those two function calls, the information is lost:
[pry(main)> GraphQL::Client.dump_schema(HTTP)
=> {"errors" => [{"message" => "403 Forbidden"}]}
This happens other places that call execute, I believe, like .query().
In my opinion, the core problem is, the library uses fp-style Either error returns. However, Ruby doesn't have a way (like Rust or Haskell do) to enforce the handling of the error case. And so, it's possible to simply not handle them appropriately, like here.
Either-style API:
IMO, the fix is to use Ruby's Exception/Error facility so that library clients can meaningfully handle errors.
- Lenguaje dominante
- Ruby
- Estrellas
- 78
- Forks
- 228
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de github-community-projects/graphql-client
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
github-community-projects/graphql-client#78 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
github-community-projects/graphql-client#77 · 2 comentarios ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
github-community-projects/graphql-client#76 · 4 comentarios · 1 reacción ·
-
Errors not populating correctlyAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
github-community-projects/graphql-client#75 · 1 comentario · 1 reacción ·
-
InvalidNullError not showing up in GraphQL::Client::Response errors since Graphql-ruby 2.4.11Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
github-community-projects/graphql-client#65 · 1 comentario ·
Todos los issues de github-community-projects/graphql-client
Issues similares
-
DB上でコメント本文がNULLを許容しているAbiertoバグ
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
security
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
IBM/ai-security-baseline#25 ·
-
security
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
Mend: dependency security vulnerability
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día