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