René's URL Explorer Experiment


Title: Handle network errors when streaming the CodeQL bundle download by henrymercer · Pull Request #4061 · github/codeql-action · GitHub

Open Graph Title: Handle network errors when streaming the CodeQL bundle download by henrymercer · Pull Request #4061 · github/codeql-action

X Title: Handle network errors when streaming the CodeQL bundle download by henrymercer · Pull Request #4061 · github/codeql-action

Description: When we stream the download and extraction of the CodeQL bundle, a network error such as ECONNRESET terminates the init Action rather than falling back to downloading the bundle before extracting it. This is because we never attached an error listener to the request returned by https.get, so follow-redirects emits the error as an unhandled error event, which is fatal. See #3367. Attaching the listener is enough to turn the crash into the fallback path we already have. This PR also switches the pipe from the response into tar over to stream.pipeline, since tar.pipe(stdin).on("error", ...) only listens for errors on tar's standard input: an error on the response itself was unhandled, and would have left tar waiting indefinitely on a pipe that was never going to be closed. Finally, we abort the request if it stalls for five minutes so that a hung connection can't take the whole job with it. I've deliberately not added a retry loop around the streaming attempt: toolcache.downloadTool, which we fall back to, already retries three times with exponential backoff and already avoids retrying non-transient status codes. The bug here was never that we don't retry, it's that we crashed before we got the chance. Risk assessment For internal use only. Please select the risk level of this change: Low risk: This only affects what happens when the streaming download fails, which currently means the job dies. Both new failure paths are covered by unit tests that were confirmed to fail without the fix. Which use cases does this change impact? Workflow types: Advanced setup - Impacts users who have custom CodeQL workflows. Managed - Impacts users with dynamic workflows (Default Setup, Code Quality, ...). Products: Code Scanning - The changes impact analyses when analysis-kinds: code-scanning. Code Quality - The changes impact analyses when analysis-kinds: code-quality. Other first-party - The changes impact other first-party analyses. Environments: Dotcom - Impacts CodeQL workflows on github.com and/or GitHub Enterprise Cloud with Data Residency. GHES - Impacts CodeQL workflows on GitHub Enterprise Server. How did/will you validate this change? Unit tests - New tests simulate a mid-connection ECONNRESET and assert that we fall back rather than crashing. End-to-end tests - The existing bundle toolcache PR checks continue to exercise the streaming download on Linux. If something goes wrong after this change is released, what are the mitigation and rollback strategies? Rollback - Change can only be disabled by rolling back the release or releasing a new version with a fix. How will you know if something goes wrong after this change is released? Telemetry - Streaming failures now surface as the existing fallback warning and show up in the download duration status field, rather than as a hard job failure. Are there any special considerations for merging or releasing this change? No special considerations - This change can be merged at any time. Merge / deployment checklist Confirm this change is backwards compatible with existing workflows. Consider adding a changelog entry for this change. Confirm the readme and docs have been updated if necessary.

Open Graph Description: When we stream the download and extraction of the CodeQL bundle, a network error such as ECONNRESET terminates the init Action rather than falling back to downloading the bundle before extracting i...

X Description: When we stream the download and extraction of the CodeQL bundle, a network error such as ECONNRESET terminates the init Action rather than falling back to downloading the bundle before extracting i...

Opengraph URL: https://github.com/github/codeql-action/pull/4061

X: @github

direct link

Domain: github.com

