You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
DDSketch maintenance rejects 0 and negative inputs that asap_sketchlib supports #527
DDSketchAccumulatorUpdater::validate_single_input (crates/asap-physical-operators/src/summary_kernels/factory.rs:140) accepts only values that are finite, > 0.0, and within [min_indexable, max_indexable]. Everything else fails with "DDS maintenance input is outside its positive representable domain".
build_summary (operators/summary/mod.rs:445) propagates that error with ?, so a single 0 sample fails the whole summary update. Downstream in ASAPQuery-backend, this permanently breaks the DDS worker until it is restarted (ProjectASAP/ASAPQuery-backend#773). Real metrics contain zeros all the time. In the network-control demo, idle tasks report network_mbps = 0.
Why the check can go
The pinned asap_sketchlib (5f03ccbd, and current main) handles the full signed domain in DDSketch::try_add:
0 and magnitudes below min_indexable go to zero_count
negative values go to negative_store
the only rejections are non-finite values and |v| > max_indexable, and try_add reports those as errors itself
So the planner-side check is stricter than the sketch, and it rejects valid input.
Proposal
Relax the check to match sketchlib, i.e. value.is_finite() && value.abs() <= maximum, or call try_add and map its error. Add a test showing that 0, negative, and sub-min_indexable inputs are accepted and that quantiles over them are correct.
The quantile-ratio certificate (quantile_input_domain, see #446) needs a denominator domain that excludes zero. That is a planning-time property, separate from maintenance, and per-sample validation should not enforce it.
Activity