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
The pressure_flush e2e test failed with an 8-of-150 undercount: when
force_flush_current_buckets commits the open bucket's rows to Delta and
inserts then repopulate the same bucket_id, the read path's per-bucket
exclusion masked the current bucket's entire range from the Delta scan,
hiding every force-flushed row (only the un-flushed MemBuffer remainder
stayed visible).
Fix: exclude only sealed (past) bucket ranges from the Delta scan, never
the current open bucket's range. Force-flush removes rows from MemBuffer
before committing, so the current bucket's MemBuffer rows and its Delta
rows are disjoint — the union can't double-count them. Sealed buckets keep
the exclusion (their commit-then-drain flush can briefly hold a row in
both stores).
Regression test force_flushed_current_bucket_rows_stay_queryable bootstraps
the real layer (local MinIO), force-flushes the open bucket, repopulates
it, and asserts all rows remain queryable. Fails 2-of-5 without the fix.
Made force_flush_current_buckets pub(crate) to drive it deterministically.
0 commit comments