react-profiling0
react-import-mapreact,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf
route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:31351bdc-a4c4-7180-b4b2-d82db228d86d
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idEBAA:C8434:6E6EFC:8F0B39:6AED2F92
html-safe-noncec9d110514ba603ac0aa29493dcaba8a005f376dbc84aacff598b39f3702f1287
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFQkFBOkM4NDM0OjZFNkVGQzo4RjBCMzk6NkFFRDJGOTIiLCJ2aXNpdG9yX2lkIjoiMTk3MjM1NzI3NjM4ODAyMzIyIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac5f1e020be61192f8a65df3fa0a607275ea00b4b11acfdaaacbaaa5ad51d543be
hovercard-subject-tagpull_request:4171722313
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/github/codeql-action/pull/4061/files
twitter:imagehttps://avatars.githubusercontent.com/u/14129055?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/14129055?s=400&v=4
og:image:altWhen we stream the download and extraction of the CodeQL bundle, a network error such as ECONNRESET terminates the init Action rather than falling back to downloading the bundle before extracting i...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Nonee51d0b7b5ab34b1688c05b54c3ed17b8658b2fa9bca973a9c740683ccb12cf4a
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/github/codeql-action git https://github.com/github/codeql-action.git
octolytics-dimension-user_id9919
octolytics-dimension-user_logingithub
octolytics-dimension-repository_id259445878
octolytics-dimension-repository_nwogithub/codeql-action
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id259445878
octolytics-dimension-repository_network_root_nwogithub/codeql-action
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release59ebb7b901cc154ecc179a44f266fcf69f343b30
ui-targetcanary-1
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/github/codeql-action/pull/4061/files#start-of-content
https://github.com/
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgithub%2Fcodeql-action%2Fpull%2F4061%2Ffiles
GitHubRepository hosting, code review, and collaborationhttps://github.com/platform
CopilotAI coding agent for tasks, projects, and automated workhttps://github.com/features/copilot
ActionsCI/CD and automationhttps://github.com/features/actions
Code QualityQuality analysis, fixes, and enforcementhttps://github.com/features/code-quality
CodespacesCloud development environmentshttps://github.com/features/codespaces
Code SecurityVulnerability detection and remediationhttps://github.com/security/advanced-security/code-security
Secret ProtectionSecret scanning and leak preventionhttps://github.com/security/advanced-security/secret-protection
All Featureshttps://github.com/features
Documentationhttps://docs.github.com/en
Traininghttps://learn.github.com/skills
Certificationshttps://learn.github.com/credentials
Build with Copilothttps://github.com/features/ai
Customize Copilothttps://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-copilot-overview
Integrationshttps://github.com/marketplace
Trending reposhttps://github.com/trending
GitHub Sponsorshttps://github.com/open-source/sponsors
Developer articleshttps://github.com/resources/articles
ChangelogYour source for the latest features, improvements, and fixes across GitHub products, all in one place.https://github.blog/changelog/
Enterpriseshttps://github.com/enterprise
Teamhttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
See all industrieshttps://github.com/solutions/industry
Why GitHubhttps://github.com/why-github
Customer Storieshttps://github.com/customer-stories
Business insightshttps://github.com/solutions/executive-insights
Trust Centerhttps://github.com/trust-center
GitHub Advanced SecurityEnterprise-grade code securityhttps://github.com/security/advanced-security
Copilot for businessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Documentationhttps://docs.github.com/en
Resource centerhttps://github.com/resources
Bloghttps://github.blog/
Events & webinarshttps://github.com/resources/events
Community Forumhttps://github.com/orgs/community/discussions
Customer Storieshttps://github.com/customer-stories
Integrationshttps://github.com/marketplace
Customer supporthttps://help.github.com/
Traininghttps://learn.github.com/skills
GitHub Statushttps://www.githubstatus.com/
Abouthttps://github.com/about
Partnershttps://github.com/partners
Changeloghttps://github.blog/changelog/
GitHub UniverseThe event for developers, by developers — talks, workshops, and what’s next for GitHub.https://githubuniverse.com/
Pricinghttps://github.com/pricing
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgithub%2Fcodeql-action%2Fpull%2F4061%2Ffiles
Sign uphttps://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=github%2Fcodeql-action
Reloadhttps://github.com/github/codeql-action/pull/4061/files
Reloadhttps://github.com/github/codeql-action/pull/4061/files
Reloadhttps://github.com/github/codeql-action/pull/4061/files
githubhttps://github.com/github
codeql-actionhttps://github.com/github/codeql-action
Codehttps://github.com/github/codeql-action
Issues165 (165)https://github.com/github/codeql-action/issues
Pull requests41 (41)https://github.com/github/codeql-action/pulls
Actionshttps://github.com/github/codeql-action/actions
Security and quality2 (2)https://github.com/github/codeql-action/security
Insightshttps://github.com/github/codeql-action/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fgithub%2Fcodeql-action%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fgithub%2Fcodeql-action%2Fissues%2Fnew%2Fchoose
mbghttps://github.com/mbg
mainhttps://github.com/github/codeql-action/tree/main
henrymercer/turbo-systemhttps://github.com/github/codeql-action/tree/henrymercer/turbo-system
Conversation 2 https://github.com/github/codeql-action/pull/4061
Commits 2 https://github.com/github/codeql-action/pull/4061/commits
Checks 222 https://github.com/github/codeql-action/pull/4061/checks
Files changed https://github.com/github/codeql-action/pull/4061/files
Please reload this pagehttps://github.com/github/codeql-action/pull/4061/files
Handle network errors when streaming the CodeQL bundle download https://github.com/github/codeql-action/pull/4061/files#top
Show all changes 2 commits https://github.com/github/codeql-action/pull/4061/files
2d3b351 Handle network errors when streaming the CodeQL bundle download Jul 30, 2026 https://github.com/github/codeql-action/pull/4061/commits/2d3b351ea6452a9b21346f8d64567e5b833924de
155e522 Link the PR from the changelog entry Jul 30, 2026 https://github.com/github/codeql-action/pull/4061/commits/155e5229973b426bd1ae2f83bb1bf42417fa2a8f
Clear filters https://github.com/github/codeql-action/pull/4061/files
Please reload this pagehttps://github.com/github/codeql-action/pull/4061/files
Please reload this pagehttps://github.com/github/codeql-action/pull/4061/files
CHANGELOG.md https://github.com/github/codeql-action/pull/4061/files#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed
entry-points.js https://github.com/github/codeql-action/pull/4061/files#diff-73697317a7dd14441dcfb24bc586f637ae2b815b5e503a05a81816be74fcd815
tar.test.ts https://github.com/github/codeql-action/pull/4061/files#diff-7c358723f47de66e2654a65dbf0b92c36a90823db3695e32c5c2f9922590ffd1
tar.ts https://github.com/github/codeql-action/pull/4061/files#diff-2677181fcd0a39c1ac9a07cf9025c160d3cff5796931d88b9acccae8e6897a76
tools-download.test.ts https://github.com/github/codeql-action/pull/4061/files#diff-ebadd2e3dcb51075cbd718340c3d85b2c75312b8849c4b7a23f3bb78a63925fe
tools-download.ts https://github.com/github/codeql-action/pull/4061/files#diff-cd03b91ca9b1e470e1f8e42a40c548162a7bea2343ff7d257aeb58747cbee7a3
https://github.com/github/codeql-action/blob/main/CODEOWNERS#L1
CHANGELOG.mdhttps://github.com/github/codeql-action/pull/4061/files#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed
View file https://github.com/github/codeql-action/blob/155e5229973b426bd1ae2f83bb1bf42417fa2a8f/CHANGELOG.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/github/codeql-action/pull/4061/{{ revealButtonHref }}
https://github.com/github/codeql-action/pull/4061/files#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed
https://github.com/github/codeql-action/pull/4061/files#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed
https://github.com/github/codeql-action/blob/main/CODEOWNERS#L1
lib/entry-points.jshttps://github.com/github/codeql-action/pull/4061/files#diff-73697317a7dd14441dcfb24bc586f637ae2b815b5e503a05a81816be74fcd815
View file https://github.com/github/codeql-action/blob/155e5229973b426bd1ae2f83bb1bf42417fa2a8f/lib/entry-points.js
Open in desktop https://desktop.github.com
Please reload this pagehttps://github.com/github/codeql-action/pull/4061/files
https://github.com/github/codeql-action/blob/main/CODEOWNERS#L1
src/tar.test.tshttps://github.com/github/codeql-action/pull/4061/files#diff-7c358723f47de66e2654a65dbf0b92c36a90823db3695e32c5c2f9922590ffd1
View file https://github.com/github/codeql-action/blob/155e5229973b426bd1ae2f83bb1bf42417fa2a8f/src/tar.test.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/github/codeql-action/pull/4061/{{ revealButtonHref }}
https://github.com/github/codeql-action/blob/main/CODEOWNERS#L1
src/tar.tshttps://github.com/github/codeql-action/pull/4061/files#diff-2677181fcd0a39c1ac9a07cf9025c160d3cff5796931d88b9acccae8e6897a76
View file https://github.com/github/codeql-action/blob/155e5229973b426bd1ae2f83bb1bf42417fa2a8f/src/tar.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/github/codeql-action/pull/4061/{{ revealButtonHref }}
https://github.com/github/codeql-action/pull/4061/files#diff-2677181fcd0a39c1ac9a07cf9025c160d3cff5796931d88b9acccae8e6897a76
https://github.com/github/codeql-action/pull/4061/files#diff-2677181fcd0a39c1ac9a07cf9025c160d3cff5796931d88b9acccae8e6897a76
https://github.com/github/codeql-action/blob/main/CODEOWNERS#L1
src/tools-download.test.tshttps://github.com/github/codeql-action/pull/4061/files#diff-ebadd2e3dcb51075cbd718340c3d85b2c75312b8849c4b7a23f3bb78a63925fe
View file https://github.com/github/codeql-action/blob/155e5229973b426bd1ae2f83bb1bf42417fa2a8f/src/tools-download.test.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/github/codeql-action/pull/4061/{{ revealButtonHref }}
https://github.com/github/codeql-action/pull/4061/files#diff-ebadd2e3dcb51075cbd718340c3d85b2c75312b8849c4b7a23f3bb78a63925fe
https://github.com/github/codeql-action/pull/4061/files#diff-ebadd2e3dcb51075cbd718340c3d85b2c75312b8849c4b7a23f3bb78a63925fe
https://github.com/github/codeql-action/blob/main/CODEOWNERS#L1
src/tools-download.tshttps://github.com/github/codeql-action/pull/4061/files#diff-cd03b91ca9b1e470e1f8e42a40c548162a7bea2343ff7d257aeb58747cbee7a3
View file https://github.com/github/codeql-action/blob/155e5229973b426bd1ae2f83bb1bf42417fa2a8f/src/tools-download.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/github/codeql-action/pull/4061/{{ revealButtonHref }}
https://github.com/github/codeql-action/pull/4061/files#diff-cd03b91ca9b1e470e1f8e42a40c548162a7bea2343ff7d257aeb58747cbee7a3
https://github.com/github/codeql-action/pull/4061/files#diff-cd03b91ca9b1e470e1f8e42a40c548162a7bea2343ff7d257aeb58747cbee7a3
https://github.com/github/codeql-action/pull/4061/files#diff-cd03b91ca9b1e470e1f8e42a40c548162a7bea2343ff7d257aeb58747cbee7a3
https://github.com/github/codeql-action/pull/4061/files#diff-cd03b91ca9b1e470e1f8e42a40c548162a7bea2343ff7d257aeb58747cbee7a3
https://github.com/github/codeql-action/pull/4061/files#diff-cd03b91ca9b1e470e1f8e42a40c548162a7bea2343ff7d257aeb58747cbee7a3
Please reload this pagehttps://github.com/github/codeql-action/pull/4061/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.