Page MenuHomePhabricator

"composer install" flaky in CI due to "Failed to connect to github.com port 443: Connection timed out"
Open, HighPublic

Description

I've noticed over the weekend that we're getting quite an increase in jobs failing with "Failed to connect to github.com port 443: Connection timed out"....

16:56:03 In Git.php line 473:
16:56:03                                                                                
16:56:03   [RuntimeException]                                                           
16:56:03   Failed to clone https://github.com/wikimedia/composer-merge-plugin.git via   
16:56:03   https, ssh protocols, aborting.                                              
16:56:03                                                                                
16:56:03   - https://github.com/wikimedia/composer-merge-plugin.git                     
16:56:03     Cloning into bare repository '/cache/composer/vcs/https---github.com-wiki  
16:56:03   media-composer-merge-plugin.git'...                                          
16:56:03     fatal: unable to access 'https://github.com/wikimedia/composer-merge-plug  
16:56:03   in.git/': Failed to connect to github.com port 443: Connection timed out     
16:56:03                                                                                
16:56:03   - git@github.com:wikimedia/composer-merge-plugin.git                         
16:56:03     Cloning into bare repository '/cache/composer/vcs/https---github.com-wiki  
16:56:03   media-composer-merge-plugin.git'...                                          
16:56:03     error: cannot run ssh: No such file or directory                           
16:56:03     fatal: unable to fork                                                      
16:56:03                                                                                
16:56:03 
16:56:03 Exception trace:
16:56:03   at phar:///usr/bin/composer/src/Composer/Util/Git.php:473
16:56:03  Composer\Util\Git->throwException() at phar:///usr/bin/composer/src/Composer/Util/Git.php:93
16:56:03  Composer\Util\Git->runCommand() at phar:///usr/bin/composer/src/Composer/Util/Git.php:296
16:56:03  Composer\Util\Git->syncMirror() at phar:///usr/bin/composer/src/Composer/Util/Git.php:329
16:56:03  Composer\Util\Git->fetchRefOrSyncMirror() at phar:///usr/bin/composer/src/Composer/Downloader/GitDownloader.php:78
16:56:03  Composer\Downloader\GitDownloader->doDownload() at phar:///usr/bin/composer/src/Composer/Downloader/VcsDownloader.php:73
16:56:03  Composer\Downloader\VcsDownloader->download() at phar:///usr/bin/composer/src/Composer/Downloader/DownloadManager.php:223
16:56:03  Composer\Downloader\DownloadManager->Composer\Downloader\{closure}() at phar:///usr/bin/composer/src/Composer/Downloader/DownloadManager.php:216
16:56:03  Composer\Downloader\DownloadManager::Composer\Downloader\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
16:56:03  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:173
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
16:56:03  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
16:56:03  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
16:56:03  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:180
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
16:56:03  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
16:56:03  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
16:56:03  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:177
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
16:56:03  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
16:56:03  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
16:56:03  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:180
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
16:56:03  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
16:56:03  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
16:56:03  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:177
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
16:56:03  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
16:56:03  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
16:56:03  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:180
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
16:56:03  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
16:56:03  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
16:56:03  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:177
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
16:56:03  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
16:56:03  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
16:56:03  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:180
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
16:56:03  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
16:56:03  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
16:56:03  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:180
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
16:56:03  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
16:56:03  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
16:56:03  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:180
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
16:56:03  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
16:56:03  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
16:56:03  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/src/Composer/Util/Http/CurlDownloader.php:664
16:56:03  Composer\Util\Http\CurlDownloader->rejectJob() at phar:///usr/bin/composer/src/Composer/Util/Http/CurlDownloader.php:485
16:56:03  Composer\Util\Http\CurlDownloader->tick() at phar:///usr/bin/composer/src/Composer/Util/HttpDownloader.php:392
16:56:03  Composer\Util\HttpDownloader->countActiveJobs() at phar:///usr/bin/composer/src/Composer/Util/Loop.php:88
16:56:03  Composer\Util\Loop->wait() at phar:///usr/bin/composer/src/Composer/Installer/InstallationManager.php:430
16:56:03  Composer\Installer\InstallationManager->waitOnPromises() at phar:///usr/bin/composer/src/Composer/Installer/InstallationManager.php:286
16:56:03  Composer\Installer\InstallationManager->downloadAndExecuteBatch() at phar:///usr/bin/composer/src/Composer/Installer/InstallationManager.php:218
16:56:03  Composer\Installer\InstallationManager->execute() at phar:///usr/bin/composer/src/Composer/Installer.php:821
16:56:03  Composer\Installer->doInstall() at phar:///usr/bin/composer/src/Composer/Installer.php:646
16:56:03  Composer\Installer->doUpdate() at phar:///usr/bin/composer/src/Composer/Installer.php:292
16:56:03  Composer\Installer->run() at phar:///usr/bin/composer/src/Composer/Command/UpdateCommand.php:251
16:56:03  Composer\Command\UpdateCommand->execute() at phar:///usr/bin/composer/vendor/symfony/console/Command/Command.php:298
16:56:03  Symfony\Component\Console\Command\Command->run() at phar:///usr/bin/composer/vendor/symfony/console/Application.php:1040
16:56:03  Symfony\Component\Console\Application->doRunCommand() at phar:///usr/bin/composer/vendor/symfony/console/Application.php:301
16:56:03  Symfony\Component\Console\Application->doRun() at phar:///usr/bin/composer/src/Composer/Console/Application.php:385
16:56:03  Composer\Console\Application->doRun() at phar:///usr/bin/composer/vendor/symfony/console/Application.php:171
16:56:03  Symfony\Component\Console\Application->run() at phar:///usr/bin/composer/src/Composer/Console/Application.php:145
16:56:03  Composer\Console\Application->run() at phar:///usr/bin/composer/bin/composer:93
16:56:03  require() at /usr/bin/composer:29

