Define and preserve the failure state of kqueue event modifications

Đang mở
#1,012 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
38/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
rust
Lĩnh vực
operating-systems

Hướng nghiên cứu

Start at std/sys/macos/event.wave:69 and review the event-modification flow that deletes existing filters before adding replacements. Coordinate with @LunaStev to agree on whether a failed modification preserves or invalidates the previous watch, since this issue does not approve the semantics. Done means injected delete/add failures verify the chosen watch/token state, callers cannot assume an active registration after loss, and Darwin/FreeBSD native tests confirm the behavior.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

discussion enhancement help wanted

Motivation

event_modify deletes existing filters before adding replacements. With successful deletion and an injected add EIO, the real macOS provider returns -5 after the old watch is gone. A Linux-hosted kevent-boundary fixture reproduces this at O0/O2. #783 already fixed ignored deletion errors; this is the later add-failure state.

Starting point: std/sys/macos/event.wave:69.

Validation

Audited canonical Wave 540728c2eb6cc12f5c69c3fb3fdb96e07ba059a4 (0.0.1-alpha-dev), whose tree matches the local checkout. Validation: Executed real macOS provider with controlled kevent boundary on Linux O0/O2; not native Darwin execution. Executed compiler probes use the matching checkout-built compiler and std on Linux amd64 (Rust 1.89.0 / LLVM 21.1.8). Source/header or mocked checks are not native execution on another OS.

Scope

Choose whether failed modification preserves the previous watch or explicitly invalidates it, and make the facade/callers honor that contract. Do not claim an atomic kernel transaction without evidence.

Related: #783. These links do not claim those broader or completed scopes are unfinished.

Design discussion required

This issue records a proposal or an unresolved contract; it is not approval to choose new semantics. Please mention @LunaStev to discuss the design before starting implementation.

Completion criteria

  • Inject delete/add partial failures and verify watch/token state.
  • Failed modification cannot leave callers assuming an active registration when it was lost.
  • Darwin/FreeBSD native regressions confirm the approved recovery behavior.
Ngôn ngữ chính
Rust
Star
56
Fork
21
Merge trung bình
23 giờ 20 phút
Pull request đã merge (30 ngày)
45

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của wavefnd/Wave

Tất cả issue của wavefnd/Wave

Issue tương tự

Thêm issue về Rust

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.