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

Review client classifies a refused connection as an unknown outcome

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

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

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

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
85/100
issue の種類
リファクタリング
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
rust
領域
api, backend

調査の方向性

まず crates/registry-review-client/src/error.rs の ReviewClientError::mutation_class を確認し、crates/registry-casework-client/src/error.rs の CaseworkClientError::is_outcome_unknown / mutation_class と比較する。Transport { kind: TransportKind::Connect } が Deterministic として分類されるようにし、タイムアウトと破損した交換は Ambiguous のままにした上で、crates/registry-review-client/tests/http_boundary.rs に接続を拒否してクラスを検証する境界テストを追加する。そのテストが通り、ReviewMutationErrorClass に関するドキュメントコメントに接続拒否のルールが記載されていれば完了。

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

説明

area:casework bug criticality:p3 rust

Problem

registry-review-client and the Casework client disagree about a refused connection.

  • ReviewClientError::mutation_class (crates/registry-review-client/src/error.rs) returns Ambiguous for every Transport error, including TransportKind::Connect.
  • CaseworkClientError::is_outcome_unknown and mutation_class (crates/registry-casework-client/src/error.rs) return Deterministic for TransportKind::Connect, because a connection that was never established cannot have carried the request. The BReg, Messaging and Scheduling clients' is_outcome_unknown make the same call, and that predicate is what the shared keyed-mutation retry in registry-platform-httputil consults.

ReviewMutationErrorClass is re-exported from registry-stack-client, so a caller using the review client directly is told that a refused connection may have committed. The recovery that follows (resend under the same key) is safe, so this is an inconsistency rather than a correctness bug, but the two clients now document different meanings for the same class.

Found while reviewing #1933, which deliberately left create_or_recover_review_request and cancel_review_request outside the automatic resend (one exchange each).

Proposal

Make ReviewClientError::mutation_class return Deterministic for Transport { kind: TransportKind::Connect }, keep Ambiguous for timeouts and broken exchanges, and add a boundary test beside the existing ones in crates/registry-review-client/tests/http_boundary.rs that refuses the connection and asserts the class.

Done when

  • A refused connection classifies the same way in the review client as in the BReg, Casework, Messaging and Scheduling clients.
  • The review client's documentation of ReviewMutationErrorClass states that rule.
主要言語
Rust
スター
2
フォーク
0
平均マージ
9時間 5分
マージ済み PR(30日)
248

環境構築

はじめの一歩

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

registrystack/registry-stack のほかの issue

registrystack/registry-stack の issue をすべて見る

似ている issue

Rust の issue をもっと見る

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

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