Using dataloader at leaf level of multi layer schema failed to batch
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Error
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- graphql, javascript, postgres
Línea de trabajo
Comienza reproduciendo la consulta D→S→SW→W→C con un DataLoader únicamente en el nivel hoja C, usando la configuración descrita de Apollo Server, Postgres y Knex. Compara el batching con y sin batchScheduleFn y, después, añade loaders ancestro para W, SW y S; se considera terminado cuando se haya determinado si el comportamiento es el esperado o se trata de un error de DataLoader, y se haya documentado la conclusión si corresponde.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Hi there,
I have a graphql schema like this:
D has many S has many SW has one W has many C.
D is available via a root level query.
(The underlying SQL has the same set of entities and relationships between them).
Using apollo server (not sure if relevant), postgres and knex.
I started by adding a dataloader for C. I then made a root level query for D, asking for all the properties of each element in the above schema. Testing revealed that the caching worked - each distinct C was only queried for once. But batching didn't work - for each distinct C, there was a separate SELECT.
When debugging this, added batchScheduleFn: (callback) => setTimeout(callback, 100) to the dataloader for C. At that point, batching started to work.
This made me think that somehow the C resolution was taking place on different event loop tics. On a hunch, I added a dataloader for W, SW and S. (none for D, as there is just one root level query for D).
After doing this, batching worked for all of S, SW, W and C - even with the batchSchedule function removed.
So I wanted to ask - is this possibly a bug (either in dataloader or, for a separate matter, Apollo Server), or is it expected that batching at the leaf node C would not work unless all ancestor nodes are also resolved with dataloaders?
If this isn't a bug, I wonder if adding this information to the documentation would be possible, to help other people who find themselves in this situation - implementing dataloader only at the leaf of a deep schema, and having batching not work they way they expected it would?
Anyhow, thanks for the library and its ongoing maintenance :)
- Lenguaje dominante
- JavaScript
- Estrellas
- 13.4k
- Forks
- 522
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
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 graphql/dataloader
-
[BUG] `maxBatchSize: NaN` is accepted and silently disables batchingPosiblemente ocupada @RaphaelFakhri la tomó hace 2 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
graphql/dataloader#405 ·
-
Failed batch evicts a replacement cache entry after clear/primePosiblemente ocupada @Claire-ovo la tomó hace 11 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 57/100
graphql/dataloader#403 ·
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 38/100
graphql/dataloader#393 ·
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
graphql/dataloader#382 ·
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
graphql/dataloader#379 · 2 comentarios · 5 reacciones ·
Todos los issues de graphql/dataloader
Issues similares
-
bug needs-triage potential-regression
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
aws/aws-sdk-js-v3#8408 ·
Los mantenedores suelen responder en 1 día
-
[v3] KeyBindingManager calls (Add/Remove) are not converted into a case-insensitive accelerator.KeyAbiertoBug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 4 días
-
fix(docs): align git__gh troubleshooting with its actual failure pathsPosiblemente ocupada @akhil9tiet la tomó hoy. Abiertobug docs p2
Dificultad 1/5 1-3 horas Aptitud para principiantes 78/100
vercel/eve#6130 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100