Skip to content

DDSketch maintenance rejects 0 and negative inputs that asap_sketchlib supports #527

Description

@GordonYuanyc

Problem

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions