Define and preserve the failure state of kqueue event modifications

オープン
#1,012 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
38/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
rust

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

説明

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.
主要言語
Rust
スター
56
フォーク
21
平均マージ
23時間 20分
マージ済み PR(30日)
45

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

wavefnd/Wave のほかの issue

wavefnd/Wave の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。