Re: Git push race condition?
- From
Jeff King <peff@peff.net>
- Date
- Mar 24, 2014, 22:54 UTC
- Message-ID
- <20140324225434.GB17080@sigill.intra.peff.net>
- In-Reply-To
- <CAAyEjTN53+5B9Od9wW698wODNL3hR6Upot8-ZLwEksn3ir_zjA@mail.gmail.com>
On Mon, Mar 24, 2014 at 03:18:14PM -0400, Scott Sandler wrote:
Show 8 quoted lines
> I've noticed that a few times in the past several weeks, we've had > events where pushes have been lost when two people pushed at just > about the same time. The scenario is that two users both have commits > based on commit A, call them B and B'. The user with commit B pushes > at about the same time as the user who pushes B'. Both pushes are > determined to be fast-forwards and both succeed, but B' overwrites B > and B is no longer on origin/master. The server does have B in its > .git directory but the commit isn't on any branch.
What version of git are you running on the server? Is it possible that there is a simultaneous process running `git pack-refs` (e.g., a `git gc` run by a cron job or similar)?
There were some race conditions fixed last year wherein git could see stale values of refs, but I do not think they could impact writing to a ref like this. When we take the lock on the ref, we always go straight to the filesystem, so the value we see is up-to-date.
-Peff