Add --timeout option to logs command for MCP server timeout prevention #2058
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.
Problem
The
logscommand can take a long time to download workflow artifacts, especially when fetching logs for multiple runs or workflows with large artifacts. When running as an MCP server, this can cause timeouts that prevent the tool from completing successfully.Solution
This PR adds a
--timeoutoption to thelogscommand that limits execution time by stopping the download process when the specified time limit is reached. Any runs that were successfully downloaded before the timeout are processed and returned, providing partial results rather than failing completely.Key Changes
--timeoutflag: Accepts timeout value in seconds (0 = no timeout, default)Implementation Details
The timeout is implemented using
time.Since()to track elapsed time at the start of each download iteration. When the elapsed time exceeds the specified timeout:In the MCP server, the logs tool automatically applies a 50-second timeout unless explicitly overridden via the
timeoutparameter in the tool arguments.Usage Examples
Command Line:
MCP Server:
{ "workflow_name": "test-workflow", "count": 10 // Uses 50 second timeout by default }Or override the default:
{ "workflow_name": "test-workflow", "count": 10, "timeout": 120 }Testing
Fixes the issue where long-running log downloads could timeout when running as an MCP server.
Original prompt
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.