From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?UTF-8?Q?Court=C3=A8s?=) Subject: bug#26705: guix publish daemon on Hydra became dysfunctional; needed restart Date: Tue, 02 May 2017 11:14:33 +0200 Message-ID: <878tmflix2.fsf@gnu.org> References: <877f24xiv9.fsf@netris.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:37564) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5Ttj-0005a7-Gv for bug-guix@gnu.org; Tue, 02 May 2017 05:15:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5Tte-0002Ub-Ew for bug-guix@gnu.org; Tue, 02 May 2017 05:15:07 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:52097) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5Tte-0002UU-Ap for bug-guix@gnu.org; Tue, 02 May 2017 05:15:02 -0400 Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: <877f24xiv9.fsf@netris.org> (Mark H. Weaver's message of "Fri, 28 Apr 2017 18:33:30 -0400") List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: "bug-Guix" To: Mark H Weaver Cc: 26705@debbugs.gnu.org Hello, Mark H Weaver skribis: > While trying to update my GuixSD system in the last hour, I found that > every attempt by the substituter to download NARs resulted in a 500 > "Internal Server Error": [...] > Bypassing the mirror didn't help: Did you try talking directly to =E2=80=98guix publish=E2=80=99 (localhost:9= 999 on hydra.gnu.org)? > Here's what I found in the recent output of the 'guix publish' server on > Hydra (running in root's screen session): > > GET /74ch6nvjfkj3i56nygwijnaghlpi01d4.narinfo > In guix/scripts/publish.scm: > 393:2 2 (render-narinfo/cached # ...) > In guix/store.scm: > 663:9 1 (query-path-from-hash-part # #) > In unknown file: > 0 (put-bytevector # #vu8(# ...) ...) > ERROR: In procedure fport_write: Broken pipe > GET /guix/nar/qz4mg7sid6avdav158lhr6wziqswpjmx-gnome-calendar-3.22.2.tar.= xz > In guix/scripts/publish.scm: > 491:8 2 (render-nar # #< ...) > In guix/store.scm: > 648:0 1 (valid-path? # "/gnu/sto...") > In unknown file: > 0 (put-bytevector # #vu8(1 ...) ...) > ERROR: In procedure fport_write: Broken pipe Ooh, the connection to the daemon was broken, hence this error. Currently =E2=80=98guix publish=E2=80=99 assumes the connection opened in t= he =E2=80=98guix-publish=E2=80=99 procedure remains valid all along. That=E2= =80=99s normally the case unless (1) the daemon is restarted, or (2) there=E2=80=99s a protocol = error somewhere that leads the daemon to close the connection. #2 is not supposed to happen, but could happen if, for instance, an exception is thrown before we have read the RPC reply sent by the daemon. Perhaps =E2=80=98guix publish=E2=80=99 could catch EPIPE when talking to th= e daemon? (Currently EPIPEs are swallowed by =E2=80=98handle-request=E2=80=99 in (web= server) and converted to 500.) That said, if there really is a situation where =E2=80=98guix publish=E2=80= =99 can violate the daemon protocol, that=E2=80=99s what should be fixed. Thoughts? Thanks for handling this quickly! Ludo=E2=80=99.