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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]