Sometimes it takes to long for CDN to reply in case of downloading
of not frequently used kernels.
For example, even on my local PC it fails to download linux-4.19.29
at the first try:

  $ wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.29.tar.xz
  Resolving cdn.kernel.org (cdn.kernel.org)... 151.101.1.176
  Connecting to cdn.kernel.org |151.101.1.176|:443... connected.
  HTTP request sent, awaiting response... 503 first byte timeout

Example from TravisCI:
  https://travis-ci.org/openvswitch/ovs/jobs/530247589

It seems that CDN downloads the tar for that time to the nearby
server and instant retry usually succeeds immediately.

503 is not a "fatal error" for wget and, unfortunately, wget on
TravisCI is too old and we can't just use "--retry-on-http-error=503"
to avoid failures in this case. So, let's just retry unconditionally.
Fallback to the direct download if CDN fails twice.

Fixes: ae6e4f12fcab ("travis: Speed up linux kernel downloads.")
Signed-off-by: Ilya Maximets <[email protected]>
---
 .travis/linux-build.sh | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/.travis/linux-build.sh b/.travis/linux-build.sh
index d869713f7..c8c9748ac 100755
--- a/.travis/linux-build.sh
+++ b/.travis/linux-build.sh
@@ -19,7 +19,11 @@ function install_kernel()
         PREFIX="v2.6/longterm/v2.6.32"
     fi
 
-    wget https://cdn.kernel.org/pub/linux/kernel/${PREFIX}/linux-${1}.tar.xz
+    cdn="https://cdn.";
+    direct="https://www.";
+    link="kernel.org/pub/linux/kernel/${PREFIX}/linux-${1}.tar.xz"
+    # Download kernel sources. Try direct link on CDN failure.
+    wget ${cdn}${link} || wget ${cdn}${link} || wget ${direct}${link}
     tar xvf linux-${1}.tar.xz > /dev/null
     cd linux-${1}
     make allmodconfig
-- 
2.17.1

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to