Repository navigation
Give CLI package queries two minutes and name the timeout when it fires - #5583
Merged
Gabriel Dufresne (GabrielDuf) merged 1 commit intoOct 23, 2026
Merged
Conversation
The CLI gave every GET under /packages/ (search, details, versions, installed, updates) 30 seconds. On Windows CI runners an npm search or details call routinely takes 6-15 s and sometimes passes 30 s, so cli-headless-e2e failed intermittently on `package search/details --manager npm` and passed on re-run. Users on a slow network hit the same limit. When the limit fired, the cancellation surfaced as the bare "The operation was canceled.", which reads like a cancelled package operation. A client-side timeout now raises a TimeoutException naming the request and the limit, and the status probe still treats it as an unreachable endpoint. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
The scoped changes preserve existing action deadlines and error-handling behavior, with no blocking issues identified.
No open issues 🎉
What changed in this PR
This PR gives CLI package queries more time to complete and makes client-side timeout errors easier to distinguish from cancelled package operations.
Changes:
- Extends read-only package query deadlines from 30 seconds to two minutes, preserving five-minute action deadlines.
- Reports expired deadlines with the request method, path, and timeout duration, and applies the deadline to response-body reads.
- Treats the new
TimeoutExceptionas a connectivity failure for endpoint liveness checks.
| File | Description |
|---|---|
src/UniGetUI.Interface.IpcApi/IpcClient.cs |
Adjusts query deadlines and improves timeout reporting and classification. |
Review effort: Balanced
There was a problem hiding this comment.
🤖 Pull request was approved automatically: the AI review is complete and all its review threads are resolved. 🎉
Integration Details
{
"deliveryId": "47f99090-cee0-11f1-824a-f2ff1b8f13b4",
"headSha": "2e9beef860b1b3c3cc22cea0ff11fa4762d84f21",
"reviewer": "copilot-pull-request-reviewer[bot]"
}
Gabriel Dufresne (GabrielDuf)
deleted the
fix/ipc-package-query-timeout
branch
October 23, 2026 13:13
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
cli-headless-e2efails intermittently on the Windows jobs and passes on re-run, always with:(or the same on
package details --manager npm). That message is not npm's: it is the CLI's own client-side timeout.IpcClient.GetRequestTimeoutgave everyGET /packages/*request 30 s. In green Windows runs npm search takes 1–7 s and npm details 6–15 s; in the failing runs the daemon log shows the npm request starting and never finishing before the job ends. Every failure in the last 8 failed runs was a Windows npm search/details call. Users on a slow network hit the same limit through the CLI.What changed (
IpcClient.cs)GET /packages/*: search, details, versions, installed, updates) now get 2 minutes instead of 30 s. Package actions keep their 5 minutes.TimeoutExceptionnaming the request and the limit (UniGetUI did not answer GET …/packages/search within 120 seconds.) instead of surfacing the bareThe operation was canceled., which read like a cancelled package operation. The CLI exit code stays 1.TimeoutExceptionwas added toIsConnectivityException, so the/statusprobe and registration liveness checks still treat a timeout as an unreachable endpoint.Notes for reviewers
package repair --manager npm) is a different case: that POST already has 5 minutes and normally takes ~1 s. With this change a client timeout and a server-reported cancelled operation are now distinguishable in the output.IpcClientcan only be constructed against a registered daemon. The 49 existing IPC tests pass, and bothdotnet formatpasses are clean.🤖 Generated with Claude Code