Failed to pull/fetch on slower connection
On Debian testing using classic modem connection speed (up to 8 KB/s) I'm not able to refresh the gtk+ repository.
gtk+$ git describe
3.96.0-812-g8cfdd6c591
gtk+$ git remote get-url origin
https://gitlab.gnome.org/GNOME/gtk.git
gtk+$ START=$SECONDS; git pull --rebase; echo "elapsed $((($SECONDS-$START)/60)) min $((($SECONDS-$START)%60)) sec"
remote: Enumerating objects: 10320, done.
remote: Counting objects: 100% (10320/10320), done.
remote: Compressing objects: 100% (2404/2404), done.
error: RPC failed; curl 56 GnuTLS recv error (-9): Error decoding the received TLS packet.
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
elapsed 15 min 50 sec
gtk+$ START=$SECONDS; git pull --rebase; echo "elapsed $((($SECONDS-$START)/60)) min $((($SECONDS-$START)%60)) sec"
remote: Counting objects: 100% (10320/10320), done.
remote: Compressing objects: 100% (2404/2404), done.
error: RPC failed; curl 56 GnuTLS recv error (-9): Error decoding the received TLS packet.
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
elapsed 13 min 25 sec
gtk+$ START=$SECONDS; git pull --rebase; echo "elapsed $((($SECONDS-$START)/60)) min $((($SECONDS-$START)%60)) sec"
remote: Enumerating objects: 11049, done.
remote: Counting objects: 100% (11049/11049), done.
remote: Compressing objects: 100% (2557/2557), done.
error: RPC failed; curl 56 GnuTLS recv error (-9): Error decoding the received TLS packet.
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
elapsed 14 min 49 sec
gkt+$ ls -o -g .git/objects/pack/
total 244336
-r--r--r-- 1 14641012 Jun 15 16:23 pack-d16558c84e8e1e8683e7d25358acfa3c0ccabfab.idx
-r--r--r-- 1 217598367 Jun 15 16:23 pack-d16558c84e8e1e8683e7d25358acfa3c0ccabfab.pack
-r--r--r-- 1 5537791 Jun 19 08:07 tmp_pack_mueLBC
-r--r--r-- 1 6676479 Jun 19 01:05 tmp_pack_PHtiTy
-r--r--r-- 1 5726207 Jun 19 01:21 tmp_pack_tuM0kn
$ git --version
git version 2.22.0
GnuTLS: 3.6.7-3
curl: 7.64.0-3
Looks like some (default?) option for a timeout / buffer size is too aggressive (despite the connection is not stalled at all, it is just slower).
P.S. An immediate workaround on a client side is to rebuild git with libcurl4-openssl-dev instead of libcurl4-gnutls-dev:
Receiving objects: 100% (11049/11049), 18.33 MiB | 7.00 KiB/s, done.
Resolving deltas: 100% (8801/8801), completed with 1723 local objects.
...
elapsed 45 min 21 sec
Hopefully the server could be tuned to interoperate nicely with the default git package.