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

Re: Can a git push over ssh trigger a gc/repack? Diagnosing pack explosion

From
Martin Langhoff <martin.langhoff@gmail.com>
Date
Nov 21, 2013, 15:35 UTC
Message-ID
<CACPiFC+xbnYjZUG49Em=aDUXnS_3_Cp=ZZBCrQCHM-sL78HCdA@mail.gmail.com>
In-Reply-To
<CACPiFC+TqD_DhMaG+posoK4fTOLCoi=3jhJUPjt_72HTm9xjeQ@mail.gmail.com>

On Thu, Nov 21, 2013 at 10:21 AM, Martin Langhoff <martin.langhoff@gmail.com> wrote:

> Do client pushes over git+ssh ever trigger a repack on the server?

man git-config [snip]

       receive.autogc
           By default, git-receive-pack will run "git-gc --auto" after
           receiving data from git-push and updating refs. You can stop it by
           setting this variable to false.
Oooooops!
Ok, couple problems here:
 - if it's receiving from many pushers, it races with itself; needs
some lock or back-off mechanism
 - alternatively, an splay mechanism. We have a "hard" threshold...
given many "pushers" acting in parallel, they'll all hit the threshold
at the same time. There is no need for this, we could randomize the
threshold by 20%; that would radically reduce the racy-ness
 - auto repack in this scenario has a reasonable likelihood if being
visited by the OOM killer -- therefore it needs to fail more
gracefully, for example with tmpfile cleanup. Perhaps by having the
tmpfiles places in a tmpdir named with the pid of the child would make
this easier...

Naturally, I'll move quickly to disable this evil-spawn-automagic setting and setup a cronjob. But I think it is possible to have defaults that work more reliably and with lower risk of explosion.

thoughts?
m
-- 
 martin.langhoff@gmail.com
 -  ask interesting questions
 - don't get distracted with shiny stuff  - working code first
 ~ http://docs.moodle.org/en/User:Martin_Langhoff
Previous: Martin LanghoffNext: Junio C Hamano
Message 2 of 4 in “Can a git push over ssh trigger a gc/repack? Diagnosing pack explosion”
  1. Martin LanghoffNov 21, 2013
  2. Martin LanghoffNov 21, 2013
  3. Junio C HamanoNov 21, 2013
  4. Martin LanghoffNov 21, 2013

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.