All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Shawn O. Pearce" <spearce@spearce.org>
To: Daniel Barkalow <barkalow@iabervon.org>
Cc: Junio C Hamano <gitster@pobox.com>,
	Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	git@vger.kernel.org
Subject: Re: fact-import: failed to apply delta
Date: Wed, 11 Feb 2009 10:15:30 -0800	[thread overview]
Message-ID: <20090211181530.GO30949@spearce.org> (raw)
In-Reply-To: <alpine.LNX.1.00.0902111247300.19665@iabervon.org>

Daniel Barkalow <barkalow@iabervon.org> wrote:
> 
> I think free_pack_by_name() also needs to drop the entries that are from 
> the freed pack, to avoid having repack able to get the same problem, 
> although I wouldn't be surprised if repack happened to never allocate a 
> new pack after freeing an old pack with stale delta cache entries, or 
> never used the delta cache after that, simply because it does one thing 
> and then exits.

Oy.  I missed that we added this function.  Patch follows.

--8<--
Clear the delta base cache if a pack is rebuilt

There is some risk that re-opening a regenerated pack file with
different offsets could leave stale entries within the delta base
cache that could be matched up against other objects using the same
"struct packed_git*" and pack offset.

Throwing away the entire delta base cache in this case is safer,
as we don't have to worry about a recycled "struct packed_git*"
matching to the wrong base object, resulting in delta apply
errors while unpacking an object.

Suggested-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
---
 sha1_file.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/sha1_file.c b/sha1_file.c
index 7459a9c..5b6e0f6 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -689,6 +689,7 @@ void free_pack_by_name(const char *pack_name)
 	while (*pp) {
 		p = *pp;
 		if (strcmp(pack_name, p->pack_name) == 0) {
+			clear_delta_base_cache();
 			close_pack_windows(p);
 			if (p->pack_fd != -1)
 				close(p->pack_fd);
-- 
1.6.2.rc0.186.g417c

  reply	other threads:[~2009-02-11 18:17 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-10  3:26 fact-import: failed to apply delta Daniel Barkalow
2009-02-10 10:28 ` Johannes Schindelin
2009-02-10 15:56   ` Shawn O. Pearce
2009-02-10 17:15     ` Daniel Barkalow
2009-02-10 17:22       ` Shawn O. Pearce
2009-02-10 17:47         ` Daniel Barkalow
2009-02-10 19:12           ` Shawn O. Pearce
2009-02-10 20:03             ` Daniel Barkalow
2009-02-10 20:12               ` Shawn O. Pearce
2009-02-10 21:19                 ` Daniel Barkalow
2009-02-10 21:25                   ` Shawn O. Pearce
2009-02-10 21:32                     ` Daniel Barkalow
2009-02-10 21:36                       ` Shawn O. Pearce
2009-02-10 21:51                         ` Daniel Barkalow
2009-02-10 22:30                         ` Junio C Hamano
2009-02-10 22:47                           ` Junio C Hamano
2009-02-10 23:09                             ` Shawn O. Pearce
2009-02-10 23:15                               ` Junio C Hamano
2009-02-10 23:16                                 ` Shawn O. Pearce
2009-02-10 23:32                                   ` Junio C Hamano
2009-02-11 18:09                             ` Daniel Barkalow
2009-02-11 18:15                               ` Shawn O. Pearce [this message]
2009-02-11 18:30                                 ` Junio C Hamano
2009-02-11 18:33                                 ` Daniel Barkalow

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090211181530.GO30949@spearce.org \
    --to=spearce@spearce.org \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=barkalow@iabervon.org \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.