<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-pkg/acquire-worker.cc, branch 2.9.13</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=2.9.13</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=2.9.13'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2024-11-18T13:54:19Z</updated>
<entry>
<title>Handle Retry-After by default</title>
<updated>2024-11-18T13:54:19Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-11-18T13:54:19Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=f4b57be67c34e9d771859b6851254e64c2a1dc8c'/>
<id>urn:sha1:f4b57be67c34e9d771859b6851254e64c2a1dc8c</id>
<content type='text'>
Let's get some feedback here. This is capped to 30s per retry, so
a maximum of 90s per item that we delay the failure case. In the
worst case, we hence have 90n seconds delay for n items.

In a more realistic worse case however, the server likely does
not collapse per-item, and we end up trying all items in a short
burst so it seems more realistic we hit a 90s total delay.

The bursty behavior may be suboptimal; we don't quite know, but
it seems the specification of Retry-After is per-entity rather than
per-host, so technically speaking it seems correct.
</content>
</entry>
<entry>
<title>http: use Retry-After HTTP header to optimize retries</title>
<updated>2024-11-18T12:44:49Z</updated>
<author>
<name>Felix Moessbauer</name>
<email>felix.moessbauer@siemens.com</email>
</author>
<published>2024-11-08T14:04:17Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=7b9dea5a7c43fd91bcd23d1585d39a726d098285'/>
<id>urn:sha1:7b9dea5a7c43fd91bcd23d1585d39a726d098285</id>
<content type='text'>
Some mirrors like snapshot.debian.org apply strict http rate limits.
While apt already has an exponential backoff mechanism implemented, this
is not sufficient due to the following reasons:

1. all retries happen roughly at the same time
2. the retry-after information from the server is not used

We fix this by improving the algorithm: First, if present, the timestamp
or duration of the Retry-After header is added to the exponential
backoff, optimizing for success-on-second-try. Second, a random delay is
added (delay += [0, delay]) to distribute the retries to not immediately
run into the limit again. To avoid super-long delays, this is capped by
the configured maximum delay. This logic only becomes active if the
option Acquire::Retries::HandleRetryAfter is enabled.

Signed-off-by: Felix Moessbauer &lt;felix.moessbauer@siemens.com&gt;
</content>
</entry>
<entry>
<title>Remove ftp, rsh, ssh methods (disabled since 1.8)</title>
<updated>2024-11-07T13:04:30Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-11-07T12:58:49Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=fd3684cdbc165ceaa635ed19fcbd231f509b0179'/>
<id>urn:sha1:fd3684cdbc165ceaa635ed19fcbd231f509b0179</id>
<content type='text'>
These methods have been unsupported and disabled since 1.8, remove
them for the 3.0 cleanup.

Please migrate to http instead. If you need ad-hoc access to a remote
repository, you can run `python3 -m http.server` on that machine and
use SSH port forwarding to run http over ssh.
</content>
</entry>
<entry>
<title>worker: Add an audit level to log audit messages</title>
<updated>2024-07-15T17:16:27Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-07-15T15:57:42Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=c51ea9f44e9742c88a252b86cb0260798b4b9f7b'/>
<id>urn:sha1:c51ea9f44e9742c88a252b86cb0260798b4b9f7b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Modernize standard library includes</title>
<updated>2024-02-20T12:49:04Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-02-20T12:43:08Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=40a75722c43ae24cb9a99d6730a3b25b65819c49'/>
<id>urn:sha1:40a75722c43ae24cb9a99d6730a3b25b65819c49</id>
<content type='text'>
This was automated with sed and git-clang-format, and then I had to
fix up the top of policy.cc by hand as git-clang-format accidentally
indented it by two spaces.
</content>
</entry>
<entry>
<title>Add support for a maximum delay and testing of delay</title>
<updated>2021-07-28T11:08:35Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2021-07-28T10:43:56Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=4001af8920389e2bb2672b673b181c4e92515872'/>
<id>urn:sha1:4001af8920389e2bb2672b673b181c4e92515872</id>
<content type='text'>
This is very basic support on the testing side, we just test
the debug output but not how long it actually took. Would be
nice to check time really.
</content>
</entry>
<entry>
<title>Convert to monotonic clock</title>
<updated>2021-07-28T11:08:35Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2021-07-27T14:40:38Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=48a7ece8d0e065240153a85089f544383e16137f'/>
<id>urn:sha1:48a7ece8d0e065240153a85089f544383e16137f</id>
<content type='text'>
This yields more accurate delays and avoids issues with clock
skew.
</content>
</entry>
<entry>
<title>Implement exponential delay between retries</title>
<updated>2021-07-28T11:04:10Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2021-07-08T14:49:20Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=121ccd0e0c2612bab9ba5383d5599b54e29e4643'/>
<id>urn:sha1:121ccd0e0c2612bab9ba5383d5599b54e29e4643</id>
<content type='text'>
Add a new Item field called FetchAfter, which determines the earliest
time the item should be fetched at. Adjust insertion into queue to
take it into account alongside priority, and only fill pipelines
with items that are ready.
</content>
</entry>
<entry>
<title>Keep URIs encoded in the acquire system</title>
<updated>2020-12-18T18:31:19Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2020-07-09T14:38:49Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=e6c55283d235aa9404395d30f2db891f36995c49'/>
<id>urn:sha1:e6c55283d235aa9404395d30f2db891f36995c49</id>
<content type='text'>
We do not deal a lot with URIs which need encoding, but then we do it is
a pain that we store it decoded in the acquire system as it means we
have to decode and reencode URIs eventually which is potentially giving
us slightly different URIs.

We see that in our own testing framework while setting up redirects as
the config options are effectively double-encoded and decoded to pass
them around successfully as otherwise %2f and / in an URI are treated
the same.

This commit adds the infrastructure for methods to opt into getting URIs
send in encoded form (and returning them to us in encoded form, too) so
that we eventually do not have to touch the URIs which is how it should
be. This means though that we have to deal with methods who do not
support this yet (aka: all at the moment) for which we decode and encode
while communicating with them.
</content>
</entry>
<entry>
<title>Drop pkgAcquire::Item::ModifyRetries() ABI hack</title>
<updated>2020-02-26T13:10:47Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2020-02-26T13:04:51Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=da18eb10188a22fc1698a9b8466272f2826447db'/>
<id>urn:sha1:da18eb10188a22fc1698a9b8466272f2826447db</id>
<content type='text'>
</content>
</entry>
</feed>
