From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS31976 209.132.176.0/21 X-Spam-Status: No, score=-3.5 required=3.0 tests=AWL,BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MSGID_FROM_MTA_HEADER,RP_MATCHES_RCVD shortcircuit=no autolearn=ham autolearn_force=no version=3.4.0 From: Nicolas Pitre Subject: Re: fetching packs and storing them as packs Date: Thu, 26 Oct 2006 22:41:49 -0400 (EDT) Message-ID: References: <4540CA0C.6030300@tromer.org> <45413209.2000905@tromer.org> <20061027014229.GA28407@spearce.org> Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Content-Transfer-Encoding: 7BIT NNTP-Posting-Date: Fri, 27 Oct 2006 02:42:09 +0000 (UTC) Cc: Eran Tromer , Junio C Hamano , git@vger.kernel.org Return-path: Envelope-to: gcvg-git@gmane.org In-reply-to: <20061027014229.GA28407@spearce.org> X-X-Sender: nico@xanadu.home Precedence: bulk X-Mailing-List: git@vger.kernel.org Archived-At: Received: from vger.kernel.org ([209.132.176.167]) by ciao.gmane.org with esmtp (Exim 4.43) id 1GdHfX-0006e8-4Z for gcvg-git@gmane.org; Fri, 27 Oct 2006 04:42:03 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1161469AbWJ0CmA (ORCPT ); Thu, 26 Oct 2006 22:42:00 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1161446AbWJ0CmA (ORCPT ); Thu, 26 Oct 2006 22:42:00 -0400 Received: from relais.videotron.ca ([24.201.245.36]:21376 "EHLO relais.videotron.ca") by vger.kernel.org with ESMTP id S1161441AbWJ0Cl7 (ORCPT ); Thu, 26 Oct 2006 22:41:59 -0400 Received: from xanadu.home ([74.56.106.175]) by VL-MH-MR001.ip.videotron.ca (Sun Java System Messaging Server 6.2-2.05 (built Apr 28 2005)) with ESMTP id <0J7R004MGWTPQNS0@VL-MH-MR001.ip.videotron.ca> for git@vger.kernel.org; Thu, 26 Oct 2006 22:41:50 -0400 (EDT) To: Shawn Pearce Sender: git-owner@vger.kernel.org On Thu, 26 Oct 2006, Shawn Pearce wrote: > Nicolas Pitre wrote: > > On Fri, 27 Oct 2006, Eran Tromer wrote: > > > > > Hi, > > > > > > On 2006-10-26 17:08, Nicolas Pitre wrote: > > > > On Thu, 26 Oct 2006, Eran Tromer wrote: > > > >> This creates a race condition w.r.t. "git repack -a -d", similar to the > > > >> existing race condition between "git fetch --keep" and > > > >> "git repack -a -d". There's a point in time where the new pack is stored > > > >> but not yet referenced, and if "git repack -a -d" runs at that point it > > > >> will eradicate the pack. When the heads are finally updated, you get a > > > >> corrupted repository. > > > > > > > > And how is it different from receiving a pack through git-unpack-objects > > > > where lots of loose objects are created, and git-repack -a -d removing > > > > those unconnected loose objects before the heads are updated? > > > > > > git-repack -a -d does not touch unconnected loose objects. > > > It removes only unconnected packed objects. > > > > Right. > > > > > Only git-prune removes unconnected loose objects, and that's documented > > > as unsafe. > > > > Well, the race does exist. Don't do repack -a -d at the same time then. > > This is an issue for "central" repositories that people push into > and which might be getting repacked according to a cronjob. > > Unfortunately I don't have a solution. I tried to come up with > one but didn't. :-) Just continue to explode received packs into loose objects then. It is that simple. I said there were advantages and inconvenients to both methods. This one is a nice example. I won't repack from a cron job, so I don't expect to run a repack and a fetch at the same time on my private repositories. I therefore don't care about that race and so is the case for the vast majority of users.