Targeting: a stored ruleset the reader cannot parse raises, failing the bulk flags call and the SDK ruleset for every flag
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- Medio día
- Aptitud para principiantes
- 45/100
Línea de trabajo
Start in backend/app/core/targeting_adapter.py at normalise_targeting_rules, where the documented never-raises contract is broken for exceptions other than TargetingRulesError. Reproduce with a stored geo_within_radius whose radius is a very large integer (OverflowError) and a semver value like "1.²" (ValueError), then trace how get_user_flags, build_ruleset and segment membership call it. Done when one bad stored ruleset yields error for only its own flag while the bulk call and ruleset document still succeed, with tests covering both exception types.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
normalise_targeting_rules (backend/app/core/targeting_adapter.py) documents that invalid content never raises, but a stored ruleset whose reading raises an exception other than the ones it catches escapes it. Measured at 3a6eb775 (with #1664's branch on top, which touches no targeting code): a stored dashboard geo_within_radius whose radius is a 401-digit integer makes normalise_targeting_rules raise OverflowError. The principal engineer's review of the #1666/#1669/#1672 plan measured the same with a ValueError (a stored dashboard semver value "1.²", which a save refuses).
What a reader then does with one such stored flag, measured in that review:
get_user_flagsandbuild_rulesetraise, so the bulk flags call and the SDK ruleset document fail for every flag, not only this one;- segment membership raises (it catches only
TargetingRulesError); - every evaluation of the flag answers
errorand writes an error-log row, which the safety monitor counts.
No API route can write such a row (saves refuse or, until #1672 is fixed, answer 500 without writing); it takes a direct database write or a row stored before validation existed.
Expected
A stored ruleset that cannot be read affects only its own flag, experiment or segment. The fix is a read-path decision: catching the exception broadly in normalise_targeting_rules makes the flag fall back to its global rollout (fails open, as returning None does today for the cases it catches), so the likely shape is a per-flag catch that answers error for that flag and lets the bulk call and the ruleset document go on. The docstring's promise is made true either way.
- Lenguaje dominante
- Python
- Estrellas
- 0
- Forks
- 4
- Merge medio
- 5 h 19 min
- PR fusionados (30 d)
- 503
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una 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 Controlvar/controlvar
-
Dashboard: the sequential panel's "Ready to stop" banner shows no sample-ratio-mismatch cautionAbiertobug post-launch
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Controlvar/controlvar#1737 ·
Los mantenedores suelen responder en 1 día
-
fix(api): the feature-flag list has no defined order across pagesPosiblemente ocupada @amarkanday la tomó hoy. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Controlvar/controlvar#1612 ·
Los mantenedores suelen responder en 1 día
-
bug post-launch
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Controlvar/controlvar#1562 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
Controlvar/controlvar#1447 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Experiment setup: emptying a traffic share box and typing a number shows a leading zero ("034")Abiertobug post-launch
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Controlvar/controlvar#1428 ·
Los mantenedores suelen responder en 1 día
Todos los issues de Controlvar/controlvar
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
FinanceFlash/unvibecode#509 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
FAIRmat-NFDI/nomad-distro-dev#161 ·
-
bug v2
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
modelcontextprotocol/python-sdk#3821 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug severity:low
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 2 días
-
Log-odds calibration uses upper middle score instead of median for even candidate setsPosiblemente ocupada @flysheep-ai la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día