From: "Torsten Bögershausen" <tboegi@web.de>
To: Stan Hu <stanhu@gmail.com>, gitster@pobox.com
Cc: git@vger.kernel.org
Subject: Re: [PATCH] upload-pack: Exit when server finishes sending shallow-update in stateless RPC mode
Date: Tue, 12 Apr 2016 07:39:14 +0200 [thread overview]
Message-ID: <570C8A02.4050703@web.de> (raw)
In-Reply-To: <1460436940-16165-1-git-send-email-stanhu@gmail.com>
On 04/12/2016 06:55 AM, Stan Hu wrote:
> In the stateless RPC case, the server should respond to the client's depth
> request with the set of commits which are no deeper than the desired
> depth. Once this finishes, the server should terminate and receive the reply
> in another POST request.
>
> Previously the server would sit idle and die when it detected the client
> closed the connection.
Some loose thoughts about the wording(s):
the server did not terminate (it's a machine, a hardware), a process
terminated.
And it did not "die" either, it terminates gracefully.
How about something like this:
In the stateless RPC case, the server responds to the client's depth
request. Once this finishes, the server should terminate.
The reply is and received in another POST request.
Previously the server would sit idle and terminates when it detected the client
closed the connection.
---------------
But, but,
there is may be more.
What happens, when the server process calls exit(0) ?
Is there a guarantee that the data is send out on the socket?
Or is the exit(0) ripping out all the data in the TCP send buffers,
and the client may, or not may, receive the complete packets.
Beside that, a close() of a socket means that the socket is going into
time_wait() state.
Is this desirable for a server to have many sockets in time_wait ?
(This is out of my head, I may be wrong)
Could it be that the client is broken ?
Could you elaborate this a little bit more ?
> Signed-off-by: Stan Hu <stanhu@gmail.com>
> ---
> upload-pack.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/upload-pack.c b/upload-pack.c
> index b3f6653..4fb1e60 100644
> --- a/upload-pack.c
> +++ b/upload-pack.c
> @@ -676,6 +676,8 @@ static void receive_needs(void)
> register_shallow(object->oid.hash);
> }
> packet_flush(1);
> + if (stateless_rpc)
> + exit(0);
> } else
> if (shallows.nr > 0) {
> int i;
prev parent reply other threads:[~2016-04-12 5:39 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-12 4:55 [PATCH] upload-pack: Exit when server finishes sending shallow-update in stateless RPC mode Stan Hu
2016-04-12 5:39 ` Torsten Bögershausen [this message]
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=570C8A02.4050703@web.de \
--to=tboegi@web.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=stanhu@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 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 NNTP newsgroup(s).