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

[PATCH v1] progress: print progress output for all operations taking longer than 2s

From
lars.schneider@autodesk.com <lars.schneider@autodesk.com>
Date
Dec 4, 2017, 20:36 UTC
Message-ID
<20171204203647.30546-1-lars.schneider@autodesk.com>
From: Lars Schneider <larsxschneider@gmail.com>

In 180a9f2 we implemented a progress API which suppresses the progress output if the progress has reached a specified percentage threshold within a given time frame. In 8aade10 we simplified the API and set the threshold to 0% and the time frame to 2 seconds for all delayed progress operations. That means we would only see a progress output if we still have 0% progress after 2 seconds. Consequently, only operations that have a very slow start would show the progress output at all.

Remove the threshold entirely and print the progress output for all operations that take longer than 2 seconds.

Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
---
Hi,

a few weeks ago I was puzzled why the progress output is not shown in certain situations [1]. I debugged the issue a bit today and came up with this patch as solution. It is entirely possible that I misunderstood the intentions of the progress API and therefore my patch is bogus. In this case, please treat this email as RFC.

Thanks, Lars

[1] https://public-inbox.org/git/DC84FB2E-A26E-4957-B5FA-BE6DDEC3411B@gmail.com/
Notes:
    Base Commit: 1a4e40aa5d (1a4e40aa5dc16564af879142ba9dfbbb88d1e5ff)
    Diff on Web: https://github.com/larsxschneider/git/commit/3e5fdc512a
    Checkout:    git fetch https://github.com/larsxschneider/git progress-fix-v1 && git checkout 3e5fdc512a
 progress.c | 18 +++---------------
 1 file changed, 3 insertions(+), 15 deletions(-)
diff --git a/progress.c b/progress.c
index 289678d43d..7fa1b0f235 100644
--- a/progress.c
+++ b/progress.c
@@ -34,7 +34,6 @@ struct progress {
 	unsigned total;
 	unsigned last_percent;
 	unsigned delay;
-	unsigned delayed_percent_threshold;
 	struct throughput *throughput;
 	uint64_t start_ns;
 };
@@ -86,16 +85,6 @@ static int display(struct progress *progress, unsigned n, const char *done)
 	if (progress->delay) {
 		if (!progress_update || --progress->delay)
 			return 0;
-		if (progress->total) {
-			unsigned percent = n * 100 / progress->total;
-			if (percent > progress->delayed_percent_threshold) {
-				/* inhibit this progress report entirely */
-				clear_progress_signal();
-				progress->delay = -1;
-				progress->total = 0;
-				return 0;
-			}
-		}
 	}

 	progress->last_value = n;
@@ -206,7 +195,7 @@ int display_progress(struct progress *progress, unsigned n)
 }

 static struct progress *start_progress_delay(const char *title, unsigned total,
-					     unsigned percent_threshold, unsigned delay)
+					     unsigned delay)
 {
 	struct progress *progress = malloc(sizeof(*progress));
 	if (!progress) {
@@ -219,7 +208,6 @@ static struct progress *start_progress_delay(const char *title, unsigned total,
 	progress->total = total;
 	progress->last_value = -1;
 	progress->last_percent = -1;
-	progress->delayed_percent_threshold = percent_threshold;
 	progress->delay = delay;
 	progress->throughput = NULL;
 	progress->start_ns = getnanotime();
@@ -229,12 +217,12 @@ static struct progress *start_progress_delay(const char *title, unsigned total,

 struct progress *start_delayed_progress(const char *title, unsigned total)
 {
-	return start_progress_delay(title, total, 0, 2);
+	return start_progress_delay(title, total, 2);
 }

 struct progress *start_progress(const char *title, unsigned total)
 {
-	return start_progress_delay(title, total, 0, 0);
+	return start_progress_delay(title, total, 0);
 }

 void stop_progress(struct progress **p_progress)
--
2.15.1
Next: Jeff King
Message 1 of 11 in “progress: print progress output for all operations taking longer than 2s”
  1. progress: print progress output for all operations taking longer than 2slars.schneider@autodesk.com, Dec 4, 2017
  2. Jeff KingDec 4, 2017
  3. Junio C HamanoDec 4, 2017
  4. 0/2 fix v2.15 progress regressionJeff King, Dec 4, 2017
  5. 1/2 progress: set default delay threshold to 100%, not 0%Jeff King, Dec 4, 2017
  6. 2/2 progress: drop delay-threshold codeJeff King, Dec 4, 2017
  7. Lars SchneiderDec 5, 2017
  8. Ævar Arnfjörð BjarmasonDec 5, 2017
  9. Lars SchneiderDec 5, 2017
  10. Junio C HamanoDec 4, 2017
  11. Junio C HamanoDec 4, 2017

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.