git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] git-svn: error out when the SVN connection fails during a fetch
@ 2006-11-28 22:06 Eric Wong
  2006-11-28 22:24 ` Eric Wong
  2006-12-03 18:23 ` Florian Weimer
  0 siblings, 2 replies; 9+ messages in thread
From: Eric Wong @ 2006-11-28 22:06 UTC (permalink / raw)
  To: Junio C Hamano, Pazu; +Cc: Seth Falcon, git

finish_report does seem to return a useful value indicating success
or failure, so we'll just set a flag when close_edit is called
(it is not called on failures, nor is abort_edit) and check
the flag before proceeding.

Thanks to Pazu for pointing this out.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
---
 git-svn.perl |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/git-svn.perl b/git-svn.perl
index 7942bba..c3ad5ec 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -2941,6 +2941,9 @@ sub libsvn_fetch_delta {
 	$reporter->set_path('', $last_rev, 0, @lock, $pool);
 	$reporter->finish_report($pool);
 	$pool->clear;
+	unless ($ed->{git_commit_ok}) {
+		die "SVN connection failed somewhere...\n";
+	}
 	libsvn_log_entry($rev, $author, $date, $msg, [$last_commit]);
 }
 
@@ -3195,6 +3198,9 @@ sub libsvn_new_tree {
 		$reporter->set_path('', $rev, 1, @lock, $pool);
 		$reporter->finish_report($pool);
 		$pool->clear;
+		unless ($ed->{git_commit_ok}) {
+			die "SVN connection failed somewhere...\n";
+		}
 	} else {
 		open my $gui, '| git-update-index -z --index-info' or croak $!;
 		libsvn_traverse($gui, '', $SVN->{svn_path}, $rev);
@@ -3501,7 +3507,8 @@ sub abort_edit {
 
 sub close_edit {
 	my $self = shift;
-	close $self->{gui} or croak;
+	close $self->{gui} or croak $!;
+	$self->{git_commit_ok} = 1;
 	$self->SUPER::close_edit(@_);
 }
 
-- 
1.4.4.1.ge151

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] git-svn: error out when the SVN connection fails during a fetch
  2006-11-28 22:06 [PATCH] git-svn: error out when the SVN connection fails during a fetch Eric Wong
@ 2006-11-28 22:24 ` Eric Wong
  2006-12-03 18:23 ` Florian Weimer
  1 sibling, 0 replies; 9+ messages in thread
From: Eric Wong @ 2006-11-28 22:24 UTC (permalink / raw)
  To: git

Eric Wong <normalperson@yhbt.net> wrote:
> finish_report does seem to return a useful value indicating success
> or failure, so we'll just set a flag when close_edit is called
> (it is not called on failures, nor is abort_edit) and check
> the flag before proceeding.

Also, this only affects the delta fetcher.  When using the non-delta
fetch: the SVN libraries will just segfault :)

-- 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] git-svn: error out when the SVN connection fails during a fetch
  2006-11-28 22:06 [PATCH] git-svn: error out when the SVN connection fails during a fetch Eric Wong
  2006-11-28 22:24 ` Eric Wong
@ 2006-12-03 18:23 ` Florian Weimer
  2006-12-04  8:52   ` Eric Wong
  1 sibling, 1 reply; 9+ messages in thread
From: Florian Weimer @ 2006-12-03 18:23 UTC (permalink / raw)
  To: git

* Eric Wong:

> finish_report does seem to return a useful value indicating success
> or failure, so we'll just set a flag when close_edit is called
> (it is not called on failures, nor is abort_edit) and check
> the flag before proceeding.

It seems that this needs some kind of fine-tuning.  Now that git-svn
uses HTTP keepalive connections, you get a HTTP request error once you
run into the server-side request limit.  It seems a bit excessive to

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] git-svn: error out when the SVN connection fails during a fetch
  2006-12-03 18:23 ` Florian Weimer
