node-gyp: Random HTTP 500 statuses or ECONNRESET when node-gyp fetches dependencies
This is occurring across multiple node versions, architectures and system types. Our build system regularly runs node gyp in its build for our NPM packages across every version of nodejs and about 5% of builds are subject to a 500 status failure or an ECONNRESET when setting up node-gyp.
This strikes me as an issue with the server which hosts the node gyp files. Is there possibly a way around downloading these node-gyp dependencies each time? Or maybe something that can be done to fix the instability there?
These builds all took place inside of Amazon server instances.
Here is an instance on node 14 with node gyp 7.1.2 on a Windows Server 2019 machine.
04:08:09 gyp info ok
04:08:13 Now using node v14.21.2 (64-bit)
04:08:19 gyp info it worked if it ends with ok
04:08:19 gyp info using node-gyp@7.1.2
04:08:19 gyp info using node@14.21.2 | win32 | x64
04:08:19 gyp info find Python using Python version 3.8.5 found at "C:\Python38\python3.exe"
04:08:23 gyp http GET https://nodejs.org/download/release/v14.21.2/node-v14.21.2-headers.tar.gz
04:08:23 gyp http 200 https://nodejs.org/download/release/v14.21.2/node-v14.21.2-headers.tar.gz
04:08:25 gyp http GET https://nodejs.org/download/release/v14.21.2/SHASUMS256.txt
04:08:25 gyp http GET https://nodejs.org/download/release/v14.21.2/win-x86/node.lib
04:08:25 gyp http GET https://nodejs.org/download/release/v14.21.2/win-x64/node.lib
04:08:25 gyp http GET https://nodejs.org/download/release/v14.21.2/win-arm64/node.lib
04:08:25 gyp http 200 https://nodejs.org/download/release/v14.21.2/SHASUMS256.txt
04:08:26 gyp http 500 https://nodejs.org/download/release/v14.21.2/win-arm64/node.lib
04:08:26 gyp WARN install got an error, rolling back install
04:08:26 gyp ERR! configure error
04:08:26 gyp ERR! stack Error: 500 status code downloading arm64 node.lib
04:08:26 gyp ERR! stack at Request.<anonymous> (C:\nvm\v14.21.2\node_modules\node-gyp\lib\install.js:335:22)
04:08:26 gyp ERR! stack at Request.emit (events.js:412:35)
04:08:26 gyp ERR! stack at Request.onRequestResponse (C:\nvm\v14.21.2\node_modules\node-gyp\node_modules\request\request.js:1059:10)
04:08:26 gyp ERR! stack at ClientRequest.emit (events.js:400:28)
04:08:26 gyp ERR! stack at HTTPParser.parserOnIncomingClient (_http_client.js:647:27)
04:08:26 gyp ERR! stack at HTTPParser.parserOnHeadersComplete (_http_common.js:127:17)
04:08:26 gyp ERR! stack at TLSSocket.socketOnData (_http_client.js:515:22)
04:08:26 gyp ERR! stack at TLSSocket.emit (events.js:400:28)
04:08:26 gyp ERR! stack at addChunk (internal/streams/readable.js:293:12)
04:08:26 gyp ERR! stack at readableAddChunk (internal/streams/readable.js:267:9)
04:08:26 gyp ERR! System Windows_NT 10.0.17763
04:08:26 gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--msvs_version=2017" "--devdir=C:\\tmp\\.gyp"
Here is an instance of it occurring on Linux ARM64 with electron & node 16 and node-gyp 9.2.0.
02:06:10 gyp info it worked if it ends with ok
02:06:10 gyp info using node-gyp@9.2.0
02:06:10 gyp info using node@16.19.0 | linux | arm64
02:06:10 gyp info find Python using Python version 3.6.8 found at "/usr/bin/python3"
02:06:10 gyp http GET https://electronjs.org/headers/v9.0.0/node-v9.0.0-headers.tar.gz
02:06:11 gyp WARN install got an error, rolling back install
02:06:11 gyp ERR! configure error
02:06:11 gyp ERR! stack FetchError: request to https://www.electronjs.org/headers/v9.0.0/node-v9.0.0-headers.tar.gz failed, reason: read ECONNRESET
02:06:11 gyp ERR! stack at ClientRequest.<anonymous> (/home/pdftron/.nvm/versions/node/v16.19.0/lib/node_modules/node-gyp/node_modules/minipass-fetch/lib/index.js:130:14)
02:06:11 gyp ERR! stack at ClientRequest.emit (node:events:513:28)
02:06:11 gyp ERR! stack at TLSSocket.socketErrorListener (node:_http_client:494:9)
02:06:11 gyp ERR! stack at TLSSocket.emit (node:events:525:35)
02:06:11 gyp ERR! stack at emitErrorNT (node:internal/streams/destroy:157:8)
02:06:11 gyp ERR! stack at emitErrorCloseNT (node:internal/streams/destroy:122:3)
02:06:11 gyp ERR! stack at processTicksAndRejections (node:internal/process/task_queues:83:21)
02:06:11 gyp ERR! System Linux 5.10.0-12-cloud-arm64
02:06:11 gyp ERR! command "/home/pdftron/.nvm/versions/node/v16.19.0/bin/node" "/home/pdftron/.nvm/versions/node/v16.19.0/bin/node-gyp" "rebuild" "--target=v9.0.0" "--dist-url=https://electronjs.org/headers" "--openssl_fips=" "--arch=arm"
02:06:11 gyp ERR! cwd /home/admin/jenkins/workspace/Node_Linux_Electron_Arm64_master/WebPDFWorker/Node.js/Packaging
02:06:11 gyp ERR! node -v v16.19.0
02:06:11 gyp ERR! node-gyp -v v9.2.0
02:06:11 gyp ERR! not ok
And on Linux x64 with node 9, node-gyp 5.1.1
01:50:03 Now using node v9.11.2 (npm v5.6.0)
01:50:03 gyp info it worked if it ends with ok
01:50:03 gyp info using node-gyp@5.1.1
01:50:03 gyp info using node@9.11.2 | linux | x64
01:50:03 gyp info find Python using Python version 2.7.5 found at "/usr/bin/python"
01:50:03 gyp http GET https://nodejs.org/download/release/v9.11.2/node-v9.11.2-headers.tar.gz
01:50:03 gyp http 500 https://nodejs.org/download/release/v9.11.2/node-v9.11.2-headers.tar.gz
01:50:03 gyp WARN install got an error, rolling back install
01:50:03 gyp ERR! configure error
01:50:03 gyp ERR! stack Error: 500 response downloading https://nodejs.org/download/release/v9.11.2/node-v9.11.2-headers.tar.gz
01:50:03 gyp ERR! stack at Request.<anonymous> (/home/pdftron/.nvm/versions/node/v9.11.2/lib/node_modules/node-gyp/lib/install.js:188:14)
01:50:03 gyp ERR! stack at Request.emit (events.js:185:15)
01:50:03 gyp ERR! stack at Request.onRequestResponse (/home/pdftron/.nvm/versions/node/v9.11.2/lib/node_modules/node-gyp/node_modules/request/request.js:1059:10)
01:50:03 gyp ERR! stack at ClientRequest.emit (events.js:180:13)
01:50:03 gyp ERR! stack at HTTPParser.parserOnIncomingClient (_http_client.js:540:21)
01:50:03 gyp ERR! stack at HTTPParser.parserOnHeadersComplete (_http_common.js:117:17)
01:50:03 gyp ERR! stack at TLSSocket.socketOnData (_http_client.js:445:20)
01:50:03 gyp ERR! stack at TLSSocket.emit (events.js:180:13)
01:50:03 gyp ERR! stack at addChunk (_stream_readable.js:274:12)
01:50:03 gyp ERR! stack at readableAddChunk (_stream_readable.js:261:11)
01:50:03 gyp ERR! System Linux 5.10.0-19-cloud-amd64
01:50:03 gyp ERR! command "/home/pdftron/.nvm/versions/node/v9.11.2/bin/node" "/home/pdftron/.nvm/versions/node/v9.11.2/bin/node-gyp" "rebuild"
01:50:03 gyp ERR! cwd /home/admin/jenkins/workspace/PDFNetNode_Linux_master/WebPDFWorker/Node.js/Packaging
01:50:03 gyp ERR! node -v v9.11.2
01:50:03 gyp ERR! node-gyp -v v5.1.1
01:50:03 gyp ERR! not ok
These were just the instances I was able to find within the last 2 weeks of our daily build system. If you want more specific details about each machine I can provide those. The Linux builds are all run within Docker containers.
About this issue
- Original URL
- State: open
- Created a year ago
- Reactions: 1
- Comments: 18 (8 by maintainers)
Commits related to this issue
- win,install: only download target_arch node.lib Instead of downloading node.lib for all architectures, just download the one that will be needed. Install.js changed to enable downloading just node.li... — committed to JaneaSystems/node-gyp by StefanStojanovic a year ago
- win,install: only download target_arch node.lib Instead of downloading node.lib for all architectures, just download the one that will be needed. Install.js changed to enable downloading just node.li... — committed to JaneaSystems/node-gyp by StefanStojanovic a year ago
- win,install: only download target_arch node.lib (#2857) Instead of downloading node.lib for all architectures, just download the one that will be needed. Install.js changed to enable downloading jus... — committed to nodejs/node-gyp by StefanStojanovic a year ago
- win,install: only download target_arch node.lib (#2857) Instead of downloading node.lib for all architectures, just download the one that will be needed. Install.js changed to enable downloading jus... — committed to cclauss/node-gyp by StefanStojanovic a year ago
- Update node-gyp to 10.0.1 (#2) * gyp: update gyp to 0.2.1 PR-URL: https://github.com/nodejs/node-gyp/pull/2092 Reviewed-By: Rod Vagg <rod@vagg.org> * deps: replace mkdirp with {recursive} mkdi... — committed to nodejs-mobile/nodejs-mobile-gyp by jaimecbernardo 4 months ago
A quick update on this topic: I’ve investigated this issue more and found a way to improve Windows installation to decrease network traffic. I have a PoC, but since it changes the
install.js
script, I’m waiting for https://github.com/nodejs/node-gyp/pull/2846 to land. Afterward, I’ll rebase, resolve potential conflicts and open the PR.