[BUG] `maxBatchSize: NaN` is accepted and silently disables batching

Abierto Apto para principiantes
#405 0 comentarios 0 reacciones 0 asignados Ver en GitHub

@RaphaelFakhri ya está trabajando en esto.

Desde el 5/11/2026.

  • #406 de @RaphaelFakhri — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
82/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
javascript, node.js

Línea de trabajo

Lee getValidMaxBatchSize y la validación del constructor en el código fuente de DataLoader; el issue identifica la comparación que falla y la comprobación prevista. Encuentra las pruebas existentes para la validación de maxBatchSize y añade cobertura para NaN. El trabajo estará terminado cuando la construcción con NaN lance el TypeError esperado y pasen las pruebas relacionadas.

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

Descripción

new DataLoader(fn, { maxBatchSize: NaN }) throws TypeError: maxBatchSize must be a positive number: NaN, the same as it does for 0, negative numbers, and non-numbers.

Current Behavior

The constructor accepts NaN. getCurrentBatch then compares keys.length < NaN, which is always false, so every load() call starts a new batch. Batching is turned off without any error or warning.

Possible Solution

In getValidMaxBatchSize, replace maxBatchSize < 1 with !(maxBatchSize >= 1) so that NaN fails the check.

Steps to Reproduce

const DataLoader = require('dataloader');

const calls = [];
const loader = new DataLoader(
  async keys => {
    calls.push(keys);
    return keys;
  },
  // For example, read from an environment variable that is not set.
  { maxBatchSize: Number(process.env.MAX_BATCH_SIZE) },
);

Promise.all([loader.load(1), loader.load(2), loader.load(3)]).then(() =>
  console.log(JSON.stringify(calls)),
);
// Prints [[1],[2],[3]]. Expected a TypeError from the constructor.

Context

maxBatchSize often comes from configuration, for example Number(process.env.X) or parseInt(value, 10). Both return NaN when the value is missing or invalid. The loader keeps working, but it sends one request per key, and nothing points to the misconfiguration.

Lenguaje dominante
JavaScript
Estrellas
13.4k
Forks
522
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de graphql/dataloader

Todos los issues de graphql/dataloader

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.