[pacman-dev] [PATCH] RFC: Remove "duplicate" download error messages

Andrew Gregory andrew.gregory.8 at gmail.com
Mon Mar 15 04:40:05 UTC 2021


On 03/08/21 at 02:12pm, Allan McRae wrote:
> This is a very incomplete and hacky patch...   But it does do this:
> 
> allan at mando ~/arch/code/pacman (patchqueue)
> > pacman -Syy
> :: Synchronizing package databases...
>  core                  131.1 KiB  47.0 KiB/s 00:03 [######################] 100%
>  extra                1645.7 KiB   490 KiB/s 00:03 [######################] 100%
>  community               5.4 MiB   161 KiB/s 00:34 [######################] 100%
> error: failed retrieving file 'extra.db' from allanmcrae.com : The requested URL returned error: 404
> error: failed retrieving file 'community.db' from allanmcrae.com : The requested URL returned error: 404
> error: failed retrieving file 'core.db' from allanmcrae.com : The requested URL returned error: 404
> 
> allan at mando ~/arch/code/pacman (patchqueue)
> > sudo ./build/pacman -Syy
> [sudo] password for allan:
> :: Synchronizing package databases...
>  core                  131.1 KiB  51.2 KiB/s 00:03 [######################] 100%
>  extra                1645.7 KiB   494 KiB/s 00:03 [######################] 100%
>  community               5.4 MiB   172 KiB/s 00:32 [######################] 100%
> error: failed retrieving file(s) from allanmcrae.com : The requested URL returned error: 404
> 
> There are a few things to note.
> 1) we lose the file names for the failed downloads.  And we lose
>    information of how many downloads failed.
> 2) I only changed the messages for download failures so far. So (e.g.)
>    having a file exceed its expected download size will still report
>    the file name.
> 3) debug output still gives file names
> 4) note the "error" in the messages above, yet pacman was still
>    successful as I have an actual mirror configured. I guess this (and
>    others?) should be changed to warning. We get an overall error
>    message if there is complete failure anyway.
> 5) I have been super lazy for this PoC, switching
>    alpm_list_remove_dupes() to use string comparisons, rather than
>    pointer comparisons.  This will need fixed.
> 
> 
> Things to discuss:
> - do we need to report the number of failures from a server.
>   Currently 1 and 200 failures are treated the same.  This involves
>   doing more than a dedup of the error list.
> - converting errors to warnings.  They are clearly not errors until
>   they are...  Is the final line enough:
> error: failed to synchronize all databases (failed to retrieve some files)

My main problem with this approach is that now alpm is spewing a bunch
of identical errors to front-ends, so now unless a front-end dedups
them the same way, we're actually making things worse.  We could dedup
in alpm, but then I don't think there's really an obvious place to
actually send the message.  Sending it at the end makes it impossible
for the user to infer that they might have a bad mirror and should
cancel the download and switch.  Sending it on the first occurrence
does the same because they don't know if it's just one file or
a recurring problem.

What about actually removing a bad mirror instead of deduplicating the
resulting messages?  Maybe start using the next mirror for subsequent
payloads after n failures or immediately for things like an
unresolvable host?

If we do make the errors more generic, I think turning them into
warnings and relying on the final "failed to retrieve some files" to
indicate actual failure is fine.


More information about the pacman-dev mailing list