All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: David Turner <dturner@twopensource.com>
Cc: git@vger.kernel.org, pclouds@gmail.com
Subject: Re: [PATCH v10 03/20] pkt-line: add gentle version of packet_write
Date: Thu, 12 May 2016 14:14:26 -0700	[thread overview]
Message-ID: <xmqqlh3fc72l.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <1463084415-19826-4-git-send-email-dturner@twopensource.com> (David Turner's message of "Thu, 12 May 2016 16:19:58 -0400")

David Turner <dturner@twopensource.com> writes:

> packet_write calls write_or_die, which dies with a sigpipe even if
> calling code has explicitly blocked that signal.
>
> Add packet_write_gently and packet_flush_gently, which don't.  Soon,
> we will use this for communication with git index-helper, which, being
> merely an optimization, should be permitted to die without disrupting
> clients.
>
> Signed-off-by: David Turner <dturner@twopensource.com>
> ---

Looks quite sensible.  Thanks.

>  pkt-line.c | 18 ++++++++++++++++++
>  pkt-line.h |  2 ++
>  2 files changed, 20 insertions(+)
>
> diff --git a/pkt-line.c b/pkt-line.c
> index 62fdb37..f964446 100644
> --- a/pkt-line.c
> +++ b/pkt-line.c
> @@ -91,6 +91,12 @@ void packet_flush(int fd)
>  	write_or_die(fd, "0000", 4);
>  }
>  
> +int packet_flush_gently(int fd)
> +{
> +	packet_trace("0000", 4, 1);
> +	return write_in_full(fd, "0000", 4) != 4;
> +}
> +
>  void packet_buf_flush(struct strbuf *buf)
>  {
>  	packet_trace("0000", 4, 1);
> @@ -130,6 +136,18 @@ void packet_write(int fd, const char *fmt, ...)
>  	write_or_die(fd, buf.buf, buf.len);
>  }
>  
> +int packet_write_gently(int fd, const char *fmt, ...)
> +{
> +	static struct strbuf buf = STRBUF_INIT;
> +	va_list args;
> +
> +	strbuf_reset(&buf);
> +	va_start(args, fmt);
> +	format_packet(&buf, fmt, args);
> +	va_end(args);
> +	return write_in_full(fd, buf.buf, buf.len) != buf.len;
> +}
> +
>  void packet_buf_write(struct strbuf *buf, const char *fmt, ...)
>  {
>  	va_list args;
> diff --git a/pkt-line.h b/pkt-line.h
> index 3cb9d91..deffcb5 100644
> --- a/pkt-line.h
> +++ b/pkt-line.h
> @@ -20,7 +20,9 @@
>   * side can't, we stay with pure read/write interfaces.
>   */
>  void packet_flush(int fd);
> +int packet_flush_gently(int fd);
>  void packet_write(int fd, const char *fmt, ...) __attribute__((format (printf, 2, 3)));
> +int packet_write_gently(int fd, const char *fmt, ...) __attribute__((format (printf, 2, 3)));
>  void packet_buf_flush(struct strbuf *buf);
>  void packet_buf_write(struct strbuf *buf, const char *fmt, ...) __attribute__((format (printf, 2, 3)));

  reply	other threads:[~2016-05-12 21:14 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-12 20:19 [PATCH v10 00/20] index-helper/watchman David Turner
2016-05-12 20:19 ` [PATCH v10 01/20] read-cache.c: fix constness of verify_hdr() David Turner
2016-05-12 20:19 ` [PATCH v10 02/20] read-cache: allow to keep mmap'd memory after reading David Turner
2016-05-12 20:19 ` [PATCH v10 03/20] pkt-line: add gentle version of packet_write David Turner
2016-05-12 21:14   ` Junio C Hamano [this message]
2016-05-12 20:19 ` [PATCH v10 04/20] index-helper: new daemon for caching index and related stuff David Turner
2016-05-12 20:20 ` [PATCH v10 05/20] index-helper: add --strict David Turner
2016-05-12 20:20 ` [PATCH v10 06/20] daemonize(): set a flag before exiting the main process David Turner
2016-05-12 20:20 ` [PATCH v10 07/20] index-helper: add --detach David Turner
2016-05-12 20:20 ` [PATCH v10 08/20] index-helper: log warnings David Turner
2016-05-12 20:20 ` [PATCH v10 09/20] read-cache: add watchman 'WAMA' extension David Turner
2016-05-12 20:20 ` [PATCH v10 10/20] watchman: support watchman to reduce index refresh cost David Turner
2016-05-12 20:20 ` [PATCH v10 11/20] index-helper: use watchman to avoid refreshing index with lstat() David Turner
2016-05-12 23:10   ` Ramsay Jones
2016-05-13 17:47     ` David Turner
2016-05-13 18:27     ` [PATCH] " David Turner
2016-05-13 20:17       ` Ramsay Jones
2016-05-13 21:16         ` [PATCH v10 ter] " David Turner
2016-05-12 20:20 ` [PATCH v10 12/20] update-index: enable/disable watchman support David Turner
2016-05-12 20:20 ` [PATCH v10 13/20] unpack-trees: preserve index extensions David Turner
2016-05-12 20:20 ` [PATCH v10 14/20] watchman: add a config option to enable the extension David Turner
2016-05-12 20:20 ` [PATCH v10 15/20] index-helper: kill mode David Turner
2016-05-12 20:20 ` [PATCH v10 16/20] index-helper: don't run if already running David Turner
2016-05-12 20:20 ` [PATCH v10 17/20] index-helper: autorun mode David Turner
2016-05-12 20:20 ` [PATCH v10 18/20] index-helper: optionally automatically run David Turner
2016-05-12 20:20 ` [PATCH v10 19/20] trace: measure where the time is spent in the index-heavy operations David Turner
2016-05-12 20:20 ` [PATCH v10 20/20] untracked-cache: config option David Turner
2016-05-15  9:43   ` Duy Nguyen
2016-05-16 18:03     ` David Turner
2016-05-14 13:14 ` [PATCH v10 00/20] index-helper/watchman Dennis Kaarsemaker
2016-05-19 19:08 ` David Turner
2016-05-19 20:11   ` Junio C Hamano
2016-05-19 20:30     ` David Turner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqlh3fc72l.fsf@gitster.mtv.corp.google.com \
    --to=gitster@pobox.com \
    --cc=dturner@twopensource.com \
    --cc=git@vger.kernel.org \
    --cc=pclouds@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.