Event Timeline

Reedy triaged this task as High priority.Apr 8 2024, 3:58 PM
hashar subscribed.

We run composer update,install,require with --prefer-dist and thus I don't see why composer would end up doing a git clone. Or maybe fetching the distribution tarball failed and it fallbacks to git? If I look at the stacktrace, a summary of the sequence is:

Composer\Installer->doInstall()
Composer\Util\Http\CurlDownloader->rejectJob()
Composer\Downloader\DownloadManager::Composer\Downloader\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
Composer\Downloader\VcsDownloader->download()

So I think it does try to fetch from dist, fails without any error (rejected promise is handled) and then fallback to git.

Then reading the code it should have written a warning similar to Now trying to download from vcs.

My guess is GitHub was not available at that time? Eventually composer could be made to not fallback (something such as --dist-only). I don't think there is much we can do here.

I wonder if these are related:

https://www.githubstatus.com/incidents/syg5c6b5ls76 and https://www.githubstatus.com/incidents/6tgmk1j7b4rn

Both are "We are investigating reports of degraded performance."

Unfortunately not enough info to actually make a proper correlation...

Screenshot 2024-04-09 at 10.19.34.png (1×1 px, 173 KB)

Of course, the other question... Do we not have some sort composer caching?

It's definitely annoying when it's failing on packages/repos we use a lot, especially for things that do not change often...

There should be some kind of cache yes. The CI image/jobs have XDG_CACHE_HOME set and it is honored by Castor. That is then rsync to a central WMCS instanced and restored when a job starts.

Then we have renamed all the jobs last Friday (to get rid of the -docker suffix in the job name) which caused all caches to not be effective anymore (until a change get merged which saves the cache). Thus I guess we ended doing more connections than usual and maybe GitHub automatically disabled us?

Still happening...

https://integration.wikimedia.org/ci/job/mediawiki-quibble-composer-mysql-php74/237/console

14:06:55 [21.0MiB/56.92s]     Failed to download wikimedia/composer-merge-plugin from dist: curl error 28 while downloading https://api.github.com/repos/wikimedia/composer-merge-plugin/zipball/8ca2ed8ab97c8ebce6b39d9943e9909bb4f18912: Connection timed out after 10003 milliseconds
14:06:55 [21.0MiB/56.92s]     Now trying to download from source
14:06:55 [21.0MiB/56.93s]   - Syncing wikimedia/composer-merge-plugin (v2.0.1) into cache
14:09:04 [21.0MiB/186.25s]     Failed to download composer/pcre from dist: curl error 28 while downloading https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8: Connection timed out after 10002 milliseconds
14:09:04 [21.0MiB/186.25s]     Now trying to download from source
14:09:04 [21.0MiB/186.25s]   - Syncing composer/pcre (3.1.3) into cache
14:10:17 [20.9MiB/259.11s]     Failed to download cssjanus/cssjanus from dist: curl error 28 while downloading https://api.github.com/repos/wikimedia/php-cssjanus/zipball/befd1eb7b1e70ee2cd71cd5b9a86ff250d2e8423: Connection timed out after 10002 milliseconds
14:10:17 [20.9MiB/259.11s]     Now trying to download from source
14:10:17 [20.9MiB/259.11s]   - Syncing cssjanus/cssjanus (v2.1.1) into cache
14:10:18 [20.8MiB/260.20s]     Failed to download psr/log from dist: curl error 28 while downloading https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11: Connection timed out after 10002 milliseconds
14:10:18 [20.8MiB/260.20s]     Now trying to download from source
14:10:18 [20.8MiB/260.20s]   - Syncing psr/log (1.1.4) into cache
14:10:18 [20.7MiB/260.80s]     Failed to download psr/cache from dist: curl error 28 while downloading https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8: Connection timed out after 208105 milliseconds
14:10:18 [20.7MiB/260.80s]     Now trying to download from source
14:10:18 [20.7MiB/260.80s]   - Syncing psr/cache (1.0.1) into cache
14:10:19 [20.6MiB/261.12s]     Failed to download doctrine/deprecations from dist: curl error 28 while downloading https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab: Connection timed out after 208105 milliseconds
14:10:19 [20.6MiB/261.12s]     Now trying to download from source
14:10:19 [20.6MiB/261.12s]   - Syncing doctrine/deprecations (1.1.3) into cache
14:10:19 [20.5MiB/261.42s]     Failed to download doctrine/event-manager from dist: curl error 28 while downloading https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520: Connection timed out after 208105 milliseconds
14:10:19 [20.5MiB/261.42s]     Now trying to download from source
14:10:19 [20.5MiB/261.42s]   - Syncing doctrine/event-manager (1.2.0) into cache
14:10:20 [20.5MiB/262.65s]     Failed to download doctrine/cache from dist: curl error 28 while downloading https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb: Connection timed out after 208105 milliseconds
14:10:20 [20.5MiB/262.65s]     Now trying to download from source
14:10:20 [20.5MiB/262.65s]   - Syncing doctrine/cache (2.2.0) into cache
14:10:21 [20.4MiB/263.13s]     Failed to download doctrine/dbal from dist: curl error 28 while downloading https://api.github.com/repos/doctrine/dbal/zipball/22de295f10edbe00df74f517612f1fbd711131e2: Connection timed out after 203883 milliseconds
14:10:21 [20.4MiB/263.13s]     Now trying to download from source
14:10:21 [20.4MiB/263.13s]   - Syncing doctrine/dbal (3.4.2) into cache
14:10:25 [20.3MiB/267.44s]     Failed to download doctrine/sql-formatter from dist: curl error 28 while downloading https://api.github.com/repos/doctrine/sql-formatter/zipball/56070bebac6e77230ed7d306ad13528e60732871: Connection timed out after 203882 milliseconds
14:10:25 [20.3MiB/267.44s]     Now trying to download from source
14:10:25 [20.3MiB/267.44s]   - Syncing doctrine/sql-formatter (1.1.1) into cache
14:10:26 [20.2MiB/267.86s]     Failed to download giorgiosironi/eris from dist: curl error 28 while downloading https://api.github.com/repos/giorgiosironi/eris/zipball/d7cbea45ff7c7621d69589ae7f8a82f183673e69: Connection timed out after 203882 milliseconds
14:10:26 [20.2MiB/267.87s]     Now trying to download from source
14:10:26 [20.3MiB/267.87s]   - Syncing giorgiosironi/eris (0.10.0) into cache
14:10:26 [20.2MiB/268.29s]     Failed to download guzzlehttp/promises from dist: curl error 28 while downloading https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e: Connection timed out after 203882 milliseconds
14:10:26 [20.2MiB/268.29s]     Now trying to download from source
14:10:26 [20.2MiB/268.29s]   - Syncing guzzlehttp/promises (1.5.3) into cache
14:10:27 
14:10:27 In Git.php line 473:
14:10:27                                                                                
14:10:27   [RuntimeException]                                                           
14:10:27   Failed to clone https://github.com/wikimedia/composer-merge-plugin.git via   
14:10:27   https, ssh protocols, aborting.                                              
14:10:27                                                                                
14:10:27   - https://github.com/wikimedia/composer-merge-plugin.git                     
14:10:27     Cloning into bare repository '/cache/composer/vcs/https---github.com-wiki  
14:10:27   media-composer-merge-plugin.git'...                                          
14:10:27     fatal: unable to access 'https://github.com/wikimedia/composer-merge-plug  
14:10:27   in.git/': Failed to connect to github.com port 443: Connection timed out     
14:10:27                                                                                
14:10:27   - git@github.com:wikimedia/composer-merge-plugin.git                         
14:10:27     Cloning into bare repository '/cache/composer/vcs/https---github.com-wiki  
14:10:27   media-composer-merge-plugin.git'...                                          
14:10:27     error: cannot run ssh: No such file or directory                           
14:10:27     fatal: unable to fork                                                      
14:10:27                                                                                
14:10:27 
14:10:27 Exception trace:
14:10:27   at phar:///usr/bin/composer/src/Composer/Util/Git.php:473
14:10:27  Composer\Util\Git->throwException() at phar:///usr/bin/composer/src/Composer/Util/Git.php:93
14:10:27  Composer\Util\Git->runCommand() at phar:///usr/bin/composer/src/Composer/Util/Git.php:296
14:10:27  Composer\Util\Git->syncMirror() at phar:///usr/bin/composer/src/Composer/Util/Git.php:329
14:10:27  Composer\Util\Git->fetchRefOrSyncMirror() at phar:///usr/bin/composer/src/Composer/Downloader/GitDownloader.php:78
14:10:27  Composer\Downloader\GitDownloader->doDownload() at phar:///usr/bin/composer/src/Composer/Downloader/VcsDownloader.php:73
14:10:27  Composer\Downloader\VcsDownloader->download() at phar:///usr/bin/composer/src/Composer/Downloader/DownloadManager.php:223
14:10:27  Composer\Downloader\DownloadManager->Composer\Downloader\{closure}() at phar:///usr/bin/composer/src/Composer/Downloader/DownloadManager.php:216
14:10:27  Composer\Downloader\DownloadManager::Composer\Downloader\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
14:10:27  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:173
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
14:10:27  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
14:10:27  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
14:10:27  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:180
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
14:10:27  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
14:10:27  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
14:10:27  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:177
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
14:10:27  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
14:10:27  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
14:10:27  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:180
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
14:10:27  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
14:10:27  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
14:10:27  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:177
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
14:10:27  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
14:10:27  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
14:10:27  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:180
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
14:10:27  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
14:10:27  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
14:10:27  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:177
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
14:10:27  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
14:10:27  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
14:10:27  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:180
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
14:10:27  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
14:10:27  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
14:10:27  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:180
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
14:10:27  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
14:10:27  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Internal/RejectedPromise.php:73
14:10:27  React\Promise\Internal\RejectedPromise->then() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:180
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:221
14:10:27  React\Promise\Promise->settle() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:192
14:10:27  React\Promise\Promise->reject() at phar:///usr/bin/composer/vendor/react/promise/src/Promise.php:292
14:10:27  React\Promise\Promise::React\Promise\{closure}() at phar:///usr/bin/composer/src/Composer/Util/Http/CurlDownloader.php:664
14:10:27  Composer\Util\Http\CurlDownloader->rejectJob() at phar:///usr/bin/composer/src/Composer/Util/Http/CurlDownloader.php:485
14:10:27  Composer\Util\Http\CurlDownloader->tick() at phar:///usr/bin/composer/src/Composer/Util/HttpDownloader.php:392
14:10:27  Composer\Util\HttpDownloader->countActiveJobs() at phar:///usr/bin/composer/src/Composer/Util/Loop.php:88
14:10:27  Composer\Util\Loop->wait() at phar:///usr/bin/composer/src/Composer/Installer/InstallationManager.php:430
14:10:27  Composer\Installer\InstallationManager->waitOnPromises() at phar:///usr/bin/composer/src/Composer/Installer/InstallationManager.php:286
14:10:27  Composer\Installer\InstallationManager->downloadAndExecuteBatch() at phar:///usr/bin/composer/src/Composer/Installer/InstallationManager.php:218
14:10:27  Composer\Installer\InstallationManager->execute() at phar:///usr/bin/composer/src/Composer/Installer.php:821
14:10:27  Composer\Installer->doInstall() at phar:///usr/bin/composer/src/Composer/Installer.php:646
14:10:27  Composer\Installer->doUpdate() at phar:///usr/bin/composer/src/Composer/Installer.php:292
14:10:27  Composer\Installer->run() at phar:///usr/bin/composer/src/Composer/Command/UpdateCommand.php:251
14:10:27  Composer\Command\UpdateCommand->execute() at phar:///usr/bin/composer/vendor/symfony/console/Command/Command.php:298
14:10:27  Symfony\Component\Console\Command\Command->run() at phar:///usr/bin/composer/vendor/symfony/console/Application.php:1040
14:10:27  Symfony\Component\Console\Application->doRunCommand() at phar:///usr/bin/composer/vendor/symfony/console/Application.php:301
14:10:27  Symfony\Component\Console\Application->doRun() at phar:///usr/bin/composer/src/Composer/Console/Application.php:385
14:10:27  Composer\Console\Application->doRun() at phar:///usr/bin/composer/vendor/symfony/console/Application.php:171
14:10:27  Symfony\Component\Console\Application->run() at phar:///usr/bin/composer/src/Composer/Console/Application.php:145
14:10:27  Composer\Console\Application->run() at phar:///usr/bin/composer/bin/composer:93
14:10:27  require() at /usr/bin/composer:29
14:10:27
Krinkle renamed this task from Increase in "Failed to connect to github.com port 443: Connection timed out" in CI to "composer install" flaky in CI due to "Failed to connect to github.com port 443: Connection timed out".Mon, Apr 22, 9:10 PM
Krinkle moved this task from Backlog to WMF-deployed Build Failure on the ci-test-error board.