<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-pkg/acquire.cc, branch 3.1.12</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=3.1.12</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=3.1.12'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2025-10-04T12:29:17Z</updated>
<entry>
<title>Move "Tried to start delayed item […], but failed" to debugging</title>
<updated>2025-10-04T12:29:17Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2025-10-04T12:28:01Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=02ee82958b5caef9efb49992870d149907869893'/>
<id>urn:sha1:02ee82958b5caef9efb49992870d149907869893</id>
<content type='text'>
We don't quite know why a stuck queue cannot get unstuck here,
and it's possible that this is causing the queue to stall, but
shrug.

Closes: #1111554
</content>
</entry>
<entry>
<title>Fix stuck acquire queues on partial server errors</title>
<updated>2025-06-24T16:47:18Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2025-06-24T14:52:06Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=5378c38db0a5dedef34fdf35e357f76c104d717a'/>
<id>urn:sha1:5378c38db0a5dedef34fdf35e357f76c104d717a</id>
<content type='text'>
When a server responds with two InRelease files, but one
is good, and the other indicates a temporary error, we
queued the other indices from the good repository for
downloading and then queued the retry.

The resulting queue ended up with items having fetchAfter=0
before the item with fetchAfter=&lt;something&gt;, causing the
Run() loop to not detect a stuck queue.

Change the order of the queue such that the highest retry-after
items comes first; this ensures that we always see stuck queues.

This of course changes the behavior of retries in that if one
file fails temporarily we block the entire server. This does
seem more beneficial in the common case - if one file fails,
probably all of them fail, and there's no point bombarding
the server with requests for indices from good repositories
until all have failed.

The actual root cause is more that the remaining items are
Enqueued like this:

1. Enqueue jammy/InRelease (delayed)
2. Enqueue jammy-updates/main all Packages

The resulting queue ended up being:

    jammy-updates/main all Packages
    jammy/InRelease (delayed)

But Enqueue() only calls Cycle() when there are no items in
the queue already - after all, any item that is already running
will call Cycle() eventually. Or so was the case until we added
the retry-after handling.

It's unclear why we don't Cycle() all the time when enqueuing
a new item, given that our pipeline might not be filled yet,
and we could send the request to the server while waiting for
data on a running item.

Trying to always Cycle() however led to regressions that still
need investigating. Given that, this solution certainly is the
more easy to reason about one.

LP: #2003851
</content>
</entry>
<entry>
<title>Include standard headers to fix clang compiler error</title>
<updated>2025-06-18T14:03:24Z</updated>
<author>
<name>Biswapriyo Nath</name>
<email>nathbappai@gmail.com</email>
</author>
<published>2025-06-18T14:03:19Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=06d0c12be00ee50c965830127f5812d2156681b1'/>
<id>urn:sha1:06d0c12be00ee50c965830127f5812d2156681b1</id>
<content type='text'>
This commit fixes the following compiler errors.
apt-pkg/acquire.cc:833:51: error: no template named 'function' in namespace 'std'
apt-pkg/contrib/error.cc:198:59: error: no member named 'front_inserter' in namespace 'std'
apt-pkg/solver3.h:44:22: error: no template named 'is_trivially_constructible_v' in namespace 'std'
methods/http.cc:1029:24: error: no member named 'inserter' in namespace 'std'
</content>
</entry>
<entry>
<title>Rewrite hidden config option checker for more patterns</title>
<updated>2024-11-22T12:40:10Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2022-04-26T19:33:16Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=eb1e6fc4973a844adbea0297c6425b00f64e8b7b'/>
<id>urn:sha1:eb1e6fc4973a844adbea0297c6425b00f64e8b7b</id>
<content type='text'>
The previous version allowed only foo::*::bar as a pattern, now you can
have as many starred parts as you want allowing for a finer control
instead of hardcoding specific common star-values or giving up with **.

It also adds a new INVALID type for an option to mark options which
should not be used, but are covered by a pattern which would normally
allow it.

Our tests are more or less the only users of this hidden feature making
this change not very risky even through it has no dedicated test itself.
</content>
</entry>
<entry>
<title>Turn unique_ptr&lt;decltype(fclose and free)&gt; into real deleter types (warnings now, UB in C++20)</title>
<updated>2024-11-12T12:46:06Z</updated>
<author>
<name>наб</name>
<email>nabijaczleweli@nabijaczleweli.xyz</email>
</author>
<published>2024-11-12T12:28:04Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=78e503bc1d79bc4fc29bc9cbe1dfb68ae4d16acf'/>
<id>urn:sha1:78e503bc1d79bc4fc29bc9cbe1dfb68ae4d16acf</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>Improve and test distclean implementation</title>
<updated>2024-01-03T13:53:09Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2024-01-03T13:53:09Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=c82f96210eb62c92d31ded7073f4cf5371cc9485'/>
<id>urn:sha1:c82f96210eb62c92d31ded7073f4cf5371cc9485</id>
<content type='text'>
The implementation as-is as various smaller/esoteric bugs and
inconsistencies like apt-get not supporting them, the option -s
being supported in code but not accepted on the command line,
the regex not escaping the dot before the file extension and
exposing more implementation details to public headers than we
actually need.

Also comes with a small test case to ensure it actually works.

References: bd7c126e3fb1b94e76e0e632c657cea854586844
</content>
</entry>
<entry>
<title>Add 'dist-clean' command to remove packages and list files</title>
<updated>2023-11-22T10:05:28Z</updated>
<author>
<name>Gábor Németh</name>
<email>homar@riseup.net</email>
</author>
<published>2023-03-06T15:19:14Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=bd7c126e3fb1b94e76e0e632c657cea854586844'/>
<id>urn:sha1:bd7c126e3fb1b94e76e0e632c657cea854586844</id>
<content type='text'>
We assume all files in the 'listsdir' are candidates. Keep only files
ending with Release, Release.gpg, and InRelease.

Closes: #959093
</content>
</entry>
<entry>
<title>Avoid comparison of integers of different signedness for ETA</title>
<updated>2023-01-29T11:21:24Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2022-08-31T14:15:33Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=896286ecf151620e5e2b88c74e8f361e04224da9'/>
<id>urn:sha1:896286ecf151620e5e2b88c74e8f361e04224da9</id>
<content type='text'>
Reported-By: gcc -Wsign-compare
Gbp-Dch: Ignore
</content>
</entry>
<entry>
<title>typecast time_t and suseconds_t from std::chrono</title>
<updated>2022-09-17T03:07:40Z</updated>
<author>
<name>Khem Raj</name>
<email>raj.khem@gmail.com</email>
</author>
<published>2022-09-17T03:00:30Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=66b305f86fdee1c27edcb39f299b052c87d2d82e'/>
<id>urn:sha1:66b305f86fdee1c27edcb39f299b052c87d2d82e</id>
<content type='text'>
This fixes build on some architectures like mips
progress.cc:125:31: error: non-constant-expression cannot be narrowed from type 'std::chrono::duration&lt;long long&gt;::rep' (aka 'long long') to '__time_t' (aka 'long') in initializer list [-Wc++11-narrowing]
   struct timeval NowTime = { Now_sec.count(), Now_usec.count() };

Signed-off-by: Khem Raj &lt;raj.khem@gmail.com&gt;
</content>
</entry>
</feed>
