Re: git repack on shallow clone of large repo (linux kernel) hangs at "Enumerating objects"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, May 18, 2021 at 06:23:40PM +0700, Bagas Sanjaya wrote:

> > You could try using strace or gdb to see what it's doing.
> > 
> > But as a guess, one thing that sometimes causes a stall near the end of
> > "enumerating objects" is loosening unreachable objects that are
> > currently packed. You told repack to use "-A", which asks to loosen
> > those objects so they aren't lost when the old packs are deleted (as
> > opposed to "-a").
> > 
> 
> I attached two strace logs, one for "git repack -A -d" and one for "git
> repack -a -d".
> 
> For the former, I got following excerpt before I had to SIGINT the process:
> 
> > stat("/opt/git/libexec/git-core/git", {st_mode=S_IFREG|0755, st_size=22096480, ...}) = 0
> > pipe([5, 7])                            = 0
> > openat(AT_FDCWD, "/dev/null", O_RDWR|O_CLOEXEC) = 8
> > fcntl(8, F_GETFD)                       = 0x1 (flags FD_CLOEXEC)
> > fcntl(8, F_SETFD, FD_CLOEXEC)           = 0
> > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
> > clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7feb5ecbfa10) = 13691
> > rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
> > close(7)                                = 0
> > read(5, "", 8)                          = 0
> > close(5)                                = 0
> > close(8)                                = 0
> > close(4)                                = 0
> > fcntl(3, F_GETFL)                       = 0 (flags O_RDONLY)
> > fstat(3, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
> > read(3, 0x55a540de5250, 4096)           = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
> 
> I thought that in the case of "git repack -A -d", it is stucked at the
> last read() before I ctrl-c'ed to trigger SIGINT.

You need "strace -f". The parent repack process spawns pack-objects (via
the clone() call above), and then waits for it to print the name of the
generated pack at the end. So it will stall on that read() for quite a
while, even under normal circumstances.

-Peff



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux