diff mbox series

[1/2] download/cvs: add a 10 minute timeout

Message ID 20180531070520.24242-1-arnout@mind.be
State Accepted
Commit 66f40a7242cb98cae765648af568b4b77b318365
Headers show
Series [1/2] download/cvs: add a 10 minute timeout | expand

Commit Message

Arnout Vandecappelle May 31, 2018, 7:05 a.m. UTC
Apparently, CVS servers can be deadlocked and in that case clients will
retry connecting to them indefinitely. Cfr.
http://autobuild.buildroot.net/results/23d/23d1034b33d0354de15de2ec4a8ccd0603e8db78/build-end.log
Apparently, the sf.net CVS server got in such a deadlock on 2018-05-18,
and almost 2 weeks later it is still not fixed.

Instead of just hanging, we should fall back on BR2_SECONDARY_SITE. To
achieve this, it's sufficient to add a timeout to the CVS command.

The timeout value is of course arbitrary. However, we can assume that
nobody will be putting large projects under CVS any more. So if the
download takes more than 5 minutes, it's probably broken. Let's put the
timeout at 10 minutes then.

Fixes:
http://autobuild.buildroot.net/results/db3/db33d4fa507fb3b4132423cd0a7e25a1fe6e4105
http://autobuild.buildroot.net/results/b6d/b6d927dcc73ac8d754422577dacefff4ff918a5c
http://autobuild.buildroot.net/results/23d/23d1034b33d0354de15de2ec4a8ccd0603e8db78
http://autobuild.buildroot.net/results/127/1272a3aa3077e434c9805ec3034f35e6fcc330d4

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
 support/download/cvs | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

Peter Korsgaard May 31, 2018, 5:35 p.m. UTC | #1
>>>>> "Arnout" == Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> writes:

 > Apparently, CVS servers can be deadlocked and in that case clients will
 > retry connecting to them indefinitely. Cfr.
 > http://autobuild.buildroot.net/results/23d/23d1034b33d0354de15de2ec4a8ccd0603e8db78/build-end.log
 > Apparently, the sf.net CVS server got in such a deadlock on 2018-05-18,
 > and almost 2 weeks later it is still not fixed.

 > Instead of just hanging, we should fall back on BR2_SECONDARY_SITE. To
 > achieve this, it's sufficient to add a timeout to the CVS command.

 > The timeout value is of course arbitrary. However, we can assume that
 > nobody will be putting large projects under CVS any more.

Tell that to the BSD people ;)

 > So if the download takes more than 5 minutes, it's probably
 > broken. Let's put the timeout at 10 minutes then.

 > Fixes:
 > http://autobuild.buildroot.net/results/db3/db33d4fa507fb3b4132423cd0a7e25a1fe6e4105
 > http://autobuild.buildroot.net/results/b6d/b6d927dcc73ac8d754422577dacefff4ff918a5c
 > http://autobuild.buildroot.net/results/23d/23d1034b33d0354de15de2ec4a8ccd0603e8db78
 > http://autobuild.buildroot.net/results/127/1272a3aa3077e434c9805ec3034f35e6fcc330d4

This is somewhat ugly - But lets indeed keep pragmatic, almost no
projects use CVS anymore.

Committed, thanks.
diff mbox series

Patch

diff --git a/support/download/cvs b/support/download/cvs
index 3f77b849e4..9d0dc3cb3a 100755
--- a/support/download/cvs
+++ b/support/download/cvs
@@ -33,9 +33,13 @@  done
 shift $((OPTIND-1)) # Get rid of our options
 
 # Caller needs to single-quote its arguments to prevent them from
-# being expanded a second time (in case there are spaces in them)
+# being expanded a second time (in case there are spaces in them).
+# If the CVS server is deadlocked, the client will never return (cfr.
+# http://autobuild.buildroot.net/results/23d/23d1034b33d0354de15de2ec4a8ccd0603e8db78/build-end.log
+# ). Since nobody sane will put large code bases in CVS, a timeout of
+# 10 minutes should do the trick.
 _cvs() {
-    eval ${CVS} "${@}"
+    eval timeout 10m ${CVS} "${@}"
 }
 
 if [[ ${rev} =~ ^[0-9] ]]; then