git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: http-protocol question

From
Jeff King <peff@peff.net>
Date
Dec 2, 2014, 05:33 UTC
Message-ID
<20141202053331.GA31516@peff.net>
In-Reply-To
<CAGyf7-Gx1VU-1OicCHG0sStUnNXy_0Y8VYUP+PZjpN6nz7dTrw@mail.gmail.com>
On Tue, Dec 02, 2014 at 04:04:11PM +1100, Bryan Turner wrote:
Show 12 quoted lines
> > Can you say more about the context?  For example, was this actually
> > happening, or is this for the sake of understanding the protocol
> > better?
> 
> I ask because it's actually happening. Heavy CI load sometimes has
> builds fail because git clone dies with "not our ref". That's the
> specific context I'm working to try and address right now. Some teams
> use rebase-heavy workflows, which also evades the check_non_tip easing
> and fails with "not our ref", so I can't be 100% certain it's ref
> deletion in specific causing it (but I guess which of those it is is
> probably largely academic; as long as hosting spans multiple requests
> it seems like this type of race condition is unavoidable).

There is a practical reason to care. Ref deletion will also delete the reflog, leaving no trace of the reachability. Whereas a non-fast-forward push could be resolved by looking in the reflog.

One problem with hunting for sha1s in the reflog is that upload-pack does not know which ref the client thinks they are requesting. So a search would involve looking in _every_ reflog, which could be expensive. It might not be too painful if you do the search only after hitting a "not our ref" condition, which should in theory be rare. A malicious client could convince you to grep your reflogs repeatedly, but that is hardly the only way to convince upload-pack to chew CPU. Asking it to make a pack comes to mind. :)

> I'm trying to decide if there is something I can enable or tune to
> prevent it, and the type of twilighting hinted at by the http-protocol
> documentation seemed like it could be just the thing.

For a public repository, it might make sense to provide a config option to loosen the is_our_ref check completely (i.e., to just has_sha1_file). But such an option does not yet exist.

-Peff
Previous: Duy NguyenNext: Bryan Turner
Message 10 of 14 in “http-protocol question”
  1. Bryan TurnerDec 2, 2014
  2. Jonathan NiederDec 2, 2014
  3. Bryan TurnerDec 2, 2014
  4. Bryan TurnerDec 2, 2014
  5. Jonathan NiederDec 2, 2014
  6. Bryan TurnerDec 2, 2014
  7. Jonathan NiederDec 2, 2014
  8. Duy NguyenDec 2, 2014
  9. Duy NguyenDec 2, 2014
  10. Jeff KingDec 2, 2014
  11. Bryan TurnerDec 2, 2014
  12. Jeff KingDec 2, 2014
  13. Junio C HamanoDec 2, 2014
  14. Jeff KingDec 2, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.