git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Stefan Beller <sbeller@google.com>
To: Jeff King <peff@peff.net>
Cc: "Lars Schneider" <larsxschneider@gmail.com>,
	"git@vger.kernel.org" <git@vger.kernel.org>,
	"Junio C Hamano" <gitster@pobox.com>,
	"Jakub Narębski" <jnareb@gmail.com>,
	mlbright@gmail.com, "Eric Wong" <e@80x24.org>,
	"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
	ben@wijen.net
Subject: Re: [PATCH v5 14/15] convert: add filter.<driver>.process option
Date: Fri, 12 Aug 2016 09:48:21 -0700	[thread overview]
Message-ID: <CAGZ79kaRKROUganF838w29rCkJ592sZvu+q9fo+h4a4sPeDXMQ@mail.gmail.com> (raw)
In-Reply-To: <20160812163809.3wdkuqegxfjam2yn@sigill.intra.peff.net>

On Fri, Aug 12, 2016 at 9:38 AM, Jeff King <peff@peff.net> wrote:
> On Fri, Aug 12, 2016 at 09:33:18AM -0700, Stefan Beller wrote:
>
>> > If the result content is empty then the filter is expected to respond
>> > with a success status and an empty list.
>> > ------------------------
>> > packet:          git< status=success\n
>> > packet:          git< 0000
>> > packet:          git< 0000  # empty content!
>> > packet:          git< 0000  # empty list!
>> > ------------------------
>>
>> Why do we need the last flush packet? We'd expect as many successes
>> as we send out contents? Do we plan on interleaving operation, i.e.
>> Git sends out 10 files but the filter process is not as fast as Git sending
>> out and the answers trickle in slowly?
>
> There was prior discussion in the thread, but basically, it is there to
> be able to signal an error that is encountered midway through sending
> the file (i.e., to say "status=error"). If you do not have a final
> flush, then you would send nothing, and the receiver would be left
> wondering if you were successful, or if it simply did not get your error
> report yet.

    I did not follow the prior discussion, so I approached this review with
    no prior knowledge from prior reviews, but instead read through and
    was asking a lot of questions that came up immediately. In case my
    questions are too dumb just omit them, but I thought they were good
    material to answer in a commit message ("Why did we do it this way
    and not differently").

Thanks for the explanation. So this is similar as the situation below
that we wait for the flush and then an error/success report?

>
>> > If the filter experiences an error during processing, then it can
>> > send the status "error". Depending on the `filter.<driver>.required`
>> > flag Git will interpret that as error but it will not stop or restart
>> > the filter process.
>> > ------------------------
>> > packet:          git< status=success\n
>>
>> So the first success is meaningless essentially?
>> Would it make sense to move the sucess behind the content sending
>> in all cases?
>
> No, the first success says "good so far, here's the file content". The
> second says "I succeeded in sending you the file content".
>
> You _can_ drop the first one, but it may be more convenient for the
> receiver to know up-front that there was a failure.


If there was a failure upfront, it would become

packet:          git< 0000
# no content is encapsulated here
packet:          git< 0000
packet:          git< status=error\n
packet:          git< 0000

so from a protocol side I'd claim it doesn't look bad.
I assume with convenient you mean the implementation
side of things?

If we do the success first and then error out halfway, we
still have to clean up, so I do not see how this impacts
implementation?

Thanks,
Stefan

  reply	other threads:[~2016-08-12 16:48 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20160803164225.46355-1-larsxschneider@gmail.com/>
2016-08-10 13:03 ` [PATCH v5 00/15] Git filter protocol larsxschneider
2016-08-10 13:03   ` [PATCH v5 01/15] pkt-line: extract set_packet_header() larsxschneider
2016-08-10 13:03   ` [PATCH v5 02/15] pkt-line: call packet_trace() only if a packet is actually send larsxschneider
2016-08-10 13:13     ` Jeff King
2016-08-10 13:24       ` Lars Schneider
2016-08-10 13:30         ` Jeff King
2016-08-10 13:51           ` Lars Schneider
2016-08-10 14:33             ` Jeff King
2016-08-10 13:03   ` [PATCH v5 03/15] pkt-line: add `gentle` parameter to format_packet() larsxschneider
2016-08-10 13:15     ` Jeff King
2016-08-10 13:29       ` Lars Schneider
2016-08-10 13:37         ` Jeff King
2016-08-10 13:59           ` Lars Schneider
2016-08-10 14:34             ` Jeff King
2016-08-10 13:04   ` [PATCH v5 04/15] pkt-line: add packet_write_gently() larsxschneider
2016-08-10 13:28     ` Jeff King
2016-08-10 13:36       ` Lars Schneider
2016-08-10 13:40         ` Jeff King
2016-08-10 17:17           ` Junio C Hamano
2016-08-10 17:49             ` Lars Schneider
2016-08-10 18:21               ` Junio C Hamano
2016-08-10 19:15                 ` Lars Schneider
2016-08-10 13:04   ` [PATCH v5 05/15] pkt-line: add packet_write_gently_fmt() larsxschneider
2016-08-10 13:43     ` Jeff King
2016-08-10 14:10       ` Lars Schneider
2016-08-10 15:01         ` Jeff King
2016-08-10 17:18       ` Junio C Hamano
2016-08-10 17:53         ` Lars Schneider
2016-08-10 18:42           ` Junio C Hamano
2016-08-10 13:04   ` [PATCH v5 06/15] pkt-line: add packet_flush_gently() larsxschneider
2016-08-10 13:04   ` [PATCH v5 07/15] pkt-line: add functions to read/write flush terminated packet streams larsxschneider
2016-08-10 13:04   ` [PATCH v5 08/15] pkt-line: rename packet_write() to packet_write_fmt() larsxschneider
2016-08-10 13:04   ` [PATCH v5 09/15] pack-protocol: fix maximum pkt-line size larsxschneider
2016-08-10 13:04   ` [PATCH v5 10/15] convert: quote filter names in error messages larsxschneider
2016-08-10 13:04   ` [PATCH v5 11/15] convert: modernize tests larsxschneider
2016-08-10 13:04   ` [PATCH v5 12/15] convert: generate large test files only once larsxschneider
2016-08-10 13:04   ` [PATCH v5 13/15] convert: make apply_filter() adhere to standard Git error handling larsxschneider
2016-08-10 13:04   ` [PATCH v5 14/15] convert: add filter.<driver>.process option larsxschneider
2016-08-12 16:33     ` Stefan Beller
2016-08-12 16:38       ` Jeff King
2016-08-12 16:48         ` Stefan Beller [this message]
2016-08-12 17:08           ` Lars Schneider
2016-08-12 17:13             ` Junio C Hamano
2016-08-12 17:21               ` Lars Schneider
2016-08-12 18:03                 ` Junio C Hamano
2016-08-12 16:59       ` Lars Schneider
2016-08-12 17:07         ` Stefan Beller
2016-08-12 17:14           ` Lars Schneider
2016-08-10 13:04   ` [PATCH v5 15/15] read-cache: make sure file handles are not inherited by child processes larsxschneider
2016-08-18 14:23     ` Johannes Schindelin

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

  List information: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to=CAGZ79kaRKROUganF838w29rCkJ592sZvu+q9fo+h4a4sPeDXMQ@mail.gmail.com \
    --to=sbeller@google.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=ben@wijen.net \
    --cc=e@80x24.org \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jnareb@gmail.com \
    --cc=larsxschneider@gmail.com \
    --cc=mlbright@gmail.com \
    --cc=peff@peff.net \
    /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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.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).