Re: git svn import failure : write .git/Git_svn_hash_BmjclS: Bad file descriptor
From: Eric Wong <hidden>
Date: 2016-06-15 23:03:42
Subsystem:
the rest · Maintainer:
Linus Torvalds
Valery Yundin [off-list ref] wrote:
Hi, Here you go: dfa72fdb96befbd790f623bb2909a347176753c2 is the first bad commit
Thank you. Can you give the following patch a try? I have not been able to reproduce the problem on my end. If it doesn't work out, I might be out of ideas for a bit :/ Increasing --log-window-size will help you run longer without the error, but that's not ideal as it can also eat memory. -----------------------8<---------------------- From: Eric Wong <redacted> Subject: [PATCH] git-svn: destroy all tempfiles when reloading RA This may fix the errors some users are seeing with: "write .git/Git_svn_hash_XXXXXX: Bad file descriptor" Thanks to Valery Yundin for helping bisect the problem introduced in commit dfa72fdb96befbd790f623bb2909a347176753c2 (git-svn: reload RA every log-window-size) Cc: Valery Yundin <redacted> Signed-off-by: Eric Wong <redacted> --- perl/Git.pm | 6 ++++++ perl/Git/SVN/Ra.pm | 1 + 2 files changed, 7 insertions(+)
diff --git a/perl/Git.pm b/perl/Git.pm
index b5905ee..698018e 100644
--- a/perl/Git.pm
+++ b/perl/Git.pm@@ -1347,6 +1347,12 @@ sub temp_path { $TEMP_FILES{$temp_fd}{fname}; } +sub temp_reset_all { + unlink values %TEMP_FILEMAP if %TEMP_FILEMAP; + %TEMP_FILEMAP = (); + %TEMP_FILES = (); +} + sub END { unlink values %TEMP_FILEMAP if %TEMP_FILEMAP; }
diff --git a/perl/Git/SVN/Ra.pm b/perl/Git/SVN/Ra.pm
index 622535e..878679d 100644
--- a/perl/Git/SVN/Ra.pm
+++ b/perl/Git/SVN/Ra.pm@@ -397,6 +397,7 @@ sub gs_fetch_loop_common { $_[0] = undef; $self = undef; $RA = undef; + Git->temp_reset_all; $gpool->clear; $self = Git::SVN::Ra->new($ra_url); $ra_invalid = undef;
--
EW