Lock Coordination & Safe Rollout Boundaries
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 38/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- typescript
- Área
- distributed-systems
Línea de trabajo
Empieza revisando el issue bloqueado #125 y después sigue las rutas del SDK para la obtención inicial de la configuración y el sondeo continuo que detectan cambios en ETag. Identifica dónde se invoca onChange y dónde debería ubicarse LockCoordinator; se considera terminado cuando el arranque omite el bloqueo, la recarga en caliente adquiere el bloqueo de rollout, rolloutKey toma os.hostname() como valor predeterminado y la configuración se vuelve a obtener antes de onChange.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
Implement the LockCoordinator to enforce safe rollout boundaries across the cluster. Before the SDK applies a newly detected ETag, it must acquire a distributed semaphore lock based on the rolloutLimit and rolloutKey (defaulting to os.hostname()). Critically, the SDK must completely bypass this locking mechanism during the initial application boot to prevent deployment deadlocks. Furthermore, once a lock is successfully acquired during a hot-reload phase, the SDK must perform a fresh re-fetch of the configuration to ensure it does not apply a stale payload that was superseded while it was waiting in the lock queue.
Acceptance criteria
-
The initial configuration fetch during application boot completely bypasses lock acquisition.
-
Detecting a change during continuous polling triggers an attempt to acquire a distributed lock before executing onChange.
-
If no rolloutKey is provided, the lock defaults to os.hostname().
-
Immediately after acquiring a lock, the SDK successfully re-fetches the configuration before passing it to onChange.
Blocked by
Issue #125
User stories covered: 4, 5, 11
- 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 48/100
MapColonies/config#125 ·
-
bug
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
MapColonies/config#75 ·
Todos los issues de MapColonies/config
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
siyuan-note/siyuan#20313 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 92/100
alunduil/projects-v2-sync#14 ·
-
Service process inherits the caller's cwd at first use, holding that folder open on Windows (EBUSY)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
DevTools page styles leak into the host app in developmentPosiblemente ocupada @onmax la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
nuxt-modules/better-auth#567 · 1 comentario ·
Los mantenedores suelen responder en 1 día