Skip to content

feat(wal): add bounded TLS RPCs for ingress and materializers - #448

Merged
beinan merged 1 commit into
mainfrom
codex/wal-client-rpc
Oct 22, 2026
Merged

beinan merged 1 commit into
mainfrom
codex/wal-client-rpc

Conversation

@beinan

@beinan beinan commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Ingestion and materializers need to reach durable replicas without embedding a WAL node. This adds authenticated TLS client RPCs with separate data/control listeners, bounded shared connection pools, leader hints, and source-payload reads. Append sends metadata and the existing payload buffer in one exchange; success is returned only after durable quorum completion. An uncertain result preserves the exact producer/sequence/body retry contract.

This supplies the network interface; HTTP ingestion and an independently deployable service follow separately.

Refs #378.

Testing

  • Full repository CI-equivalent script passed, including Rust tests, format/Clippy, Python tests (229 passed, 2 skipped, 1 xfailed), Ruff and Pyright.
  • Feature tests cover bounded RPC admission, authentication and wrong-policy rejection, disconnected clients, exact retries, and separate control capacity.
  • Real three-process TLS tests kill the leader, restart all original replica directories, and verify every payload and retry position. Lance qualification registers an existing manifest through the network catalog and reads it before and after all replicas restart.

Depends on #447. This PR is stacked on that branch so its diff can be reviewed independently; it will be rebased onto main after its dependency merges, with CI required again before merging.

CI correction: Linux wheel setup uses bounded downloads from the official AlmaLinux repositories, with TLS and package signature checks preserved.

APT wheel setup now uses only signed official distribution repositories in an isolated metadata directory. This avoids unrelated PPA outages; bounded network retries, HTTPS and archive signature verification remain enabled. Bash/ShellCheck and a local Debian metadata/install simulation passed; the Ubuntu cross-build installation is validated by remote CI.

CI runs the existing workspace, WAL, Lance, and etcd suites in separate jobs so cold feature builds do not exhaust one shared 60-minute timeout. Every original check command and the coverage jobs are preserved. Checkpoint reopen cases are serialized around subprocess creation to prevent inherited file locks; corruption cases must report the expected validation error. Minimal-feature and all-feature checkpoint tests and Clippy pass; the workflow passes actionlint. Final-commit CI is required before merging.

@beinan
beinan force-pushed the codex/wal-client-rpc branch 3 times, most recently from 68b84d5 to 3be873b Compare October 21, 2026 22:10
@beinan
beinan changed the base branch from codex/wal-node-disk-admission to main October 21, 2026 22:10
Retain all feature checks in separate CI jobs and serialize checkpoint fork/reopen cases.

Refs #378
@beinan
beinan force-pushed the codex/wal-client-rpc branch from 3be873b to 4cf154c Compare October 21, 2026 23:02
@beinan
beinan merged commit 26dfeb9 into main Oct 22, 2026
18 checks passed
beinan added a commit that referenced this pull request Oct 22, 2026
## Summary

Add an independent rollout-ingestion adapter using the durable WAL's TLS
client interface. It verifies the authorized table generation and
rollout contract at quorum, reserves shared memory before buffering,
validates Arrow IPC and session-bucket boundaries, and retains the
original bytes for exact retries. Durable ACKs produce authenticated
receipts that can be restored after restart and checked against compact
publication visibility.

The adapter lives in the unpublished `lance-context-ingest` crate so the
existing publishable core does not acquire an unpublished WAL
dependency. Applications must persist producer-open and append retry
state before sending; HTTP routing, that journal wiring and the
materializer loop remain separate integration work.

Refs #378.

## Testing

- Full repository CI-equivalent checks, including Rust, Python, Ruff and
Pyright.
- Real TLS three-replica test with a real Lance genesis manifest, all
original replica directories restarted, exact retries, and complete
metadata/payload reads.
- IPC validation, shared-memory pressure, virtual buckets sharing a Raft
group, receipt tampering/key rotation/scope, producer fencing, and
compact quorum visibility bounds.

Built on merged #448. The change is now based on main with an identical
feature diff; all checks must pass for the new commit before merging.

CI correction: registry packaging excludes the private ingress adapter;
its Rust feature tests remain required. Linux wheel setup uses bounded
downloads from the official AlmaLinux repositories, with TLS and package
signature checks preserved.

APT wheel setup now uses only signed official distribution repositories
in an isolated metadata directory. This avoids unrelated PPA outages;
bounded network retries, HTTPS and archive signature verification remain
enabled. Bash/ShellCheck and a local Debian metadata/install simulation
passed; the Ubuntu cross-build installation is validated by remote CI.


CI runs the existing workspace, WAL, Lance, and etcd suites in separate
jobs so cold feature builds do not exhaust one shared 60-minute timeout.
Every original check command and the coverage jobs are preserved.
Checkpoint reopen cases are serialized around subprocess creation to
prevent inherited file locks; corruption cases must report the expected
validation error. Minimal-feature and all-feature checkpoint tests and
Clippy pass; the workflow passes actionlint. Final-commit CI is required
before merging.
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.

1 participant