git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] remote-curl: Fix push status report when all branches fail

From
Shawn Pearce <spearce@spearce.org>
Date
Feb 22, 2012, 15:22 UTC
Message-ID
<CAJo=hJsFDrt4rsxVAnx86bxZDY3yfWc1=GDd8opUU+9z7esLnw@mail.gmail.com>
In-Reply-To
<20120222101302.GA11606@sigill.intra.peff.net>
On Wed, Feb 22, 2012 at 02:13, Jeff King <peff@peff.net> wrote:
> On Fri, Jan 20, 2012 at 09:03:31AM -0800, Shawn O. Pearce wrote:
> This hunk is causing intermittent failures of t5541 for me, especially
> when the system is under heavy load (e.g., make -j32 test).
...
Show 27 quoted lines
> @@ -220,15 +221,21 @@ static struct child_process *get_helper(struct transport *transport)
>  static int disconnect_helper(struct transport *transport)
>  {
>        struct helper_data *data = transport->data;
> -       struct strbuf buf = STRBUF_INIT;
>        int res = 0;
>
>        if (data->helper) {
>                if (debug)
>                        fprintf(stderr, "Debug: Disconnecting.\n");
>                if (!data->no_disconnect_req) {
> -                       strbuf_addf(&buf, "\n");
> -                       sendline(data, &buf);
> +                       /*
> +                        * Ignore write errors; there's nothing we can do,
> +                        * since we're about to close the pipe anyway. And the
> +                        * most likely error is EPIPE due to the helper dying
> +                        * to report an error itself.
> +                        */
> +                       sigchain_push(SIGPIPE, SIG_IGN);
> +                       xwrite(data->helper->in, "\n", 1);
> +                       sigchain_pop(SIGPIPE);
>                }
>                close(data->helper->in);
>                close(data->helper->out);
>
> which makes the t5541 failures go away for me. What do you think?

This sounds right to me. Its unfortunate that we missed the error status output when we built the remote helper protocol, but your patch above might be the best we can do now.

Eh, well, actually we could have the helper advertise a new capability that can be enabled to return exit status. That is a much bigger change, and even if we do it for remote-curl (since that is in tree and easy to update) we still need your patch for the same race condition for out of tree helpers (which Google actually has so I care about out of tree helpers too).

Previous: Jeff KingNext: Jeff King
Message 11 of 14 in “remote-curl: Fix push status report when all branches fail”
  1. remote-curl: Fix push status report when all branches failShawn O. Pearce, Jan 19, 2012
  2. Junio C HamanoJan 19, 2012
  3. remote-curl: Fix push status report when all branches failShawn O. Pearce, Jan 20, 2012
  4. Junio C HamanoJan 20, 2012
  5. Junio C HamanoJan 20, 2012
  6. Shawn PearceJan 20, 2012
  7. Thomas RastJan 20, 2012
  8. remote-curl: Fix push status report when all branches failShawn O. Pearce, Jan 20, 2012
  9. Junio C HamanoJan 20, 2012
  10. Jeff KingFeb 22, 2012
  11. Shawn PearceFeb 22, 2012
  12. Jeff KingFeb 22, 2012
  13. Jeff KingFeb 23, 2012
  14. Junio C HamanoFeb 23, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.