Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

perf(basket): parallelize batch ingest and memoize Geo/UA lookups

Abierto
#862 1 comentario 0 reacciones 0 asignados Ver en GitHub

@sundaram2021 ya está trabajando en esto.

Desde el 21/9/2026.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
55/100
Tipo de issue
Refactorización
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
typescript

Línea de trabajo

Start in apps/basket/src/routes/basket.ts, reading the batch handler at lines 572-611 and getBatchVisitorCountry around line 561. Trace checkForBot, validateEventSchema, processTrackEventData, getGeo, and parseUserAgent before changing the batch flow. Done means batch work is parallelized and lookups are reused while preserving result ordering and bot-ignore semantics.

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

Descripción

Summary

Basket batch ingest processes events serially and repeats GeoIP + UA parsing per event, limiting throughput on large batches.

What's the issue

In apps/basket/src/routes/basket.ts:572-611, the batch handler loops with await checkForBot, await validateEventSchema, await processTrackEventData per event. processTrackEventData does Promise.all([getGeo(ip), parseUserAgent()]) per item, so a 50-event batch pays 50x GeoIP + UA + bot scans serially. Only the outgoing_link path memoizes via getBatchVisitorCountry:561.

Proposed fix

  • Validate schemas in chunked parallel batches (e.g. Promise.allSettled, size 10).
  • Memoize getGeo + parseUserAgent by distinct (ip, ua) key per batch request.
  • Keep per-event result ordering and bot-ignore semantics.
Lenguaje dominante
TypeScript
Estrellas
1.2k
Forks
227
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.

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.