From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, "Daniel Barkalow" <barkalow@iabervon.org>,
"Sverre Rabbelier" <srabbelier@gmail.com>,
"Björn Steinbrink" <B.Steinbrink@gmx.de>,
"Matthieu Moy" <Matthieu.Moy@imag.fr>,
"Sitaram Chamarty" <sitaramc@gmail.com>
Subject: [PATCH] clone: disconnect transport after fetching
Date: Wed, 2 Sep 2009 02:36:47 -0400 [thread overview]
Message-ID: <20090902063647.GA29559@coredump.intra.peff.net> (raw)
In-Reply-To: <alpine.LNX.2.00.0909020159080.28290@iabervon.org>
The current code just leaves the transport in whatever state
it was in after performing the fetch. For a non-empty clone
over the git protocol, the transport code already
disconnects at the end of the fetch.
But for an empty clone, we leave the connection hanging, and
eventually close the socket when clone exits. This causes
the remote upload-pack to complain "the remote end hung up
unexpectedly". While this message is harmless to the clone
itself, it is unnecessarily scary for a user to see and may
pollute git-daemon logs.
This patch just explicitly calls disconnect after we are
done with the remote end, which sends a flush packet to
upload-pack and cleanly disconnects, avoiding the error
message.
Other transports are unaffected or slightly improved:
- for a non-empty repo over the git protocol, the second
disconnect is a no-op (since we are no longer connected)
- for "walker" transports (like HTTP or FTP), we actually
free some used memory (which previously just sat until
the clone process exits)
- for "rsync", disconnect is always a no-op anyway
Signed-off-by: Jeff King <peff@peff.net>
---
This was suggested by Daniel, so theoretically
Acked-by: Daniel Barkalow <barkalow@iabervon.org>
:)
As you can see from the commit message, I did a little extra hunting to
make sure we are not going to impact any other code paths, and I am
pretty sure we are fine.
builtin-clone.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/builtin-clone.c b/builtin-clone.c
index 991a7ae..0f231d8 100644
--- a/builtin-clone.c
+++ b/builtin-clone.c
@@ -580,8 +580,10 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
option_no_checkout = 1;
}
- if (transport)
+ if (transport) {
transport_unlock_pack(transport);
+ transport_disconnect(transport);
+ }
if (!option_no_checkout) {
struct lock_file *lock_file = xcalloc(1, sizeof(struct lock_file));
--
1.6.4.2.401.ga275f.dirty
next prev parent reply other threads:[~2009-09-02 6:36 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-31 11:14 clong an empty repo over ssh causes (harmless) fatal Sitaram Chamarty
2009-08-31 11:22 ` Matthieu Moy
2009-08-31 14:30 ` Sitaram Chamarty
2009-08-31 14:47 ` Matthieu Moy
2009-08-31 16:41 ` Jeff King
2009-08-31 17:12 ` Sverre Rabbelier
2009-08-31 19:08 ` Jeff King
2009-08-31 19:09 ` Sverre Rabbelier
2009-08-31 17:25 ` Matthieu Moy
2009-08-31 19:10 ` Jeff King
2009-08-31 20:19 ` Björn Steinbrink
2009-08-31 22:47 ` Jeff King
2009-08-31 22:50 ` Sverre Rabbelier
2009-09-01 1:08 ` Jeff King
2009-09-02 4:33 ` Daniel Barkalow
2009-09-02 5:16 ` Jeff King
2009-09-02 6:02 ` Daniel Barkalow
2009-09-02 6:36 ` Jeff King [this message]
2009-09-02 7:09 ` [PATCH] clone: disconnect transport after fetching Sverre Rabbelier
2009-09-02 7:26 ` Jeff King
2009-09-02 7:37 ` Sverre Rabbelier
2009-09-02 16:38 ` Daniel Barkalow
2009-09-02 17:55 ` Junio C Hamano
2009-09-04 2:30 ` Jeff King
2009-09-02 5:30 ` clong an empty repo over ssh causes (harmless) fatal Sitaram Chamarty
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=20090902063647.GA29559@coredump.intra.peff.net \
--to=peff@peff.net \
--cc=B.Steinbrink@gmx.de \
--cc=Matthieu.Moy@imag.fr \
--cc=barkalow@iabervon.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=sitaramc@gmail.com \
--cc=srabbelier@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).