Re: Possible race condition with git-rebase + .git/index.lock
- Date: Tue, 12 Mar 2019 12:39:04 -0700
- From: Elijah Newren <newren@xxxxxxxxx>
- Subject: Re: Possible race condition with git-rebase + .git/index.lock
On Tue, Mar 12, 2019 at 12:32 PM Sergio Durigan Junior
> On Tuesday, March 12 2019, Elijah Newren wrote:
> > On Tue, Mar 12, 2019 at 9:48 AM Sergio Durigan Junior
> > <sergiodj@xxxxxxxxxxxx> wrote:
> >> On Tuesday, March 12 2019, Duy Nguyen wrote:
> >> > On Tue, Mar 12, 2019 at 5:18 AM Sergio Durigan Junior
> >> > <sergiodj@xxxxxxxxxxxx> wrote:
> >> >> This works without problems most of the time (well, usually there are
> >> >> conflicts and all, but that's a burden I have to carry). However,
> >> >> sometimes I notice that git fails with:
> >> >>
> >> >> # git rebase origin/master
> >> >> ...
> >> >> Applying: commitX
> >> >> Applying: commitY
> >> >> Applying: commitZ
> >> >> fatal: Unable to create '/home/xyz/dir1/dir2/.git/index.lock': File exists.
> >> >>
> >> >> The first thing I did was to check whether the index.lock file existed,
> >> >> but it doesn't.
> >> >
> >> > Is the output this clean? What I'm looking for is signs of automatic
> >> > garbage collection kicking in the middle of the rebase. Something like
> >> > "Auto packing the repository blah blah for optimum performance".
> >> Yeah, this is the exact output. I also thought about "git gc", but I
> >> don't see any output related to it. Is it possible that it's being
> >> executed in the background and not printing anything?
> > Any chance you have a cronjob or other task execution mechanism that
> > is running git commands in various directories (even simple commands
> > like 'git status' since it's not read-only contrary to what some
> > expect, or 'git fetch' which might trigger a background gc)?
> Nope, nothing like this. AFAIK, nothing is touching that repository at
> the same time that I am. Besides, even if I wait some minutes before
> trying again, the bug manifests again.
Well, even though you didn't see the output Duy was looking for, if
you set gc.auto to 0 and gc.autoPackLimit to 0 (and maybe
gc.autoDetach to false just for good measure), does the problem still