From: Junio C Hamano <gitster@pobox.com>
To: Jonathan Tan <jonathantanmy@google.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 2/2] promisor-remote: die upon failing fetch
Date: Thu, 29 Sep 2022 13:14:22 -0700 [thread overview]
Message-ID: <xmqqh70qndk1.fsf@gitster.g> (raw)
In-Reply-To: <7f6412eb8ce0c47a7645b89fab171a212353f8b2.1664316642.git.jonathantanmy@google.com> (Jonathan Tan's message of "Tue, 27 Sep 2022 15:12:30 -0700")
Jonathan Tan <jonathantanmy@google.com> writes:
> diff --git a/object-file.c b/object-file.c
> index 5b270f046d..5e30960234 100644
> --- a/object-file.c
> +++ b/object-file.c
> @@ -1599,10 +1599,6 @@ static int do_oid_object_info_extended(struct repository *r,
> if (fetch_if_missing && repo_has_promisor_remote(r) &&
> !already_retried &&
> !(flags & OBJECT_INFO_SKIP_FETCH_OBJECT)) {
> - /*
> - * TODO Investigate checking promisor_remote_get_direct()
> - * TODO return value and stopping on error here.
> - */
> promisor_remote_get_direct(r, real, 1);
> already_retried = 1;
> continue;
> diff --git a/promisor-remote.c b/promisor-remote.c
> index 8b4d650b4c..faa7612941 100644
> --- a/promisor-remote.c
> +++ b/promisor-remote.c
> @@ -4,6 +4,7 @@
> #include "config.h"
> #include "transport.h"
> #include "strvec.h"
> +#include "packfile.h"
>
> struct promisor_remote_config {
> struct promisor_remote *promisors;
> @@ -238,6 +239,7 @@ void promisor_remote_get_direct(struct repository *repo,
> struct object_id *remaining_oids = (struct object_id *)oids;
> int remaining_nr = oid_nr;
> int to_free = 0;
> + int i;
>
> if (oid_nr == 0)
> return;
> @@ -255,9 +257,16 @@ void promisor_remote_get_direct(struct repository *repo,
> continue;
> }
> }
> - break;
> + goto all_fetched;
OK. So when fetch_object() says it got everything we asked it to
give, there is no behaviour change. But if invocations of
fetch_objects() on all promisor remotes end unsuccessfully, we see
if some are supposed to be available from the promisor remote and
die.
An obvious alternative would be to do without the previous step, and
instead tighten the callers to react to error return, and then from
the new code, return a different error return value to allow the
caller to tell what kind of breakage it got. But this extra die()
with more sloppy callers would probably work just fine in practice.
> + }
> +
> + for (i = 0; i < remaining_nr; i++) {
> + if (is_promisor_object(&remaining_oids[i]))
> + die(_("could not fetch %s from promisor remote"),
> + oid_to_hex(&remaining_oids[i]));
> }
>
> +all_fetched:
> if (to_free)
> free(remaining_oids);
> }
next prev parent reply other threads:[~2022-09-29 20:14 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-27 22:12 [PATCH 0/2] Fail early when partial clone prefetch fails Jonathan Tan
2022-09-27 22:12 ` [PATCH 1/2] promisor-remote: remove a return value Jonathan Tan
2022-09-29 19:23 ` Junio C Hamano
2022-09-30 22:02 ` Jonathan Tan
2022-09-27 22:12 ` [PATCH 2/2] promisor-remote: die upon failing fetch Jonathan Tan
2022-09-28 17:43 ` Glen Choo
2022-09-30 22:10 ` Jonathan Tan
2022-09-29 20:14 ` Junio C Hamano [this message]
2022-09-29 20:15 ` [PATCH 0/2] Fail early when partial clone prefetch fails Junio C Hamano
2022-09-30 21:50 ` Jonathan Tan
2022-09-30 22:17 ` Junio C Hamano
2022-10-04 21:13 ` [PATCH v2 " Jonathan Tan
2022-10-04 21:13 ` [PATCH v2 1/2] promisor-remote: remove a return value Jonathan Tan
2022-10-04 21:13 ` [PATCH v2 2/2] promisor-remote: die upon failing fetch Jonathan Tan
2022-10-05 18:09 ` [PATCH v2 0/2] Fail early when partial clone prefetch fails 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=xmqqh70qndk1.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=jonathantanmy@google.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).