git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 2/2] read-cache: fix incorrect count and progress bar stalling

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Jun 8, 2021, 10:58 UTC
Message-ID
<87wnr4394y.fsf@evledraar.gmail.com>
In-Reply-To
<xmqqczsxtf8g.fsf@gitster.g>
On Tue, Jun 08 2021, Junio C Hamano wrote:
Show 22 quoted lines
> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
>
>>> So I think this pattern works:
>>>
>>> 	for (i = 0; i < nr; i++) {
>>> 		display_progress(p, i);
>>> 		/* work work work */
>>> 	}
>>> 	display_progress(p, nr);
>>>
>>> Alternatively, if the work part doesn't contain continue statements:
>>>
>>> 	for (i = 0; i < nr; i++) {
>>> 		/* work work work */
>>> 		display_progress(p, i + 1);
>>> 	}
>>
>> But yes, I agree with the issue in theory, but I think in practice we
>> don't need to worry about these 100% cases.
>
> Hmph, but in practice we do need to worry, don't we?  Otherwise you
> wouldn't have started this thread and René wouldn't have responded.
I started this thread because of:
	for (i = 0; i < large_number; i++) {
		if (maybe_branch_here())
			continue;
		/* work work work */
		display_progress(p, i);
	}
	display_progress(p, large_number);

Mainly because it's a special snowflake in how the process.c API is used, with most other callsites doing:

	for (i = 0; i < large_number; i++) {
		display_progress(p, i + 1);
		/* work work work */
	}

Which yes, as René points out *could* hang on 100%, but I think in practice isn't an issue here, and changing the code per my patch here solves the practical issue with us always taking the maybe_branch_here() (or enough that the progress bar hangs).

> I agree with the issue and I think we should count what we have
> finished.

Fair enough, but in the meantime can we take this patch? I think fixing that (IMO in practice hypothetical issue) is much easier when we consistently use that "i + 1" pattern above (which we mostly do already). We can just search-replace "++i" to "i++" and "i + 1" to "i" and have stop_progress() be what bumps it to 100%.

I have some unsent patches queued on top of this which has some general fixes to edge cases in the progress.c API making that & more easier...q

Previous: Junio C HamanoNext: René Scharfe
Message 8 of 24 in “trivial progress.c API usage fixes”
  1. 0/2 trivial progress.c API usage fixesÆvar Arnfjörð Bjarmason, Jun 7, 2021
  2. 2/2 read-cache: fix incorrect count and progress bar stallingÆvar Arnfjörð Bjarmason, Jun 7, 2021
  3. Derrick StoleeJun 7, 2021
  4. Ævar Arnfjörð BjarmasonJun 7, 2021
  5. René ScharfeJun 7, 2021
  6. Ævar Arnfjörð BjarmasonJun 7, 2021
  7. Junio C HamanoJun 7, 2021
  8. Ævar Arnfjörð BjarmasonJun 8, 2021
  9. René ScharfeJun 8, 2021
  10. Ævar Arnfjörð BjarmasonJun 8, 2021
  11. Junio C HamanoJun 10, 2021
  12. René ScharfeJun 10, 2021
  13. René ScharfeJun 10, 2021
  14. Ævar Arnfjörð BjarmasonJun 14, 2021
  15. René ScharfeJun 14, 2021
  16. Ævar Arnfjörð BjarmasonJun 14, 2021
  17. Junio C HamanoJun 15, 2021
  18. René ScharfeJun 15, 2021
  19. Ævar Arnfjörð BjarmasonJun 15, 2021
  20. René ScharfeJun 20, 2021
  21. 1/2 read-cache.c: don't guard calls to progress.c APIÆvar Arnfjörð Bjarmason, Jun 7, 2021
  22. Derrick StoleeJun 7, 2021
  23. Ævar Arnfjörð BjarmasonJun 7, 2021
  24. Derrick StoleeJun 7, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.