The Foundation: Continuous Polling & Jitter Loop
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- typescript
Línea de trabajo
Empieza localizando los puntos de entrada de ChangeDetector, RolloutStateMachine y BaseOptions; después, sigue la ruta existente de solicitud de configuración. Usa vi.useFakeTimers() para verificar el sondeo recursivo, el jitter y el caso de hot reload deshabilitado; se considera terminado cuando el callback onChange recibe un payload 200 OK y se actualiza el estado de ETag.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description:
Implement the ChangeDetector module and the foundational RolloutStateMachine. This slice establishes the core continuous polling mechanism using a recursive setTimeout loop that checks for configuration changes via If-None-Match (ETag) HTTP headers. To prevent cluster thundering herds, the polling interval must apply a +/- 15% randomized jitter. Update the BaseOptions API contract to accept pollIntervalMs, disableHotReload, and the onChange callback. When a change (200 OK) is detected, the SDK should deliver the payload directly to the onChange callback and update its internal ETag state.
Acceptance criteria
-
BaseOptions accepts the new parameters (pollIntervalMs, disableHotReload, onChange).
-
Passing disableHotReload: true completely disables the polling loop.
-
The polling mechanism uses recursive setTimeout with +/- 15% randomized jitter (verified via vi.useFakeTimers()).
-
Detecting a 200 OK response successfully triggers the onChange callback with the new configuration.
Blocked by:
None - can start immediately
User stories covered: 1, 2, 3, 10
- Lenguaje dominante
- TypeScript
- Estrellas
- 0
- Forks
- 0
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin 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 MapColonies/config
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
MapColonies/config#129 ·
-
enhancement
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
MapColonies/config#128 ·
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
MapColonies/config#127 ·
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
MapColonies/config#126 ·
-
bug
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
MapColonies/config#75 ·
Todos los issues de MapColonies/config
Issues similares
-
embed: handleTurboSignMessage header comment says the signing page posts to '*' (it never does)Abiertodocumentation
Dificultad 2/5 Menos de una hora Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 Medio día Aptitud para principiantes 70/100
udistrital/paginaweb_root#23 ·
-
Aborting a request that waits for a socket destroys that socket under a later request (socket hang up)Posiblemente ocupada @vvo la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
ClickHouse/clickhouse-js#1040 ·
Los mantenedores suelen responder en 7 días
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Small-tailqwq/dsh-deep-whale#187 ·
Los mantenedores suelen responder en 1 día
-
Tela Marca manda conferir o campo "Razão social", que em Portugal se chama "Denominação social"Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
melgarafael/DeskcommCRM#2503 ·
Los mantenedores suelen responder en 1 día