[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#44193] [PATCH 0/1] 'guix publish --cache' can publish items not yet
From: |
Miguel Ángel Arruga Vivas |
Subject: |
[bug#44193] [PATCH 0/1] 'guix publish --cache' can publish items not yet cached |
Date: |
Sun, 25 Oct 2020 18:30:41 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) |
Hi, Ludo!
Ludovic Courtès <ludo@gnu.org> writes:
> Hi!
>
> Miguel Ángel Arruga Vivas <rosen644835@gmail.com> skribis:
>
>> Ludovic Courtès <ludo@gnu.org> writes:
>>> Thus, the first narinfo request for an item would always return 404;
>>> one would have to wait until the item is baked to get 200 and download
>>> the substitute.
>>
>> I'd argue that returning unconditionally the 404 is a problem. If the
>> nar is getting baked, I guess that a 202[1] would be the appropriate
>> answer, and I'd leave the 404 for invalid store paths[2]. This way the
>> client could implement more policies: the classic timeout, but also, for
>> example, it might check other servers before checking once again if
>> nobody else has it, or directly wait until a 404 is reached. WDYT?
>
> Indeed, 202 seems more appropriate (and it’s precisely half of 404, that
> tells something!).
:-)
> Unfortunately (guix scripts substitute) currently explicitly checks for
> 404 and 200 and considers anything else to be a transient error with a
> default TTL (in ‘handle-narinfo-response’). So we would need to adapt
> that first and then wait until some time has passed before ‘guix
> publish’ can return 202. :-/
I see, it uses 'max-age from the http response only when it's a 404.
Nonetheless, correct me if I'm wrong, the difference is 5 vs 10 minutes,
so I don't think we should wait too much to upgrade both sides. :-)
> I guess we can change (guix scripts substitute) with that in mind
> already. WDYT?
I fully agree with that. Adding 202 together with 404 would be enough
as an start, wouldn't it?
-------------------------------8<-----------------------------
(cache-narinfo! url (hash-part->path hash-part) #f
(if (or (= 404 code) (= 202 code))
ttl
%narinfo-transient-error-ttl))
------------------------------->8-----------------------------
Happy hacking!
Miguel