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)

Reply via email to