From: Junio C Hamano Date: Tue, 10 Feb 2009 23:15:09 GMT Subject: Re: fact-import: failed to apply delta Message-ID: <7vtz71khoi.fsf@gitster.siamese.dyndns.org> In-Reply-To: <20090210230950.GX30949@spearce.org> "Shawn O. Pearce" writes: > What more can I really say here other than maybe this? > > diff --git a/fast-import.c b/fast-import.c > index 03b13e0..7bfb563 100644 > --- a/fast-import.c > +++ b/fast-import.c > @@ -1204,6 +1204,12 @@ static void *gfi_unpack_entry( > */ > p->pack_size = pack_size + 20; > } > + /* DANGER, WILL ROBINSON DANGER !!!! > + * > + * unpack_entry() wasn't meant to be called the way we are > + * about to call it right here. Be very careful, any sort > + * of assumption is probably wrong. > + */ > return unpack_entry(p, oe->offset, &type, sizep); > } Yuck ;-). >> By the way, strictly speaking, you need to release the delta_base_cache >> entries that is based on pack_data and nothing else, no? > > Right. > > But the hiccup of a checkpoint in terms of overall performance is > such a huge amount (due to needing to re-read the entire pack to > compute its final checksum) that the loss of the delta_base_cache > is pretty much a drop in the bucket here. > > I can go back and add in a struct packed_git* and filter to only > those entries in the cache, but it doesn't seem worth it to me. Nah, that was not a suggestion but a question. The patch can and should go to maint, right?