Jens Geyer created THRIFT-6276:
----------------------------------
Summary: AppVeyor MINGW job fails when one MSYS2 mirror drops a
signature download
Key: THRIFT-6276
URL: https://issues.apache.org/jira/browse/THRIFT-6276
Project: Thrift
Issue Type: Bug
Components: Build Process
Reporter: Jens Geyer
Assignee: Jens Geyer
The MINGW job in {{appveyor.yml}} brings MSYS2 up to date with {{pacman}}
before it builds anything ({{build/appveyor/MINGW-appveyor-full.bat}}). MSYS2
on the AppVeyor image is old, so the second {{pacman -Syu}} is a full system
upgrade, currently 193 packages and 414 MiB. When a single download in it
fails, {{pacman}} abandons the whole transaction, and the job goes red before
compiling anything.
The file that fails is always a signature. {{pacman}} tries a package on each
mirror in its list in turn, but requests the package's {{.sig}} only from the
mirror that served the package, with no other server to fall back on
({{lib/libalpm/dload.c}} in pacman 6.1.0). One reset connection or a ten-second
stall on that mirror therefore ends the transaction:
{noformat}
error: failed retrieving file 'libnettle-4.0-1-x86_64.pkg.tar.zst.sig' from
us.mirrors.cicku.me : Recv failure: Connection reset by peer
error: failed to commit transaction (unexpected error)
{noformat}
{noformat}
error: failed retrieving file 'mingw-w64-i686-gcc-16.2.0-3-any.pkg.tar.zst.sig'
from ftp2.osuosl.org : Operation too slow. Less than 1 bytes/sec transferred
the last 10 seconds
error: failed to commit transaction (download library error)
{noformat}
The MINGW job failed this way in AppVeyor builds 54721340, 54721515, 54729139
and 54733215, four of the last 40 builds. Build 54712971 failed the same way on
a database signature ({{clang64.db.tar.zst.sig}}). In the two most recent cases
all five MSVC jobs passed:
*
[https://ci.appveyor.com/project/ApacheSoftwareFoundation/thrift/builds/54729139/job/76hwcbg737sy7w0x]
*
[https://ci.appveyor.com/project/ApacheSoftwareFoundation/thrift/builds/54733215/job/ue5u77tkyxo9bkgu]
Proposed fix: make up to three attempts at each {{pacman}} call. {{pacman}}
keeps completed downloads in its cache, so a retry fetches little beyond what
failed. The retry has to be done in cmd rather than in a bash loop, because the
core system upgrade in the first {{pacman -Syu}} ends by closing every other
MSYS2 process with {{taskkill}}.
{{build/appveyor/MSYS-appveyor-full.bat}} contains the same calls, but no job
uses it, and it exits before reaching them.
_Drafted with AI assistance (Claude Opus 5); reviewed and posted by Jens Geyer._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)