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

dataroaring 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 8d019eea459 [behavior change](fe) Change `ShowProcessStmt` output 
column format (#33975)
8d019eea459 is described below

commit 8d019eea459d549f049dbb16974c06b5995d42e8
Author: Lei Zhang <27994433+swjtu-zhang...@users.noreply.github.com>
AuthorDate: Tue Apr 23 21:15:38 2024 +0800

    [behavior change](fe) Change `ShowProcessStmt` output column format (#33975)
    
    * Show fe host info in output columns by default
    * Add a new column `CloudCluster` for cloud cluster info
---
 .../apache/doris/analysis/ShowProcesslistStmt.java | 19 ++--------
 .../doris/httpv2/controller/SessionController.java | 19 +++++-----
 .../java/org/apache/doris/qe/ConnectContext.java   |  8 ++---
 .../java/org/apache/doris/qe/ConnectScheduler.java |  4 +--
 .../java/org/apache/doris/qe/ShowExecutor.java     |  2 +-
 .../apache/doris/service/FrontendServiceImpl.java  |  2 +-
 .../org/apache/doris/qe/ConnectContextTest.java    |  4 +--
 .../suites/show_p0/test_show_processlist.groovy    | 40 ++++++++++++++++++++++
 8 files changed, 60 insertions(+), 38 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowProcesslistStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowProcesslistStmt.java
index 96e8a082249..e602e85f499 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowProcesslistStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowProcesslistStmt.java
@@ -27,20 +27,6 @@ import org.apache.doris.qe.ShowResultSetMetaData;
 // Used to show connection belong to this user.
 public class ShowProcesslistStmt extends ShowStmt {
     private static final ShowResultSetMetaData META_DATA = 
ShowResultSetMetaData.builder()
-            .addColumn(new Column("CurrentConnected", 
ScalarType.createVarchar(16)))
-            .addColumn(new Column("Id", 
ScalarType.createType(PrimitiveType.BIGINT)))
-            .addColumn(new Column("User", ScalarType.createVarchar(16)))
-            .addColumn(new Column("Host", ScalarType.createVarchar(16)))
-            .addColumn(new Column("LoginTime", ScalarType.createVarchar(16)))
-            .addColumn(new Column("Catalog", ScalarType.createVarchar(16)))
-            .addColumn(new Column("Db", ScalarType.createVarchar(16)))
-            .addColumn(new Column("Command", ScalarType.createVarchar(16)))
-            .addColumn(new Column("Time", 
ScalarType.createType(PrimitiveType.INT)))
-            .addColumn(new Column("State", ScalarType.createVarchar(64)))
-            .addColumn(new Column("QueryId", ScalarType.createVarchar(64)))
-            .addColumn(new Column("Info", ScalarType.STRING)).build();
-
-    private static final ShowResultSetMetaData ALL_META_DATA = 
ShowResultSetMetaData.builder()
             .addColumn(new Column("CurrentConnected", 
ScalarType.createVarchar(16)))
             .addColumn(new Column("Id", 
ScalarType.createType(PrimitiveType.BIGINT)))
             .addColumn(new Column("User", ScalarType.createVarchar(16)))
@@ -53,7 +39,8 @@ public class ShowProcesslistStmt extends ShowStmt {
             .addColumn(new Column("State", ScalarType.createVarchar(64)))
             .addColumn(new Column("QueryId", ScalarType.createVarchar(64)))
             .addColumn(new Column("Info", ScalarType.STRING))
-            .addColumn(new Column("FE", ScalarType.createVarchar(16))).build();
+            .addColumn(new Column("FE", ScalarType.createVarchar(16)))
+            .addColumn(new Column("CloudCluster", 
ScalarType.createVarchar(16))).build();
 
     private boolean isFull;
     private boolean isShowAllFe;
@@ -87,6 +74,6 @@ public class ShowProcesslistStmt extends ShowStmt {
 
     @Override
     public ShowResultSetMetaData getMetaData() {
-        return isShowAllFe ? ALL_META_DATA : META_DATA;
+        return META_DATA;
     }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/httpv2/controller/SessionController.java
 
b/fe/fe-core/src/main/java/org/apache/doris/httpv2/controller/SessionController.java
index 440e9b40433..090e8981495 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/httpv2/controller/SessionController.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/httpv2/controller/SessionController.java
@@ -52,9 +52,6 @@ import javax.servlet.http.HttpServletRequest;
 public class SessionController extends RestBaseController {
 
     private static final List<String> SESSION_TABLE_HEADER = 
Lists.newArrayList();
-
-    private static final List<String> ALL_SESSION_TABLE_HEADER = 
Lists.newArrayList();
-
     private static final Logger LOG = 
LogManager.getLogger(SessionController.class);
 
     static {
@@ -70,21 +67,21 @@ public class SessionController extends RestBaseController {
         SESSION_TABLE_HEADER.add("State");
         SESSION_TABLE_HEADER.add("QueryId");
         SESSION_TABLE_HEADER.add("Info");
-        ALL_SESSION_TABLE_HEADER.addAll(SESSION_TABLE_HEADER);
-        ALL_SESSION_TABLE_HEADER.add("FE");
+        SESSION_TABLE_HEADER.add("FE");
+        SESSION_TABLE_HEADER.add("CloudCluster");
     }
 
     @RequestMapping(path = "/session/all", method = RequestMethod.GET)
     public Object allSession(HttpServletRequest request) {
         Map<String, Object> result = Maps.newHashMap();
-        result.put("column_names", ALL_SESSION_TABLE_HEADER);
+        result.put("column_names", SESSION_TABLE_HEADER);
         List<Map<String, String>> sessionInfo = 
Env.getCurrentEnv().getFrontends(null)
                 .stream()
                 .filter(Frontend::isAlive)
                 .map(frontend -> {
                     try {
                         return 
Env.getCurrentEnv().getSelfNode().getHost().equals(frontend.getHost())
-                            ? getSessionInfo(true)
+                            ? getSessionInfo()
                             : getOtherSessionInfo(request, frontend);
                     } catch (IOException e) {
                         LOG.warn("", e);
@@ -104,22 +101,22 @@ public class SessionController extends RestBaseController 
{
     public Object session() {
         Map<String, Object> result = Maps.newHashMap();
         result.put("column_names", SESSION_TABLE_HEADER);
-        result.put("rows", getSessionInfo(false));
+        result.put("rows", getSessionInfo());
         ResponseEntity entity = ResponseEntityBuilder.ok(result);
         ((ResponseBody) entity.getBody()).setCount(result.size());
         return entity;
     }
 
-    private List<Map<String, String>> getSessionInfo(boolean showFe) {
+    private List<Map<String, String>> getSessionInfo() {
         List<ConnectContext.ThreadInfo> threadInfos = 
ExecuteEnv.getInstance().getScheduler()
                 .listConnection("root", false);
         long nowMs = System.currentTimeMillis();
         return threadInfos.stream()
-                .map(info -> info.toRow(-1, nowMs, showFe))
+                .map(info -> info.toRow(-1, nowMs))
                 .map(row -> {
                     Map<String, String> record = new HashMap<>();
                     for (int i = 0; i < row.size(); i++) {
-                        record.put(showFe ? ALL_SESSION_TABLE_HEADER.get(i) : 
SESSION_TABLE_HEADER.get(i), row.get(i));
+                        record.put(SESSION_TABLE_HEADER.get(i), row.get(i));
                     }
                     return record;
                 })
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java 
b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java
index 79cb7c17367..e7414640fc0 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java
@@ -1013,7 +1013,7 @@ public class ConnectContext {
     public class ThreadInfo {
         public boolean isFull;
 
-        public List<String> toRow(int connId, long nowMs, boolean showFe) {
+        public List<String> toRow(int connId, long nowMs) {
             List<String> row = Lists.newArrayList();
             if (connId == connectionId) {
                 row.add("Yes");
@@ -1042,10 +1042,8 @@ public class ConnectContext {
                 row.add("");
             }
 
-            if (showFe) {
-                row.add(Env.getCurrentEnv().getSelfNode().getHost());
-            }
-
+            row.add(Env.getCurrentEnv().getSelfNode().getHost());
+            row.add(cloudCluster);
             return row;
         }
     }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectScheduler.java 
b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectScheduler.java
index 31a55649b50..97d47340194 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectScheduler.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectScheduler.java
@@ -173,11 +173,11 @@ public class ConnectScheduler {
     }
 
     // used for thrift
-    public List<List<String>> listConnectionWithoutAuth(boolean isShowFullSql, 
boolean isShowFeHost) {
+    public List<List<String>> listConnectionWithoutAuth(boolean isShowFullSql) 
{
         List<List<String>> list = new ArrayList<>();
         long nowMs = System.currentTimeMillis();
         for (ConnectContext ctx : connectionMap.values()) {
-            list.add(ctx.toThreadInfo(isShowFullSql).toRow(-1, nowMs, 
isShowFeHost));
+            list.add(ctx.toThreadInfo(isShowFullSql).toRow(-1, nowMs));
         }
         return list;
     }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java 
b/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java
index 23eef3a37a1..bb6390b73f8 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java
@@ -489,7 +489,7 @@ public class ShowExecutor {
                 .listConnection(ctx.getQualifiedUser(), isShowFullSql);
         long nowMs = System.currentTimeMillis();
         for (ConnectContext.ThreadInfo info : threadInfos) {
-            rowSet.add(info.toRow(ctx.getConnectionId(), nowMs, isShowAllFe));
+            rowSet.add(info.toRow(ctx.getConnectionId(), nowMs));
         }
 
         if (isShowAllFe) {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java 
b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java
index 18e6f416d55..d5f0a5aafd7 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendServiceImpl.java
@@ -3762,7 +3762,7 @@ public class FrontendServiceImpl implements 
FrontendService.Iface {
             isShowFullSql = request.isShowFullSql();
         }
         List<List<String>> processList = 
ExecuteEnv.getInstance().getScheduler()
-                .listConnectionWithoutAuth(isShowFullSql, true);
+                .listConnectionWithoutAuth(isShowFullSql);
         TShowProcessListResult result = new TShowProcessListResult();
         result.setProcessList(processList);
         return result;
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/qe/ConnectContextTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/qe/ConnectContextTest.java
index c6daac7fcf1..4bb30b14a63 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/qe/ConnectContextTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/qe/ConnectContextTest.java
@@ -99,8 +99,8 @@ public class ConnectContextTest {
 
         // Thread info
         Assert.assertNotNull(ctx.toThreadInfo(false));
-        List<String> row = ctx.toThreadInfo(false).toRow(101, 1000, false);
-        Assert.assertEquals(12, row.size());
+        List<String> row = ctx.toThreadInfo(false).toRow(101, 1000);
+        Assert.assertEquals(14, row.size());
         Assert.assertEquals("Yes", row.get(0));
         Assert.assertEquals("101", row.get(1));
         Assert.assertEquals("testUser", row.get(2));
diff --git a/regression-test/suites/show_p0/test_show_processlist.groovy 
b/regression-test/suites/show_p0/test_show_processlist.groovy
new file mode 100644
index 00000000000..b093261e7b2
--- /dev/null
+++ b/regression-test/suites/show_p0/test_show_processlist.groovy
@@ -0,0 +1,40 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+import org.apache.doris.regression.util.Http
+
+suite("test_show_processlist") {
+    sql """set show_all_fe_connection = false;"""
+    def result = sql """show processlist;"""
+    logger.info("result:${result}")
+    assertTrue(result[0].size() == 14)
+    sql """set show_all_fe_connection = true;"""
+    result = sql """show processlist;"""
+    logger.info("result:${result}")
+    assertTrue(result[0].size() == 14)
+    sql """set show_all_fe_connection = false;"""
+
+    def url1 = "http://${context.config.feHttpAddress}/rest/v1/session";
+    result =  Http.GET(url1, true)
+    logger.info("result:${result}")
+    assertTrue(result["data"]["column_names"].size() == 14);
+
+    def url2 = "http://${context.config.feHttpAddress}/rest/v1/session/all";
+    result = Http.GET(url2, true)
+    logger.info("result:${result}")
+    assertTrue(result["data"]["column_names"].size() == 14);
+}
\ No newline at end of file


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

Reply via email to