Skip to content

Phase 1: make native ring EINTR-safe - #20

Merged
bright2227 merged 1 commit into
mainfrom
feature/native-reap-eintr
Aug 1, 2026
Merged

Phase 1: make native ring EINTR-safe#20
bright2227 merged 1 commit into
mainfrom
feature/native-reap-eintr

Conversation

@bright2227

Copy link
Copy Markdown
Owner

Summary

  • retry native liburing submission and completion peeks after EINTR
  • dispatch pending Python signal handlers before retrying
  • reject a retry if a signal handler closed or reinitialized the ring

Why

Phase 1 requires explicit EINTR handling at the native prepare/submit/reap boundary. Without the completion retry, reap() could discard a partially accumulated completion batch when liburing returned -EINTR. Python signal dispatch also introduces reentrancy, so an internal generation guard prevents retrying against closed or replacement ring resources.

This is a stacked draft PR and depends on #19. Its base must remain feature/native-request-nop until #19 merges.

Validation

  • vendored liburing native extension build
  • uv run pytest -q tests/unit/test_uringcore_liburing.py — 15 passed
  • uv run pytest -q — 32 passed
  • uv run ruff check .
  • git diff --check feature/native-request-nop
  • codex review --base feature/native-request-nop — no actionable findings

@bright2227
bright2227 changed the base branch from feature/native-request-nop to main August 1, 2026 18:13
@bright2227
bright2227 marked this pull request as ready for review August 1, 2026 18:13
@bright2227
bright2227 force-pushed the feature/native-reap-eintr branch from 2e80aa7 to 25819ec Compare August 1, 2026 18:14
@bright2227
bright2227 merged commit cf2419d into main Aug 1, 2026
7 checks passed
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