In one of my repository, "git gc" will never terminate.
I have traced to the underlying call git-reflog:
$ git-reflog expire --all
It seems to heat a good amount of heap memory and will keep running
using 100% of CPU.
Is that a known issue?
Thanks,
Pascal.
--
--|------------------------------------------------------
--| Pascal Obry Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--| http://www.obry.net
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver wwwkeys.pgp.net --recv-key C1082595
From: Jeff King <hidden> Date: 2016-06-15 22:44:43
On Tue, Jun 10, 2008 at 07:44:50PM +0200, Pascal Obry wrote:
In one of my repository, "git gc" will never terminate.
I have traced to the underlying call git-reflog:
$ git-reflog expire --all
It seems to heat a good amount of heap memory and will keep running using
100% of CPU.
Is that a known issue?
I can't reproduce here, so presumably it is some condition in your
repository; can you make a tarball of your .git directory available?
-Peff
I can't reproduce here, so presumably it is some condition in your
repository;
Yes, I have this problem on a single repository and no problem on the
others (~10).
can you make a tarball of your .git directory available?
No I can't :(
Is there some git-reflog options I can try to help finding this problem?
Thanks,
Pascal.
--
--|------------------------------------------------------
--| Pascal Obry Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--| http://www.obry.net
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver wwwkeys.pgp.net --recv-key C1082595
From: Jeff King <hidden> Date: 2016-06-15 22:44:43
On Wed, Jun 11, 2008 at 07:46:13AM +0200, Pascal Obry wrote:
quoted
can you make a tarball of your .git directory available?
No I can't :(
Is there some git-reflog options I can try to help finding this problem?
Not that I can think of offhand. If I had gotten a copy of the
repository, I would have run it under strace and/or gdb to see what it
was doing while it hung. If you're comfortable with running a debugger,
you might be able to point us to the right part of the code (I'm
assuming there is an infinite loop in there somewhere).
-Peff
I can't reproduce here, so presumably it is some condition in your
repository; can you make a tarball of your .git directory available?
Ok, mystery solved.
The problem was that the repository had been imported using git-svn and
contained something like 86000 reflog entries in
.git/logs/refs/remotes/pre/trunk.
Using the debugger I have seen that the loop was not endless... but very
slow as there was many many reflog to process. Don't know if this is
expected or not though.
To fix that I have launched:
$ git-reflog expire --expire=10 --all
It has removed all the old reflogs dating from the git-svn initial
import lowering the number of enties in .git/logs/refs/remotes/pre/trunk
to 0 :)
git gc is now working like a charm!
Pascal.
--
--|------------------------------------------------------
--| Pascal Obry Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--| http://www.obry.net
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver wwwkeys.pgp.net --recv-key C1082595