Re: [PATCHv3 9/9] submodule--helper: use parallel processor correctly.

2016-08-09 Thread Junio C Hamano
Stefan Beller  writes:

> When implementing the die() in 665b35ecc (2016-06-09, "submodule--helper:
> initial clone learns retry logic"), I considered this condition to be
> a severe condition, which should lead to an immediate abort as we do not
> trust ourselves any more. However the queued messages in `err` are valuable
> so let's not toss them out by immediately dieing, but a graceful return.

I think you'll be rerolling this series at least once (if only to
correct for 6/9), so perhaps split this fix into a preparatory fix
that can go earlier to 'next' and further that the remainder of the
series depend on?

>
> Another thing to note: The error message itself was missleading. A return
> value of 0 doesn't indicate the passed in `ce` is not a submodule any more,
> but just that we do not consider cloning it any more.
>
> Signed-off-by: Stefan Beller 
> ---
>  builtin/submodule--helper.c | 8 ++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
> index fc14843..3e40f99 100644
> --- a/builtin/submodule--helper.c
> +++ b/builtin/submodule--helper.c
> @@ -815,8 +815,12 @@ static int update_clone_get_next_task(struct 
> child_process *child,
>   if (index < suc->failed_clones_nr) {
>   int *p;
>   ce = suc->failed_clones[index];
> - if (!prepare_to_clone_next_submodule(ce, child, suc, err))
> - die("BUG: ce was a submodule before?");
> + if (!prepare_to_clone_next_submodule(ce, child, suc, err)) {
> + suc->current ++;

s/current /current/;

> + strbuf_addf(err, "BUG: submodule considered for 
> cloning,"
> + "doesn't need cloning any more?\n");
> + return 0;
> + }
>   p = xmalloc(sizeof(*p));
>   *p = suc->current;
>   *idx_task_cb = p;
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCHv3 9/9] submodule--helper: use parallel processor correctly.

2016-08-08 Thread Stefan Beller
When developing the prior patches I had a temporary state in which
git-clone would segfault, when prepared the call in
prepare_to_clone_next_submodule. This lead to the call failing, i.e. in
`update_clone_task_finished` the task was scheduled to be tried again.
The second call to prepare_to_clone_next_submodule would return 0, as the
segfaulted clone did create the .git file already, such that was not
considered to need to be cloned again. I was seeing the "BUG: ce was
a submodule before?\n" message, which was the correct behavior at the
time as my local code was buggy. When trying to debug this failure, I
tried to use printing messages into the strbuf that is passed around,
but these messages were never printed as the die(..) doesn't
flush the `err` strbuf.

When implementing the die() in 665b35ecc (2016-06-09, "submodule--helper:
initial clone learns retry logic"), I considered this condition to be
a severe condition, which should lead to an immediate abort as we do not
trust ourselves any more. However the queued messages in `err` are valuable
so let's not toss them out by immediately dieing, but a graceful return.

Another thing to note: The error message itself was missleading. A return
value of 0 doesn't indicate the passed in `ce` is not a submodule any more,
but just that we do not consider cloning it any more.

Signed-off-by: Stefan Beller 
---
 builtin/submodule--helper.c | 8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index fc14843..3e40f99 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -815,8 +815,12 @@ static int update_clone_get_next_task(struct child_process 
*child,
if (index < suc->failed_clones_nr) {
int *p;
ce = suc->failed_clones[index];
-   if (!prepare_to_clone_next_submodule(ce, child, suc, err))
-   die("BUG: ce was a submodule before?");
+   if (!prepare_to_clone_next_submodule(ce, child, suc, err)) {
+   suc->current ++;
+   strbuf_addf(err, "BUG: submodule considered for 
cloning,"
+   "doesn't need cloning any more?\n");
+   return 0;
+   }
p = xmalloc(sizeof(*p));
*p = suc->current;
*idx_task_cb = p;
-- 
2.9.2.583.gd6329be.dirty

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html