[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#413324: apt: http pipelining breaks with squid proxy



Package: apt
Version: 0.6.46.4-0.1
Severity: important

Hi,

I am using a local squid proxy to cache packages files (so I modified
squid's configuration to also cache large files).

When I download a large number of packages, which are cached by squid, I
run into errors:
Failed to fetch
http://idpot.grenoble.grid5000.fr/debian/pool/main/libx/libx11/libx11-data_1.0.3-5_all.deb
Error reading from server - read (104 Connection reset by peer)
Failed to fetch
http://idpot.grenoble.grid5000.fr/debian/pool/main/f/fontconfig/fontconfig-config_2.4.2-1_all.deb
Error reading from server - read (104 Connection reset by peer)
Failed to fetch
http://idpot.grenoble.grid5000.fr/debian/pool/main/libx/libxt/libxt6_1.0.2-2_amd64.deb
Error reading from server - read (104 Connection reset by peer)
Failed to fetch
http://idpot.grenoble.grid5000.fr/debian/pool/main/m/mesa/libgl1-mesa-glx_6.5.1-0.6_amd64.deb
Error reading from server - read (104 Connection reset by peer)
Failed to fetch
http://idpot.grenoble.grid5000.fr/debian/pool/main/libp/libpng/libpng12-0_1.2.15~beta5-1_amd64.deb
Error reading from server - read (104 Connection reset by peer)
Failed to fetch
http://idpot.grenoble.grid5000.fr/debian/pool/main/libx/libxaw/libxaw7_1.0.2-4_amd64.deb
Error reading from server - read (104 Connection reset by peer)
Failed to fetch
http://idpot.grenoble.grid5000.fr/debian/pool/main/b/bind9/libisc11_9.3.4-2_amd64.deb
Error reading from server - read (104 Connection reset by peer)
Failed to fetch
http://idpot.grenoble.grid5000.fr/debian/pool/main/b/bind9/dnsutils_9.3.4-2_amd64.deb
Error reading from server - read (104 Connection reset by peer)

Changing the value of Acquire::http::Pipeline-Depth fixes the problem:
with 10 (the default) or 9, it fails nearly during every time.
with 8, I could do 43 runs without any failure.

What I use to test:
nb=0
while apt-get clean ; apt-get -o Acquire::http::Pipeline-Depth=5 \
install -y -d gnome kde; do
	nb=$(expr $nb + 1)
	echo "Runs OK: $nb"
	sleep 2
done
echo "Runs OK: $nb"

I tried with both the "squid" package and the "squid3" package. Both
failed in the same way.

I'm not sure if it's a bug in squid or in apt. This code is quite old
(1998 it seems), but the default squid configuration doesn't allow to
cache big files, so it's really trivial to discover this.

On a side note, apt.conf(5) says that Acquire::http::Pipeline-Depth can
be a value from 0 to 5. The default value is 10 in the code.

Thank you,
-- 
| Lucas Nussbaum
| lucas@lucas-nussbaum.net   http://www.lucas-nussbaum.net/ |
| jabber: lucas@nussbaum.fr             GPG: 1024D/023B3F4F |



Reply to: