From 36e06d9e3f381f4c073e1f4240a0454e6187c805 Mon Sep 17 00:00:00 2001 From: "13574798@qq.com" <13574798@qq.com> Date: Fri, 20 Dec 2024 19:12:15 +0800 Subject: [PATCH 1/4] add be codes --- .../dashboard/controller/TableController.java | 3 +- .../OptimizingProcessInfoDecorateUtils.java | 50 +++++++++++++++++++ .../descriptor/OptimizingProcessInfo.java | 9 ++++ 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 amoro-ams/src/main/java/org/apache/amoro/server/utils/OptimizingProcessInfoDecorateUtils.java diff --git a/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/TableController.java b/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/TableController.java index 7dfb7f7c49..a490de4725 100644 --- a/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/TableController.java +++ b/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/TableController.java @@ -52,6 +52,7 @@ import org.apache.amoro.server.optimizing.OptimizingStatus; import org.apache.amoro.server.table.TableRuntime; import org.apache.amoro.server.table.TableService; +import org.apache.amoro.server.utils.OptimizingProcessInfoDecorateUtils; import org.apache.amoro.shade.guava32.com.google.common.base.Function; import org.apache.amoro.shade.guava32.com.google.common.base.Preconditions; import org.apache.amoro.shade.guava32.com.google.common.util.concurrent.ThreadFactoryBuilder; @@ -336,7 +337,7 @@ public void getOptimizingProcesses(Context ctx) { tableIdentifier.buildTableIdentifier(), type, processStatus, limit, offset); List result = optimizingProcessesInfo.getLeft(); int total = optimizingProcessesInfo.getRight(); - + OptimizingProcessInfoDecorateUtils.decorate(result); ctx.json(OkResponse.of(PageResult.of(result, total))); } diff --git a/amoro-ams/src/main/java/org/apache/amoro/server/utils/OptimizingProcessInfoDecorateUtils.java b/amoro-ams/src/main/java/org/apache/amoro/server/utils/OptimizingProcessInfoDecorateUtils.java new file mode 100644 index 0000000000..6b467ac8f7 --- /dev/null +++ b/amoro-ams/src/main/java/org/apache/amoro/server/utils/OptimizingProcessInfoDecorateUtils.java @@ -0,0 +1,50 @@ +package org.apache.amoro.server.utils; + +import org.apache.amoro.table.descriptor.OptimizingProcessInfo; +import org.apache.commons.collections.CollectionUtils; + +import java.util.List; + +public class OptimizingProcessInfoDecorateUtils { + + final static String[] UNITS = {"d", "h", "min", "s", "ms"}; + final static long[] THRESHOLDS = {24 * 3600 * 1000L, 3600 * 1000L, 60 * 1000L, 1000L, 1L}; + + public static void decorate(List optimizingProcessInfos) { + if (CollectionUtils.isEmpty(optimizingProcessInfos)) { + return; + } + optimizingProcessInfos.forEach(optimizingProcessInfo -> { + long duration = optimizingProcessInfo.getDuration(); + optimizingProcessInfo.setDurationDescriptor(formatCostTime(duration)); + }); + + + } + + private static String formatCostTime(long milliseconds){ + // Convert milliseconds to hours, minutes, seconds, and milliseconds + + // Calculate values for each time unit + long[] values = new long[UNITS.length]; + for (int i = 0; i < THRESHOLDS.length; i++) { + values[i] = milliseconds / THRESHOLDS[i]; + milliseconds %= THRESHOLDS[i]; + } + + // Generate output with at most two non-zero time units + StringBuilder result = new StringBuilder(); + int addedUnits = 0; + + for (int i = 0; i < UNITS.length && addedUnits < 2; i++) { + if (values[i] > 0) { + if (addedUnits > 0) { + result.append(" "); + } + result.append(values[i]).append(" ").append(UNITS[i]); + addedUnits++; + } + } + return result.toString(); + } +} diff --git a/amoro-common/src/main/java/org/apache/amoro/table/descriptor/OptimizingProcessInfo.java b/amoro-common/src/main/java/org/apache/amoro/table/descriptor/OptimizingProcessInfo.java index acd503e077..21518bf66a 100644 --- a/amoro-common/src/main/java/org/apache/amoro/table/descriptor/OptimizingProcessInfo.java +++ b/amoro-common/src/main/java/org/apache/amoro/table/descriptor/OptimizingProcessInfo.java @@ -34,6 +34,7 @@ public class OptimizingProcessInfo { private ProcessStatus status; private String failReason; private long duration; + private String durationDescriptor; private int successTasks; private int totalTasks; private int runningTasks; @@ -177,4 +178,12 @@ public Map getSummary() { public void setSummary(Map summary) { this.summary = summary; } + + public String getDurationDescriptor() { + return durationDescriptor; + } + + public void setDurationDescriptor(String durationDescriptor) { + this.durationDescriptor = durationDescriptor; + } } From 9cc65c017a5258e072e11813ca7598e8415443a7 Mon Sep 17 00:00:00 2001 From: "13574798@qq.com" <13574798@qq.com> Date: Fri, 20 Dec 2024 20:55:39 +0800 Subject: [PATCH 2/4] add be codes --- .../dashboard/controller/TableController.java | 3 +- .../OptimizingProcessInfoDecorateUtils.java | 50 ------------------- 2 files changed, 1 insertion(+), 52 deletions(-) delete mode 100644 amoro-ams/src/main/java/org/apache/amoro/server/utils/OptimizingProcessInfoDecorateUtils.java diff --git a/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/TableController.java b/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/TableController.java index a490de4725..7dfb7f7c49 100644 --- a/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/TableController.java +++ b/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/TableController.java @@ -52,7 +52,6 @@ import org.apache.amoro.server.optimizing.OptimizingStatus; import org.apache.amoro.server.table.TableRuntime; import org.apache.amoro.server.table.TableService; -import org.apache.amoro.server.utils.OptimizingProcessInfoDecorateUtils; import org.apache.amoro.shade.guava32.com.google.common.base.Function; import org.apache.amoro.shade.guava32.com.google.common.base.Preconditions; import org.apache.amoro.shade.guava32.com.google.common.util.concurrent.ThreadFactoryBuilder; @@ -337,7 +336,7 @@ public void getOptimizingProcesses(Context ctx) { tableIdentifier.buildTableIdentifier(), type, processStatus, limit, offset); List result = optimizingProcessesInfo.getLeft(); int total = optimizingProcessesInfo.getRight(); - OptimizingProcessInfoDecorateUtils.decorate(result); + ctx.json(OkResponse.of(PageResult.of(result, total))); } diff --git a/amoro-ams/src/main/java/org/apache/amoro/server/utils/OptimizingProcessInfoDecorateUtils.java b/amoro-ams/src/main/java/org/apache/amoro/server/utils/OptimizingProcessInfoDecorateUtils.java deleted file mode 100644 index 6b467ac8f7..0000000000 --- a/amoro-ams/src/main/java/org/apache/amoro/server/utils/OptimizingProcessInfoDecorateUtils.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.apache.amoro.server.utils; - -import org.apache.amoro.table.descriptor.OptimizingProcessInfo; -import org.apache.commons.collections.CollectionUtils; - -import java.util.List; - -public class OptimizingProcessInfoDecorateUtils { - - final static String[] UNITS = {"d", "h", "min", "s", "ms"}; - final static long[] THRESHOLDS = {24 * 3600 * 1000L, 3600 * 1000L, 60 * 1000L, 1000L, 1L}; - - public static void decorate(List optimizingProcessInfos) { - if (CollectionUtils.isEmpty(optimizingProcessInfos)) { - return; - } - optimizingProcessInfos.forEach(optimizingProcessInfo -> { - long duration = optimizingProcessInfo.getDuration(); - optimizingProcessInfo.setDurationDescriptor(formatCostTime(duration)); - }); - - - } - - private static String formatCostTime(long milliseconds){ - // Convert milliseconds to hours, minutes, seconds, and milliseconds - - // Calculate values for each time unit - long[] values = new long[UNITS.length]; - for (int i = 0; i < THRESHOLDS.length; i++) { - values[i] = milliseconds / THRESHOLDS[i]; - milliseconds %= THRESHOLDS[i]; - } - - // Generate output with at most two non-zero time units - StringBuilder result = new StringBuilder(); - int addedUnits = 0; - - for (int i = 0; i < UNITS.length && addedUnits < 2; i++) { - if (values[i] > 0) { - if (addedUnits > 0) { - result.append(" "); - } - result.append(values[i]).append(" ").append(UNITS[i]); - addedUnits++; - } - } - return result.toString(); - } -} From 5f397cf37aa9965798d5374dcbe7d683857a3d38 Mon Sep 17 00:00:00 2001 From: "13574798@qq.com" <13574798@qq.com> Date: Fri, 20 Dec 2024 22:03:03 +0800 Subject: [PATCH 3/4] add be codes --- amoro-web/src/utils/index.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/amoro-web/src/utils/index.ts b/amoro-web/src/utils/index.ts index 8d852e0837..3b89598a7f 100644 --- a/amoro-web/src/utils/index.ts +++ b/amoro-web/src/utils/index.ts @@ -81,9 +81,19 @@ export function formatMS2Time(ms: number): string { { value: seconds, unit: 's' }, ] - return times.reduce((pre: string, cur: { value: number, unit: string }) => { - return cur.value > 0 ? `${pre}${cur.value} ${cur.unit} ` : pre - }, '') + let result = '' + let count = 0 + + // Only add at most two non-zero time units to the result + for (const time of times) { + if (time.value > 0 && count < 2) { + result += `${time.value}${time.unit} ` + count++ + } + } + + // Trim any trailing spaces and return the formatted result + return result.trim() } /** * Convert milliseconds to d h min s format From 342cf3b75b7cead5f5acf34a1300504ee90373db Mon Sep 17 00:00:00 2001 From: "13574798@qq.com" <13574798@qq.com> Date: Sat, 21 Dec 2024 09:28:35 +0800 Subject: [PATCH 4/4] revert --- .../amoro/table/descriptor/OptimizingProcessInfo.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/amoro-common/src/main/java/org/apache/amoro/table/descriptor/OptimizingProcessInfo.java b/amoro-common/src/main/java/org/apache/amoro/table/descriptor/OptimizingProcessInfo.java index 21518bf66a..acd503e077 100644 --- a/amoro-common/src/main/java/org/apache/amoro/table/descriptor/OptimizingProcessInfo.java +++ b/amoro-common/src/main/java/org/apache/amoro/table/descriptor/OptimizingProcessInfo.java @@ -34,7 +34,6 @@ public class OptimizingProcessInfo { private ProcessStatus status; private String failReason; private long duration; - private String durationDescriptor; private int successTasks; private int totalTasks; private int runningTasks; @@ -178,12 +177,4 @@ public Map getSummary() { public void setSummary(Map summary) { this.summary = summary; } - - public String getDurationDescriptor() { - return durationDescriptor; - } - - public void setDurationDescriptor(String durationDescriptor) { - this.durationDescriptor = durationDescriptor; - } }