[Feature]: Make Avg, StdDev, Maximum and Minimum refresh-aware, consistent with Sum
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 20/100
Línea de trabajo
Read the implementation of Sum and the changes in linked pull request #1219, then trace Avg, StdDev, Maximum, Minimum, Count, IsEmpty and IsNotEmpty through the ForAggregation pipeline. Compare their refresh behavior and decide which operators need stateful projections, immutable variants, or documentation; done means the aggregates behave consistently with the agreed 10.0 model and the release notes describe the behavior and memory impact.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the functionality desired 🐞
The changeset aggregates ignore Refresh. They go through the internal ForAggregation() pipeline, which drops refresh changes, so when an item is mutated in place and refreshed, the aggregate keeps the stale value.
#1167 makes Sum refresh-aware (and adds SumImmutable for the stateless behaviour). Once it merges, Sum will be the only aggregate that honours Refresh, which is inconsistent with Filter, Sort and Group, and with each other: Sum and Avg over the same pipeline would disagree after a refresh.
The remaining aggregates should follow the same model for 10.0.
The steps the functionality will provide
Avg(AvgEx): re-evaluate the selector onRefresh, using stored per-item projections likeSum.StdDev(StdDevEx): same.Maximum/Minimum(MaxEx): same; a refresh can move the extreme value, so the current max/min must be recomputed when the refreshed item held it.Count/IsEmpty/IsNotEmpty(CountEx): no selector, soRefreshcannot change the result. Confirm and document; no behaviour change expected.- Decide per operator whether to add an
*Immutablestateless variant, matchingSumImmutable. - Share one internal stateful helper rather than duplicating the cache and list bookkeeping per operator.
Considerations
Follow-up to #1167. This is a behavioural change (refresh now alters emitted values, and per-subscription memory becomes O(n)), so it should land in 10.0 alongside the Sum change and be called out in the release notes.
- Lenguaje dominante
- C#
- Estrellas
- 1.9k
- Forks
- 194
- Merge medio
- 12 min
- PR fusionados (30 d)
- 1
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
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 reactivemarbles/DynamicData
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
reactivemarbles/DynamicData#1229 ·
Los mantenedores suelen responder en 1 día
-
infrastructure
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
reactivemarbles/DynamicData#1089 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
[Bug]: ChangeAwareList merges an insert one slot before a pending AddRange, corrupting list order downstreamPosiblemente ocupada @dwcullop la tomó hace 9 días. Abiertobug
Dificultad 3/5 Medio día Aptitud para principiantes 63/100
reactivemarbles/DynamicData#1225 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
reactivemarbles/DynamicData#1196 ·
Los mantenedores suelen responder en 1 día
-
[Bug]: RemoveKey loses entry identity for equal values and produces invalid list indexesPosiblemente ocupada @dwcullop la tomó hace 51 días. Abiertobug
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
reactivemarbles/DynamicData#1182 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de reactivemarbles/DynamicData
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
immichFrame/ImmichFrame#735 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
dimitar-radenkov/Pointframe#318 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
DotHarness/dotcraft#546 ·
Los mantenedores suelen responder en 1 día
-
a-corriger bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
christian-raj/S-Aloha#303 · 1 comentario ·
-
Input editor says "Apply Changes" even when no changes have been made.Posiblemente ocupada @hcooper la tomó hoy. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
MobiFlight/MobiFlight-Connector#3526 ·
Los mantenedores suelen responder en 1 día