@ 2006-12-04  8:52   ` Eric Wong
  2006-12-04  8:56     ` Florian Weimer
  0 siblings, 1 reply; 9+ messages in thread
From: Eric Wong @ 2006-12-04  8:52 UTC (permalink / raw)
  To: Florian Weimer; +Cc: git

Florian Weimer <fw@deneb.enyo.de> wrote:
> * Eric Wong:
> 
> > finish_report does seem to return a useful value indicating success
> > or failure, so we'll just set a flag when close_edit is called
> > (it is not called on failures, nor is abort_edit) and check
> > the flag before proceeding.
> 
> It seems that this needs some kind of fine-tuning.  Now that git-svn
> uses HTTP keepalive connections, you get a HTTP request error once you
> run into the server-side request limit.  It seems a bit excessive to
> stop completely in this case.

Does the following patch help?

From: Eric Wong <normalperson@yhbt.net>
Date: Mon, 4 Dec 2006 00:51:16 -0800
Subject: [PATCH] git-svn: avoid network timeouts for long-running fetches

Long-running fetches run inside children to avoid memory leaks.
When we refork, the connection in the parent can be idle for a
long time; attempting to reuse it in the next child can result
in timeouts.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
---
 git-svn.perl |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/git-svn.perl b/git-svn.perl
index d0bd0bd..747daf0 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -459,6 +459,7 @@ sub fetch_lib {
 		$min = $max + 1;
 		$max += $inc;
 		$max = $head if ($max > $head);
+		$SVN = libsvn_connect($SVN_URL);
 	}
 	restore_index($index);
 	return { revision => $last_rev, commit => $last_commit };
-- 

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] git-svn: error out when the SVN connection fails during a fetch
  2006-12-04  8:52   ` Eric Wong
@ 2006-12-04  8:56     ` Florian Weimer
  2006-12-04  9:05       ` Eric Wong
  0 siblings, 1 reply; 9+ messages in thread
From: Florian Weimer @ 2006-12-04  8:56 UTC (permalink / raw)
  To: Eric Wong; +Cc: git

* Eric Wong:

> Does the following patch help?

Don't think so.  The issue is not timing-related.  I've seen a failure
every 1000 requests, which suggests to me that it's hitting the

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] git-svn: error out when the SVN connection fails during a fetch
  2006-12-04  8:56     ` Florian Weimer
@ 2006-12-04  9:05       ` Eric Wong
  2006-12-06 17:01         ` Florian Weimer
  0 siblings, 1 reply; 9+ messages in thread
From: Eric Wong @ 2006-12-04  9:05 UTC (permalink / raw)
  To: Florian Weimer; +Cc: git

Florian Weimer <fw@deneb.enyo.de> wrote:
> * Eric Wong:
> 
> > Does the following patch help?
> 
> Don't think so.  The issue is not timing-related.  I've seen a failure
> every 1000 requests, which suggests to me that it's hitting the
> MaxKeepAliveRequests limit configured on the server.

Actually, that's exactly what this patch should fix.  git-svn restarts a
child every 1000 revisions to avoid memory usage from going through the
roof.

-- 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] git-svn: error out when the SVN connection fails during a fetch
  2006-12-04  9:05       ` Eric Wong
@ 2006-12-06 17:01         ` Florian Weimer
  2006-12-06 19:01           ` Junio C Hamano
  0 siblings, 1 reply; 9+ messages in thread
From: Florian Weimer @ 2006-12-06 17:01 UTC (permalink / raw)
  To: git

* Eric Wong:

> Florian Weimer <fw@deneb.enyo.de> wrote:
>> * Eric Wong:
>> 
>> > Does the following patch help?
>> 
>> Don't think so.  The issue is not timing-related.  I've seen a failure
>> every 1000 requests, which suggests to me that it's hitting the
>> MaxKeepAliveRequests limit configured on the server.
>
> Actually, that's exactly what this patch should fix.  git-svn restarts a
> child every 1000 revisions to avoid memory usage from going through the
> roof.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] git-svn: error out when the SVN connection fails during a fetch
  2006-12-06 17:01         ` Florian Weimer
@ 2006-12-06 19:01           ` Junio C Hamano
  2006-12-06 19:45             ` Eric Wong
  0 siblings, 1 reply; 9+ messages in thread
From: Junio C Hamano @ 2006-12-06 19:01 UTC (permalink / raw)
  To: Eric Wong; +Cc: git, Florian Weimer

Florian Weimer <fw@deneb.enyo.de> writes:

> * Eric Wong:
>
>> Florian Weimer <fw@deneb.enyo.de> wrote:
>>> * Eric Wong:
>>> 
>>> > Does the following patch help?
>>> 
>>> Don't think so.  The issue is not timing-related.  I've seen a failure
>>> every 1000 requests, which suggests to me that it's hitting the
>>> MaxKeepAliveRequests limit configured on the server.
>>
>> Actually, that's exactly what this patch should fix.  git-svn restarts a
>> child every 1000 revisions to avoid memory usage from going through the
>> roof.
>
> Oh.  My (limited) testing of the patch confirms that.

Ok, so this means I should apply this one, right?

-- >8 --
From: Eric Wong <normalperson@yhbt.net>
Date: Mon, 4 Dec 2006 00:51:16 -0800
Subject: [PATCH] git-svn: avoid network timeouts for long-running fetches

Long-running fetches run inside children to avoid memory leaks.
When we refork, the connection in the parent can be idle for a
long time; attempting to reuse it in the next child can result
in timeouts.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
---
 git-svn.perl |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/git-svn.perl b/git-svn.perl
index d0bd0bd..747daf0 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -459,6 +459,7 @@ sub fetch_lib {
 		$min = $max + 1;
 		$max += $inc;
 		$max = $head if ($max > $head);
+		$SVN = libsvn_connect($SVN_URL);
 	}
 	restore_index($index);
 	return { revision => $last_rev, commit => $last_commit };
-- 
1.4.4.1.g6129

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] git-svn: error out when the SVN connection fails during a fetch
  2006-12-06 19:01           ` Junio C Hamano
@ 2006-12-06 19:45             ` Eric Wong
  0 siblings, 0 replies; 9+ messages in thread
From: Eric Wong @ 2006-12-06 19:45 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Florian Weimer

Junio C Hamano <junkio@cox.net> wrote:
> Florian Weimer <fw@deneb.enyo.de> writes:
> 
> > * Eric Wong:
> >
> >> Florian Weimer <fw@deneb.enyo.de> wrote:
> >>> * Eric Wong:
> >>> 
> >>> > Does the following patch help?
> >>> 
> >>> Don't think so.  The issue is not timing-related.  I've seen a failure
> >>> every 1000 requests, which suggests to me that it's hitting the
> >>> MaxKeepAliveRequests limit configured on the server.
> >>
> >> Actually, that's exactly what this patch should fix.  git-svn restarts a
> >> child every 1000 revisions to avoid memory usage from going through the
> >> roof.
> >
> > Oh.  My (limited) testing of the patch confirms that.
> 
> Ok, so this means I should apply this one, right?

Yes, please do.  Thanks.

-- 

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2006-12-06 19:45 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-11-28 22:06 [PATCH] git-svn: error out when the SVN connection fails during a fetch Eric Wong
2006-11-28 22:24 ` Eric Wong
2006-12-03 18:23 ` Florian Weimer
2006-12-04  8:52   ` Eric Wong
2006-12-04  8:56     ` Florian Weimer
2006-12-04  9:05       ` Eric Wong
2006-12-06 17:01         ` Florian Weimer
2006-12-06 19:01           ` Junio C Hamano
2006-12-06 19:45             ` Eric Wong

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).