Review client classifies a refused connection as an unknown outcome
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 85/100
Research direction
Start with ReviewClientError::mutation_class in crates/registry-review-client/src/error.rs and compare it to CaseworkClientError::is_outcome_unknown / mutation_class in crates/registry-casework-client/src/error.rs. Make Transport { kind: TransportKind::Connect } classify as Deterministic while timeouts and broken exchanges stay Ambiguous, then add a boundary test in crates/registry-review-client/tests/http_boundary.rs that refuses the connection and asserts the class. Done when that test passes and the doc comment on ReviewMutationErrorClass states the refused-connection rule.
Written by the indexing model from the issue text.
Description
Problem
registry-review-client and the Casework client disagree about a refused connection.
ReviewClientError::mutation_class(crates/registry-review-client/src/error.rs) returnsAmbiguousfor everyTransporterror, includingTransportKind::Connect.CaseworkClientError::is_outcome_unknownandmutation_class(crates/registry-casework-client/src/error.rs) returnDeterministicforTransportKind::Connect, because a connection that was never established cannot have carried the request. The BReg, Messaging and Scheduling clients'is_outcome_unknownmake the same call, and that predicate is what the shared keyed-mutation retry inregistry-platform-httputilconsults.
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
ReviewMutationErrorClassstates that rule.
- Dominant language
- Rust
- Stars
- 2
- Forks
- 0
- Avg merge
- 9h 14m
- Merged PRs (30d)
- 241
Getting set up
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from registrystack/registry-stack
-
agent-ready area:breg bug criticality:p3 triage:needs-implementation
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
registrystack/registry-stack#1941 ·
Maintainers usually reply within 1 day
-
area:casework bug criticality:p2 rust
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
registrystack/registry-stack#1936 ·
Maintainers usually reply within 1 day
-
area:release area:scheduling bug criticality:p3 triage:needs-implementation
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
registrystack/registry-stack#1909 ·
Maintainers usually reply within 1 day
-
area:release bug
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
registrystack/registry-stack#1874 ·
Maintainers usually reply within 1 day
-
area:breg bug criticality:p3
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
registrystack/registry-stack#1851 ·
Maintainers usually reply within 1 day
All issues in registrystack/registry-stack
Similar issues
-
[Feature]: [P3] engine-rs: the package source hash should ignore line endings and untracked filesOpen
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
maniator/verticopolis#880 ·
Maintainers usually reply within 1 day
-
documentation
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
Maintainers usually reply within 3 days
-
defect
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 2 days