CacheServer option (or whatever to work around server error limit)

Allan McRae allan at archlinux.org
Thu Jan 13 14:36:17 UTC 2022


On 14/1/22 00:12, Christian Hesse wrote:
> Allan McRae <allan at archlinux.org> on Thu, 2022/01/13 23:52:
>> On 13/1/22 23:11, Christian Hesse wrote:
>>> Hello everybody,
>>>
>>> I am still struggling with pacman having the server error limit enabled by
>>> default. My attempt to fix this for my use case with http headers [0] was
>>> reject.
>>>
>>> Also someone proposed to add a configuration option to disable server
>>> error limit [1]... It was rejected as well.
>>>
>>> But I guess the best way to solve this is finally implementing an option
>>> "CacheServer", as requested a long time ago [2]. Looks like Allan did not
>>> fine the "spare 30 minutes" [3] to implement... :)
>>>
>>> Thus I would like to have a look. Still I would like to have a rough guide
>>> where to put what and how to glue things. Anybody wants to share some
>>> thoughts what an acceptable solution should look like?
>>>
>>> [0] https://lists.archlinux.org/pipermail/pacman-dev/2021-May/025159.html
>>> [1] https://bugs.archlinux.org/task/71352
>>> [2] https://bugs.archlinux.org/task/23407
>>> [3]
>>> https://lists.archlinux.org/pipermail/pacman-dev/2021-June/025184.html
>>
>> I have had a spare 5 minutes...   you need to add a CacheServer global
>> option to pacman.conf and wire that into pacman & libalpm.   Then when
>> forming the list of Servers in a download payload for a package, you
>> need to add that server at the top and note that it is a cache server.
> 
> Sure, so we want to put cache and regular servers in a single list?
> 
> Currently this uses alpm_list_t, which is a doubly linked list. The servers
> are added as 'char *' there. Do we want to add a struct for servers which adds
> a field for storing its type?
> 
> typedef struct _alpm_server_t {
> 	int cache;
> 	char *server;
> } alpm_server_t;
> 

Having not looked at this in detail... my initial reaction is no. 
Assuming we allow a single CacheServer, would it be more efficient to 
add the field into the payload struct?

>> Then in the try next server function, check if we are using the cache
>> server, and silently move onto the normal servers.
> 



More information about the pacman-dev mailing list