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

Re: [PATCH] upload-pack: Exit when server finishes sending shallow-update in stateless RPC mode

From
Torsten Bögershausen <tboegi@web.de>
Date
Apr 12, 2016, 05:39 UTC
Message-ID
<570C8A02.4050703@web.de>
In-Reply-To
<1460436940-16165-1-git-send-email-stanhu@gmail.com>
On 04/12/2016 06:55 AM, Stan Hu wrote:
Show 7 quoted lines
> 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 ?

Show 18 quoted lines
> 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;
Previous: Stan Hu
Message 2 of 2 in “upload-pack: Exit when server finishes sending shallow-update in stateless RPC mode”
  1. upload-pack: Exit when server finishes sending shallow-update in stateless RPC modeStan Hu, Apr 12, 2016
  2. Torsten BögershausenApr 12, 2016

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.