unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Caching calls to download-to-store?
@ 2024-11-27 20:21 Ricardo Wurmus
  2024-11-28  8:33 ` Ludovic Courtès
  0 siblings, 1 reply; 3+ messages in thread
From: Ricardo Wurmus @ 2024-11-27 20:21 UTC (permalink / raw)
  To: guix-devel

Hi Guix,

the CRAN updater downloads every upstream archive three times.  The
importer memoizes calls to the download procedure, but one download that
is out of reach is the very first.

It is triggered by package-update/url-fetch in (guix upstream).  It uses
download-to-store, which will unconditionally fetch whatever URL it is
given.

I would very much like to parameterize download-to-store, so that we can
optionally cache the results of its invocation.

What do you think?

-- 
Ricardo


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Caching calls to download-to-store?
  2024-11-27 20:21 Caching calls to download-to-store? Ricardo Wurmus
@ 2024-11-28  8:33 ` Ludovic Courtès
  2024-11-28 10:21   ` Ricardo Wurmus
  0 siblings, 1 reply; 3+ messages in thread
From: Ludovic Courtès @ 2024-11-28  8:33 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

Hi,

Ricardo Wurmus <rekado@elephly.net> skribis:

> the CRAN updater downloads every upstream archive three times.  The
> importer memoizes calls to the download procedure, but one download that
> is out of reach is the very first.
>
> It is triggered by package-update/url-fetch in (guix upstream).  It uses
> download-to-store, which will unconditionally fetch whatever URL it is
> given.

Why three times (and not two)?

> I would very much like to parameterize download-to-store, so that we can
> optionally cache the results of its invocation.

I’m not sure exactly how to do that, but why not.

Another option would be to register GC roots (or mere symlinks) in
~/.cache for things that are downloaded, and then to use
‘If-Modified-Since’ plus some default TTL to determine whether to
re-download things.

HTH,
Ludo’.


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Caching calls to download-to-store?
  2024-11-28  8:33 ` Ludovic Courtès
@ 2024-11-28 10:21   ` Ricardo Wurmus
  0 siblings, 0 replies; 3+ messages in thread
From: Ricardo Wurmus @ 2024-11-28 10:21 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

Ludovic Courtès <ludo@gnu.org> writes:

> Hi,
>
> Ricardo Wurmus <rekado@elephly.net> skribis:
>
>> the CRAN updater downloads every upstream archive three times.  The
>> importer memoizes calls to the download procedure, but one download that
>> is out of reach is the very first.
>>
>> It is triggered by package-update/url-fetch in (guix upstream).  It uses
>> download-to-store, which will unconditionally fetch whatever URL it is
>> given.
>
> Why three times (and not two)?

Not entirely sure, but it's tracked here

   https://issues.guix.gnu.org/48792
   https://issues.guix.gnu.org/44256

I'm already caching some downloads in the updater, but it's not always
working as intended.  (I have an unfinished fix for this locally.)

>> I would very much like to parameterize download-to-store, so that we can
>> optionally cache the results of its invocation.
>
> I’m not sure exactly how to do that, but why not.
>
> Another option would be to register GC roots (or mere symlinks) in
> ~/.cache for things that are downloaded, and then to use
> ‘If-Modified-Since’ plus some default TTL to determine whether to
> re-download things.

That's a good idea.  Currently, we download to arbitrary temporary
directories.  The downloads performed by importers vanish immediately.

-- 
Ricardo


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-11-28 10:22 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-27 20:21 Caching calls to download-to-store? Ricardo Wurmus
2024-11-28  8:33 ` Ludovic Courtès
2024-11-28 10:21   ` Ricardo Wurmus

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).