Skip to content

Move slot creation to before bootstrap - #84

Open
harshil-goel wants to merge 12 commits into
mainfrom
harshil/slot-fix
Open

Move slot creation to before bootstrap#84
harshil-goel wants to merge 12 commits into
mainfrom
harshil/slot-fix

Conversation

@harshil-goel

Copy link
Copy Markdown
Contributor

No description provided.

@CLAassistant

CLAassistant commented Aug 12, 2026

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
1 out of 2 committers have signed the CLA.

✅ heavycrystal
❌ harshil-goel
You have signed the CLA already but the status is still pending? Let us recheck it.

harshil-goel and others added 11 commits August 12, 2026 13:32
[bootstrap] mode/backup_name/object_store_parallelism, merged with the
matching flags CLI-first. Unset parallelism leaves ObjectStoreSource's
min(4, num_cpus) clamp alone instead of overriding it with a flat 4, and
--bootstrap-mode object_store parses again (clap was kebab-casing it).

Also carries the in-flight pre-flight gate, --bootstrap-wal-from-archive
and the Linux-only build guard from the same files.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
collect waited for all 118 parts before anyone read a result, so a part
that died at the 60s reqwest body deadline stayed invisible for the 47
minutes the rest took to drain. try_collect returns on the first error
and drops the stream, cancelling the parts still in flight.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Both pool sizes were CLI-only and defaulted to 1, which caps a
cross-region ClickHouse at one batch per insert round trip. entrypoint.sh
was already injecting 4 inserters to work around it, so the binary now
carries that default and decoders stay at 1 to preserve per-table WAL
order.

Flags become Option and merge CLI-first over [ch] decoder_pool_size and
inserter_pool_size. The scattered .max(1) at each reader is replaced by
one clamp at resolution that warns instead of silently bumping.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
detoast_heap takes a ToastResolver, not a ShadowCatalog, so the
prerequisite both plans named for the bootstrap decode pool is already
done. Records the two items the Option B shape omits, seq assignment
moving upstream of the pool and concurrent TOAST spool writers.

Also softens the rfn contiguity claim, which buys seq economy rather
than correctness.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
perf annotate and --sort=srcline had no source attribution on release
binaries, so hot pipeline stages could only be read at the symbol level.
line-tables-only keeps the debuginfo small and leaves codegen untouched.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
entry() takes an owned key, so the hub cloned two Arcs for every row it
handled, hits included. contains_key plus get_mut hashes twice on the
miss path and not at all extra on the hit path. Marked TODO because the
win is unmeasured, the refcount lines may well be uncontended.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The tar pump read straight off the live S3 body, so request lifetime
tracked how fast the sink drained rather than how fast the object
downloaded. walrus caps a request at 60s and a 700-800MB part takes
longer than that to clear the batcher, so the body died mid-part and
took the whole bootstrap with it.

Drain the part to the caller's scratch root first, then decode from the
file. The GET now completes at network speed. Bytes are spooled still
compressed, so scratch tracks object size, and the file is unlinked
right after writing so no error path can leak it.

Costs parallelism x part_size of disk, which is a reason to keep
object_store_parallelism low on large parts.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
rustdoc reads [`plans/config.md`] as an intra-doc path and cargo doc runs
with -D warnings, so it failed the lint job.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants