Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Keep JSONRPC output backpressure outside configuration and deduplication locks

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

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

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
35/100
issue の種類
リファクタリング
明瞭さ
おおむね明確
活発さ
活発
技術スタック
rust

調査の方向性

Start by reading crates/pet-reporter/src/cache.rs, crates/pet/src/jsonrpc.rs, and crates/pet-jsonrpc/src/lib.rs, then review the transport seams from #529/#532 and generation semantics from #536. Validate the design with controlled slow-consumer tests; done means bounded output buffering, correct generation and ordering behavior, explicit failures, and coverage for saturation, closed output, and shutdown.

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

説明

debt

Tracking plan: #528
Priority: P2. Evidence: lock scopes confirmed by source inspection; reproduce impact with controlled slow-consumer tests.

Problem

The deduplicating reporter invokes its downstream reporter while holding the manager/environment map write lock. The generation-guarded reporter holds the configuration read lock through notification reporting. The downstream JSONRPC writer synchronously writes/flushes stdout.

A slow or disconnected consumer can therefore couple transport I/O to discovery deduplication and configuration publication. The audit does not claim a measured production deadlock; the first task is to prove the coupling and required ordering with deterministic tests.

Sources: deduplicating reporter, generation reporter, framed output.

Scope

Separate deduplication and generation decisions from blocking output. Evaluate a bounded single-writer queue or equivalent narrow transport boundary; do not replace lock contention with an unbounded memory queue. Define exactly where generation checks occur and how notification/reply ordering is guaranteed when configure races with queued output.

Make serialization/write/flush failures explicit and preserve stdout as framed protocol output only. Rename CacheReporter around deduplication if the type is changed, and retain only the data its behavior needs.

Acceptance criteria

  • A controllably blocked output sink cannot hold the configuration or deduplication locks for the duration of the write.
  • Tests cover slow consumers, closed output, queue saturation, and shutdown with pending notifications.
  • Stale-generation notifications are suppressed at the documented publication boundary, including configure racing with queued output.
  • Environment/manager deduplication remains atomic; a refresh reply cannot overtake the notifications it is defined to complete.
  • Concurrent replies/notifications remain correctly framed, with bounded buffering and explicit error propagation.
  • #531/#533 show no regression in complete-inventory correctness, first-result latency, or resource bounds.

Dependencies

Depends on #536 for generation/snapshot semantics and #533 for slow-consumer/resource validation. Build on the transport seams from #529/#532. Coordinate with bounded scheduling #539 rather than introducing a second conflicting queue policy. The complete sequence is in #528.

主要言語
Rust
スター
207
フォーク
45
平均マージ
8時間 19分
マージ済み PR(30日)
2

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

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

microsoft/python-environment-tools のほかの issue

microsoft/python-environment-tools の issue をすべて見る

似ている issue

Rust の issue をもっと見る

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

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