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
fix(precompute): bulk single-timestamp ingest silently drops rows when wall-clock fallback closes the window mid-ingest #474
When ingesting a large one-shot batch where many rows share the same event-time (e.g. netflow data at 5M rows/s, all packed into one timestamp-second), the precompute engine force-closes the tumbling window ~6s into ingest via the wall-clock fallback. Rows that arrive after that point hit the "evicted pane" path and, because late_data_policy is hardcoded to Drop, are silently discarded.
The result is a uniform undercount across all group keys. Queries read a closed but incomplete window from the store.
Observed behavior
5M rows/s netflow run (5M rows, all in window [13:10:00, 13:10:01)), sketchdb vs ClickHouse baseline:
Error is uniform across every srcip (rows are interleaved, so each key loses the same fraction).
Root cause
All rows share one event-time, so the event-time watermark never advances. The window only closes via the wall-clock fallback in worker.rs, which fires after window_size_ms + wall_clock_grace_period_ms (default 1000 + 5000 = 6000 ms) of wall-clock time:
The ForwardToStore variant already exists and would merge late rows into the store at query time, but there's no way to select it:
// asap-query-engine/src/precompute_engine/config.rs:5pubenumLateDataPolicy{/// Drop late samples that arrive after their window has closed.Drop,/// Forward late samples to the store to be merged with existing window data.ForwardToStore,}
Activity
fix(precompute): keep wall-clock fallback from force-closing panes st…
docs(precompute): address PR #538 review feedback on framing
fix(precompute): keep wall-clock fallback from force-closing panes st…
test(precompute): add real-pipeline e2e regression test for #474
docs(precompute): address PR #538 review feedback on framing
test(precompute): add a wall-clock override hook to PrecomputeEngine (#…
test(precompute): add real-pipeline e2e regression test for #474
docs(precompute): address PR #538 review feedback on framing
test(precompute): add real-pipeline e2e regression test for #474 (#538)