All of lore.kernel.org
 help / color / mirror / Atom feed
From: Charles Bailey <charles@hashpling.org>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] Add failing test for fetching from multiple packs over dumb httpd
Date: Tue, 27 Jan 2015 18:29:39 +0000	[thread overview]
Message-ID: <20150127182939.GA18236@hashpling.org> (raw)
In-Reply-To: <20150127181220.GA17067@peff.net>

On Tue, Jan 27, 2015 at 01:12:21PM -0500, Jeff King wrote:
> On Tue, Jan 27, 2015 at 03:20:41PM +0000, Charles Bailey wrote:
> 
> > From: Charles Bailey <cbailey32@bloomberg.net>
> > 
> > When objects are spread across multiple packs, if an initial fetch does
> > require all pack files, a subsequent fetch for objects in packs not
> > retrieved in the initial fetch will fail.
> 
> s/does/does not/, I think?

Yes, that's definitely what I meant to write.

[...]
> It looks like the culprit is 7b64469 (Allow parse_pack_index on
> temporary files, 2010-04-19). It added a new "idx_path" parameter to
> parse_pack_index, which we pass as NULL.  That causes its call to
> check_packed_git_idx to fail (because it has no idea what file we are
> talking about!).

That change looks like it went into 1.7.1.1. I cannot confirm this
working before then but we've definitely seen the bug in 1.7.12.3 and
more recent versions.

> This seems to fix it:
> 
> diff --git a/sha1_file.c b/sha1_file.c
> index 30995e6..eda4d90 100644
> --- a/sha1_file.c
> +++ b/sha1_file.c
> @@ -1149,6 +1149,9 @@ struct packed_git *parse_pack_index(unsigned char *sha1, const char *idx_path)
>  	const char *path = sha1_pack_name(sha1);
>  	struct packed_git *p = alloc_packed_git(strlen(path) + 1);
>  
> +	if (!idx_path)
> +		idx_path = sha1_pack_index_name(sha1);
> +
>  	strcpy(p->pack_name, path);
>  	hashcpy(p->sha1, sha1);
>  	if (check_packed_git_idx(idx_path, p)) {

It certainly fixes my test script and I can give this patch a test in
the 'real' world.

  reply	other threads:[~2015-01-27 18:29 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-27 15:20 [PATCH] Add failing test for fetching from multiple packs over dumb httpd Charles Bailey
2015-01-27 18:12 ` Jeff King
2015-01-27 18:29   ` Charles Bailey [this message]
2015-01-27 20:02   ` [PATCH] dumb-http: do not pass NULL path to parse_pack_index Jeff King
2015-01-27 20:19     ` Charles Bailey
2015-01-27 20:46       ` Junio C Hamano

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=20150127182939.GA18236@hashpling.org \
    --to=charles@hashpling.org \
    --cc=git@vger.kernel.org \
    --cc=peff@peff.net \
    /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.