Skip to content

feat(racer): add page allocator crate - #863

Open
Jordan Olshevski (jveski) wants to merge 44 commits into
mainfrom
pr/racer-alloc
Open

Jordan Olshevski (jveski) wants to merge 44 commits into
mainfrom
pr/racer-alloc

Conversation

@jveski

@jveski Jordan Olshevski (jveski) commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Adds the Racer page allocator crate.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Reentrant RawWaker callbacks can panic or leave write-fence futures permanently pending.

Review effort: Balanced
Findings: 1 High severity

Open (1)
What changed in this PR

Adds a worker-local page allocator crate to the Racer dataplane workspace.

Changes:

  • Implements aligned buffers, slab I/O, segment leasing, recovery, and reclamation.
  • Adds production, simulation, and real-I/O tests.
  • Integrates allocator checks and Clippy into CI.
File Description
.github/​workflows/​ci.yaml Adds allocator CI gates.
cmd/​racer-dataplane/​README.md Documents allocator testing.
cmd/​racer-dataplane/​Cargo.toml Registers the new crate.
cmd/​racer-dataplane/​Cargo.lock Locks allocator dependencies.
cmd/​racer-dataplane/​alloc/​.gitignore Ignores local build output.
cmd/​racer-dataplane/​alloc/​Cargo.toml Defines crate metadata and features.
cmd/​racer-dataplane/​alloc/​src/​lib.rs Implements public types and aligned buffers.
cmd/​racer-dataplane/​alloc/​src/​segments.rs Implements segment lifecycle and reclamation.
cmd/​racer-dataplane/​alloc/​src/​slab.rs Implements slab storage and I/O fencing.
cmd/​racer-dataplane/​alloc/​tests/​workflows.rs Tests allocator workflows and failures.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread cmd/racer-dataplane/alloc/src/slab.rs
@jveski

Copy link
Copy Markdown
Contributor Author

Copilot fix the failing workflow on this pr

Copilot AI commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Copilot fix the failing workflow on this pr

Fixed the Racer Rust Workspace compile error in 89db085 by using RefCell::replace for the registered waker. Formatting, workspace checks, allocator Clippy, and allocator tests pass apart from one local host-dependent direct-I/O assertion; the CI rerun will confirm the full suite.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The large unsafe direct-I/O and storage-lifecycle implementation warrants final human review despite its extensive validation and tests.

0 open findings

1 resolved since last review

🧠 Review effort: Balanced

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The large low-level storage implementation combines unsafe memory management, direct I/O, cancellation fencing, and recovery semantics requiring final human review.

0 open findings

🧠 Review effort: Balanced

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

A real-I/O test hard-codes 2 KiB transfers despite supporting valid 4 KiB direct-I/O alignment.

2 open findings

🧠 Review effort: Balanced

Comment thread cmd/racer-dataplane/alloc/tests/workflows.rs Outdated
Comment thread designs/racer-page-alloc.md Outdated
A same-generation image that marked a live Open, Sealed, or Evicting slot
Free let the next append reissue its extents under a generation that old
mappings still matched. Restore now publishes such slots at the next
generation, returns Unavailable when that would wrap, and reports
generation rollback as Stale instead of Corrupt.
…variants

One generator and runner drive appends, faulted I/O, leases, freezes,
historical and edited restores, reclaim, and restart against an
independent record model. Regression traces, a restore cross-product,
and seeded sequences share the runner. Scripted tests it subsumes are
removed.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Low-level unsafe memory, direct I/O, cancellation, and recovery logic warrant final human validation despite extensive tests.

0 open findings

🧠 Review effort: Balanced

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The large unsafe memory and direct-I/O surface warrants final human review despite extensive tests.

0 open findings

🧠 Review effort: Balanced

@jveski
Jordan Olshevski (jveski) added this pull request to the merge queue Oct 9, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Oct 9, 2026
@jveski
Jordan Olshevski (jveski) added this pull request to the merge queue Oct 9, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 9, 2026
@jveski
Jordan Olshevski (jveski) added this pull request to the merge queue Oct 9, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 9, 2026
@jveski
Jordan Olshevski (jveski) added this pull request to the merge queue Oct 9, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 9, 2026

This branch has not been deployed

No deployments
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.

4 participants