Jens Geyer created THRIFT-6247:
----------------------------------

             Summary: AppVeyor jobs depend on a single fallback URL for the 
zlib download
                 Key: THRIFT-6247
                 URL: https://issues.apache.org/jira/browse/THRIFT-6247
             Project: Thrift
          Issue Type: Bug
          Components: Build Process
            Reporter: Jens Geyer
             Fix For: 0.25.0


{{build/appveyor/build-zlib.bat}} downloads zlib from 
{{http://zlib.net/zlib-$ZLIB_VERSION.tar.gz}}, with 
{{http://zlib.net/fossils/zlib-$ZLIB_VERSION.tar.gz}} as a fallback for the 
case that the current version has been archived.

{{ZLIB_VERSION}} is 1.3.1 in all five {{appveyor.yml}} matrix entries. zlib 
1.3.2 has since been released, so 1.3.1 has moved to {{fossils/}} and the 
primary URL now returns 404 on *every* job rather than occasionally. Every job 
therefore issues two requests to zlib.net, a single host with no CDN, and 
depends entirely on the second one.

zlib.net drops connections when the six matrix jobs hit it at the same time. In 
build 54709632 four jobs fetched the fossils tarball in about a second, while 
two failed with

{code}
Error downloading remote file: One or more errors occurred.
Inner Exception: Unable to connect to the remote server
{code}

after about 22 seconds each, taking the whole build red. Three jobs in build 
54709599 failed the same way.

The failure signature is a job log of roughly 240 lines that stops at {{call 
build-zlib.bat}} about one minute in, with no compiler or test output at all. 
Nothing is built, so the change under test is never exercised.

{{build/appveyor/build-libevent.bat}} already downloads from GitHub releases 
over https and does not have this problem. It is the only other script under 
{{build/appveyor}} that downloads anything.

Proposed: fetch zlib from its GitHub release as well, keeping zlib.net/fossils 
as the fallback. The GitHub release tarball is the same artifact (1,512,791 
bytes for 1.3.1), so this is a download-source change, not a dependency change.

A second, smaller point in the same six lines: on the non-AppVeyor path the 
fallback {{curl}} has no {{|| EXIT /B}}, so a failed local download falls 
through to {{7z x}} on a file that is not there.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to