guix-patches
[Top][All Lists]
Advanced

[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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]