Merge ~cjwatson/launchpad-buildd:apt-retries into launchpad-buildd:master

Proposed by Colin Watson
Status: Merged
Approved by: Colin Watson
Approved revision: 65d1ca084a4a07ee4e00ffc553423fe9f6ae4e0b
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: ~cjwatson/launchpad-buildd:apt-retries
Merge into: launchpad-buildd:master
Diff against target: 58 lines (+21/-0)
3 files modified
debian/changelog (+7/-0)
lpbuildd/target/apt.py (+6/-0)
lpbuildd/target/tests/test_apt.py (+8/-0)
Reviewer Review Type Date Requested Status
Cristian Gonzalez (community) Approve
Review via email: mp+411152@code.launchpad.net

Commit message

Configure apt to automatically retry downloads on failures

Description of the change

This helps with slightly flaky networking infrastructure.

To post a comment you must log in.
Revision history for this message
Cristian Gonzalez (cristiangsp) wrote :

Looks good!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/debian/changelog b/debian/changelog
2index 5c972b4..8c8872b 100644
3--- a/debian/changelog
4+++ b/debian/changelog
5@@ -1,3 +1,10 @@
6+launchpad-buildd (204) UNRELEASED; urgency=medium
7+
8+ * Configure apt to automatically retry downloads on failures
9+ (LP: #1949473).
10+
11+ -- Colin Watson <cjwatson@ubuntu.com> Tue, 02 Nov 2021 13:42:13 +0000
12+
13 launchpad-buildd (203) bionic; urgency=medium
14
15 * Remove some more "slave" terminology from tests.
16diff --git a/lpbuildd/target/apt.py b/lpbuildd/target/apt.py
17index fc1827a..49b1650 100644
18--- a/lpbuildd/target/apt.py
19+++ b/lpbuildd/target/apt.py
20@@ -39,6 +39,12 @@ class OverrideSourcesList(Operation):
21 sources_list.flush()
22 os.fchmod(sources_list.fileno(), 0o644)
23 self.backend.copy_in(sources_list.name, "/etc/apt/sources.list")
24+ with tempfile.NamedTemporaryFile(mode="w+") as apt_retries_conf:
25+ print('Acquire::Retries "3";', file=apt_retries_conf)
26+ apt_retries_conf.flush()
27+ os.fchmod(apt_retries_conf.fileno(), 0o644)
28+ self.backend.copy_in(
29+ apt_retries_conf.name, "/etc/apt/apt.conf.d/99retries")
30 if self.args.apt_proxy_url is not None:
31 with tempfile.NamedTemporaryFile(mode="w+") as apt_proxy_conf:
32 print(
33diff --git a/lpbuildd/target/tests/test_apt.py b/lpbuildd/target/tests/test_apt.py
34index 2827d00..a946e38 100644
35--- a/lpbuildd/target/tests/test_apt.py
36+++ b/lpbuildd/target/tests/test_apt.py
37@@ -52,6 +52,10 @@ class TestOverrideSourcesList(TestCase):
38 deb http://ppa.launchpad.net/launchpad/ppa/ubuntu xenial main
39 """).encode("UTF-8"), stat.S_IFREG | 0o644),
40 override_sources_list.backend.backend_fs["/etc/apt/sources.list"])
41+ self.assertEqual(
42+ (b'Acquire::Retries "3";\n', stat.S_IFREG | 0o644),
43+ override_sources_list.backend.backend_fs[
44+ "/etc/apt/apt.conf.d/99retries"])
45
46 def test_apt_proxy(self):
47 args = [
48@@ -68,6 +72,10 @@ class TestOverrideSourcesList(TestCase):
49 """).encode("UTF-8"), stat.S_IFREG | 0o644),
50 override_sources_list.backend.backend_fs["/etc/apt/sources.list"])
51 self.assertEqual(
52+ (b'Acquire::Retries "3";\n', stat.S_IFREG | 0o644),
53+ override_sources_list.backend.backend_fs[
54+ "/etc/apt/apt.conf.d/99retries"])
55+ self.assertEqual(
56 (dedent("""\
57 Acquire::http::Proxy "http://apt-proxy.example:3128/";
58 """).encode("UTF-8"), stat.S_IFREG | 0o644),

Subscribers

People subscribed via source and target branches