This is an automated email from the ASF dual-hosted git repository.
morningman 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 1b119704f8 [Enhancement] show total transactions in show proc
"/transactions" (#19492)
1b119704f8 is described below
commit 1b119704f87fc722e3bae0fa488129b761657ab1
Author: HB <[email protected]>
AuthorDate: Sat May 20 11:26:28 2023 +0800
[Enhancement] show total transactions in show proc "/transactions" (#19492)
In a scenario where multiple DBs are simultaneously imported with high
concurrency, a significant number of transactions will be generated. Without a
summary field, we cannot clearly see how many transactions there are in the
current cluster. Therefore, I have enhanced this point.
```
mysql> show proc "/transactions";
+-------+-----------------------------------+-----------------------+
| DbId | DbName |
RunningTransactionNum |
+-------+-----------------------------------+-----------------------+
| 10002 | default_cluster:xxxx | 0
|
| 14005 | default_cluster:__internal_schema | 0
|
| Total | 2 |
0 |
+-------+-----------------------------------+-----------------------+
3 rows in set (0.02 sec)
```
---
.../org/apache/doris/common/proc/TransDbProcDir.java | 18 +-----------------
.../apache/doris/transaction/GlobalTransactionMgr.java | 17 ++++++++++++-----
2 files changed, 13 insertions(+), 22 deletions(-)
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<String> TITLE_NAMES = new
ImmutableList.Builder<String>()
.add("DbId")
@@ -44,19 +39,8 @@ public class TransDbProcDir implements ProcDirInterface {
BaseProcResult result = new BaseProcResult();
result.setNames(TITLE_NAMES);
GlobalTransactionMgr transactionMgr =
Env.getCurrentGlobalTransactionMgr();
- List<List<Comparable>> infos = transactionMgr.getDbInfo();
- // order by dbId, asc
- ListComparator<List<Comparable>> comparator = new
ListComparator<List<Comparable>>(0);
- Collections.sort(infos, comparator);
- for (List<Comparable> info : infos) {
- List<String> row = new ArrayList<String>(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<List<Comparable>> getDbInfo() {
- List<List<Comparable>> infos = new ArrayList<List<Comparable>>();
+ public List<List<String>> getDbInfo() {
+ List<List<String>> infos = new ArrayList<>();
+ long totalRunningNum = 0;
List<Long> dbIds =
Lists.newArrayList(dbIdToDatabaseTransactionMgrs.keySet());
+ Collections.sort(dbIds);
for (long dbId : dbIds) {
- List<Comparable> info = new ArrayList<Comparable>();
- info.add(dbId);
+ List<String> 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<String> info = Arrays.asList("0", "Total",
String.valueOf(totalRunningNum));
+ infos.add(info);
return infos;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]