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)