GNU bug report logs -
#52555
[RFC PATCH 0/3] Decentralized substitute distribution with ERIS
Previous Next
Full log
Message #58 received at 52555 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
pukkamustard schreef op di 25-01-2022 om 19:21 [+0000]:
> +(define (ipfs-daemon-alive?)
> + "Attempt to connect to the IPFS daemon. Returns #t if the daemon is alive
> +and #f else."
> + (with-exception-handler
> + (const #f)
> + (lambda _
> + (let ((response _
> + (http-post (string-append (%ipfs-base-url)
> + "/api/v0/version"))))
> + (equal? 200 (response-code response))))
> + #:unwind? #t))
This should preferably only be catching exceptions indicating that
the daemon is down (exceptions indicating 404s, or system-errors
indicating network errors, ...).
> +
> +(define guix-eris-block-reducer
> + (case-lambda
> +
> + ;; Check if IPFS Daemon is running.
> + (() (if (ipfs-daemon-alive?)
> + (eris-blocks-ipfs-reducer)
> + #f))
> +
> + ;; Completion. Nothing to do.
> + ((_) #t)
> +
> + ((ipfs ref-block)
> + ;; If IPFS has been initialized store block there
> + (if ipfs
> + (eris-blocks-ipfs-reducer ipfs ref-block)
> + ipfs))))
This (ipfs-daemon-alive?) seems racy, although it's probably not.
Can we do
(define guix-eris-block-reducer
(case-lambda
(() (guard (c (oops-it-fails-because-the-daemon-cannot-be-
contacted? c)
#false)
(eris-block-ipfs-reducer))
[...]))
instead? (I don't think this will work as-is, because from the name and
thunkiness, it would appear that eris-block-ipfs-reducer returns a
procedure ...
Greetings,
Maxime.
[signature.asc (application/pgp-signature, inline)]
This bug report was last modified 1 year and 168 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.