Re: [PATCH 11/25] pack-bitmap-write.c: add a missing stop_progress()
- From
SZEDER Gábor <szeder.dev@gmail.com>
- Date
- Sep 17, 2021, 05:14 UTC
- Message-ID
- <20210917051448.GB2118053@szeder.dev>
- In-Reply-To
- <patch-11.25-7f5b71fe1be-20210623T155626Z-avarab@gmail.com>
On Wed, Jun 23, 2021 at 07:48:11PM +0200, Ævar Arnfjörð Bjarmason wrote:
Show 23 quoted lines
> Fix a bug that's been here since 7cc8f971085 (pack-objects: implement
> bitmap writing, 2013-12-21), we did not call stop_progress() if we
> reached the early exit in this function. This will matter in a
> subsequent commit where we BUG(...) out if this happens, and matters
> now e.g. because we don't have a corresponding "region_end" for the
> progress trace2 event.
>
> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> ---
> pack-bitmap-write.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/pack-bitmap-write.c b/pack-bitmap-write.c
> index 88d9e696a54..6e110e41ea4 100644
> --- a/pack-bitmap-write.c
> +++ b/pack-bitmap-write.c
> @@ -550,6 +550,7 @@ void bitmap_writer_select_commits(struct commit **indexed_commits,
> if (indexed_commits_nr < 100) {
> for (i = 0; i < indexed_commits_nr; ++i)
> push_bitmapped_commit(indexed_commits[i]);
> + stop_progress(&writer.progress);
> return;
> }When I found this bug I fixed it differently: with your patch there are no display() calls at all between start_progress() and this new stop_progress(), indicating that a stop_progress() is not missing but rather the start_progress is in the wrong place:
--- >8 ---
diff --git a/pack-bitmap-write.c b/pack-bitmap-write.c index 88d9e696a5..f0b4044e2b 100644 --- a/pack-bitmap-write.c +++ b/pack-bitmap-write.c @@ -544,15 +544,15 @@ void bitmap_writer_select_commits(struct commit **indexed_commits, QSORT(indexed_commits, indexed_commits_nr, date_compare); - if (writer.show_progress) - writer.progress = start_progress("Selecting bitmap commits", 0); - if (indexed_commits_nr < 100) { for (i = 0; i < indexed_commits_nr; ++i) push_bitmapped_commit(indexed_commits[i]); return; } + if (writer.show_progress) + writer.progress = start_progress("Selecting bitmap commits", 0); + for (;;) { struct commit *chosen = NULL; --- 8< --- And I don't think it's worth adding display() calls to that loop, because it has so few iterations and it does barely anything per iteration.