v0.1.1
The first soak on the reference hardware found three defects in the live
table's upkeep that only show under sustained load; all three are fixed here
and verified with a ten-minute loaded run at 43,000 jobs/s (p50 9.6 ms, p99
52 ms in every window). Upgrading applies schema v7 (one ALTER TABLE).
Fixed
- The leader re-analyzes the live table on churn again (rate-limited to
every 30 s, with a small sample): with statistics refreshed only on a
tenfold size change, the planner's picture of the state mix went stale
and the finalize drifted back onto its slow join order within minutes at
43,000 jobs/s. - Vacuums of the live table no longer truncate its heap (schema v7 sets
vacuum_truncate = false; the leader passesTRUNCATE false): the
truncation retried an exclusive lock for five seconds per pass and
stalled every claim behind it whenever it got one, which showed as
pickup-latency spikes of one to two seconds. - The claim's
LIMITis a constant (one statement per bucket, 1 to 512,
with the count applied through row numbers) instead of a bind parameter,
whose generic plan scanned the whole table per claim; a claim returns at
most 512 jobs. hopperbench loaded -report Nprints per-window latency and rate lines
for soaks.
Modules: github.com/parallelworks/hopper, github.com/parallelworks/hopper/hopperotel, github.com/parallelworks/hopper/hopperui, all at v0.1.1.