diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/proc/TransDbProcDir.java b/fe/fe-core/src/main/java/org/apache/doris/common/proc/TransDbProcDir.java index 3c92bec9eb..74aa71116d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/proc/TransDbProcDir.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/proc/TransDbProcDir.java @@ -19,16 +19,11 @@ package org.apache.doris.common.proc; import org.apache.doris.catalog.Env; import org.apache.doris.common.AnalysisException; -import org.apache.doris.common.util.ListComparator; import org.apache.doris.transaction.GlobalTransactionMgr; import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - public class TransDbProcDir implements ProcDirInterface { public static final ImmutableList TITLE_NAMES = new ImmutableList.Builder() .add("DbId") @@ -44,19 +39,8 @@ public class TransDbProcDir implements ProcDirInterface { BaseProcResult result = new BaseProcResult(); result.setNames(TITLE_NAMES); GlobalTransactionMgr transactionMgr = Env.getCurrentGlobalTransactionMgr(); - List> infos = transactionMgr.getDbInfo(); - // order by dbId, asc - ListComparator> comparator = new ListComparator>(0); - Collections.sort(infos, comparator); - for (List info : infos) { - List row = new ArrayList(info.size()); - for (Comparable comparable : info) { - row.add(comparable.toString()); - } - result.addRow(row); - } + result.addRows(transactionMgr.getDbInfo()); return result; - } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/transaction/GlobalTransactionMgr.java b/fe/fe-core/src/main/java/org/apache/doris/transaction/GlobalTransactionMgr.java index 25c22786d0..25b3f30259 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/transaction/GlobalTransactionMgr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/transaction/GlobalTransactionMgr.java @@ -55,6 +55,8 @@ import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; @@ -492,12 +494,14 @@ public class GlobalTransactionMgr implements Writable { } } - public List> getDbInfo() { - List> infos = new ArrayList>(); + public List> getDbInfo() { + List> infos = new ArrayList<>(); + long totalRunningNum = 0; List dbIds = Lists.newArrayList(dbIdToDatabaseTransactionMgrs.keySet()); + Collections.sort(dbIds); for (long dbId : dbIds) { - List info = new ArrayList(); - info.add(dbId); + List info = new ArrayList<>(); + info.add(String.valueOf(dbId)); Database db = Env.getCurrentInternalCatalog().getDbNullable(dbId); if (db == null) { continue; @@ -507,12 +511,15 @@ public class GlobalTransactionMgr implements Writable { try { DatabaseTransactionMgr dbMgr = getDatabaseTransactionMgr(dbId); runningNum = dbMgr.getRunningTxnNums() + dbMgr.getRunningRoutineLoadTxnNums(); + totalRunningNum += runningNum; } catch (AnalysisException e) { LOG.warn("get database running transaction num failed", e); } - info.add(runningNum); + info.add(String.valueOf(runningNum)); infos.add(info); } + List info = Arrays.asList("0", "Total", String.valueOf(totalRunningNum)); + infos.add(info); return infos; }