This is an automated email from the ASF dual-hosted git repository.

liaoxin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new dd182711e94 [improve](load) show 99.99% instead of 100.00% in progess 
when load is not finished (#43224)
dd182711e94 is described below

commit dd182711e940b46bb071205c4aff57c7c0910111
Author: Kaijie Chen <c...@apache.org>
AuthorDate: Mon Nov 11 09:53:59 2024 +0800

    [improve](load) show 99.99% instead of 100.00% in progess when load is not 
finished (#43224)
    
    ### What problem does this PR solve?
    
    Currently when all instances finished, but the load is not finished,
    the progress will display `100.00%`, which is misleading to users.
    
    This PR detected changes it to `99.99%`.
---
 .../org/apache/doris/job/extensions/insert/InsertJob.java |  3 ++-
 .../main/java/org/apache/doris/load/loadv2/LoadJob.java   |  3 ++-
 .../org/apache/doris/load/loadv2/ProgressManager.java     | 15 ++++++++-------
 3 files changed, 12 insertions(+), 9 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/job/extensions/insert/InsertJob.java
 
b/fe/fe-core/src/main/java/org/apache/doris/job/extensions/insert/InsertJob.java
index ce35227feb1..f4a91498fea 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/job/extensions/insert/InsertJob.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/job/extensions/insert/InsertJob.java
@@ -440,7 +440,8 @@ public class InsertJob extends AbstractJob<InsertTask, 
Map<Object, Object>> impl
             }
 
             // progress
-            String progress = 
Env.getCurrentProgressManager().getProgressInfo(String.valueOf(getJobId()));
+            String progress = Env.getCurrentProgressManager()
+                    .getProgressInfo(String.valueOf(getJobId()), 
getJobStatus() == JobStatus.FINISHED);
             switch (getJobStatus()) {
                 case RUNNING:
                     if (isPending()) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/LoadJob.java 
b/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/LoadJob.java
index 652819ae8e1..8cb9070cf7a 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/LoadJob.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/LoadJob.java
@@ -757,7 +757,8 @@ public abstract class LoadJob extends 
AbstractTxnStateChangeCallback
 
         // progress
         // check null
-        String progress = 
Env.getCurrentProgressManager().getProgressInfo(String.valueOf(id));
+        String progress = Env.getCurrentProgressManager()
+                .getProgressInfo(String.valueOf(id), state == 
JobState.FINISHED);
         switch (state) {
             case PENDING:
                 jobInfo.add("0%");
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/ProgressManager.java 
b/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/ProgressManager.java
index c333f88ad98..c0de94062ff 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/ProgressManager.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/ProgressManager.java
@@ -67,13 +67,13 @@ public class ProgressManager {
         }
     }
 
-    public String getProgressInfo(String id) {
+    public String getProgressInfo(String id, boolean finished) {
         String progressInfo = "Unknown id: " + id;
         Progress progress = idToProgress.get(id);
         if (progress != null) {
             int finish = progress.getFinishedScanNums();
             int total = progress.getTotalScanNums();
-            String currentProgress = String.format("%.2f", 
progress.getProgress());
+            String currentProgress = String.format("%.2f", 
progress.getProgress(finished));
             progressInfo = currentProgress + "% (" + finish + "/" + total + 
")";
         }
         return progressInfo;
@@ -107,12 +107,13 @@ public class ProgressManager {
             return result;
         }
 
-        public double getProgress() {
+        public double getProgress(boolean finished) {
             // if no scan range found, the progress should be finished(100%)
-            if (totalScanNums == 0) {
-                return 100.0;
+            int finishedScanNums = getFinishedScanNums();
+            if (totalScanNums == 0 || finishedScanNums == totalScanNums) {
+                return finished ? 100.0 : 99.99;
             }
-            return getFinishedScanNums() * 100 / (double) totalScanNums;
+            return finishedScanNums * 100.0 / totalScanNums;
         }
 
         public Progress(int totalScanNums) {
@@ -127,7 +128,7 @@ public class ProgressManager {
             sb.append("/");
             sb.append(totalScanNums);
             sb.append(" => ");
-            sb.append(getProgress());
+            sb.append(getProgress(true));
             sb.append("%");
             return sb.toString();
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to