You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ca...@apache.org on 2022/11/09 02:49:43 UTC
[iotdb] branch master updated: [IOTDB-4865] Cluster tool — show cluster details (#7935)
This is an automated email from the ASF dual-hosted git repository.
caogaofei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new ff2541bf6b [IOTDB-4865] Cluster tool — show cluster details (#7935)
ff2541bf6b is described below
commit ff2541bf6b82c0e15a07015878a0ad30a6351603
Author: Itami Sho <42...@users.noreply.github.com>
AuthorDate: Wed Nov 9 10:49:37 2022 +0800
[IOTDB-4865] Cluster tool — show cluster details (#7935)
---
.../org/apache/iotdb/db/qp/sql/IdentifierParser.g4 | 1 +
.../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 | 7 +-
.../antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4 | 4 ++
.../Maintenance-Tools/Maintenance-Command.md | 23 +++++++
.../Maintenance-Tools/Maintenance-Command.md | 22 ++++++
.../db/mpp/common/header/ColumnHeaderConstant.java | 21 +++++-
.../db/mpp/common/header/DatasetHeaderFactory.java | 4 ++
.../iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java | 6 +-
.../plan/execution/config/ConfigTaskVisitor.java | 5 +-
.../config/executor/ClusterConfigTaskExecutor.java | 10 ++-
.../config/executor/IConfigTaskExecutor.java | 3 +-
.../executor/StandaloneConfigTaskExecutor.java | 3 +-
...lusterTask.java => ShowClusterDetailsTask.java} | 78 +++++++++++++++++-----
.../execution/config/metadata/ShowClusterTask.java | 8 ++-
.../iotdb/db/mpp/plan/parser/ASTVisitor.java | 7 ++
.../statement/metadata/ShowClusterStatement.java | 10 +++
16 files changed, 185 insertions(+), 27 deletions(-)
diff --git a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IdentifierParser.g4 b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IdentifierParser.g4
index fb108cb96e..3aea385462 100644
--- a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IdentifierParser.g4
+++ b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IdentifierParser.g4
@@ -72,6 +72,7 @@ keyWords
| DESCRIBE
| DEVICE
| DEVICES
+ | DETAILS
| DISABLE
| DISCARD
| DROP
diff --git a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
index 51cb8f178d..271e66569f 100644
--- a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
+++ b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
@@ -42,7 +42,7 @@ ddlStatement
| dropFunction | dropTrigger | dropContinuousQuery | dropSchemaTemplate
| setTTL | unsetTTL | startTrigger | stopTrigger | setSchemaTemplate | unsetSchemaTemplate
| showStorageGroup | showDevices | showTimeseries | showChildPaths | showChildNodes
- | showFunctions | showTriggers | showContinuousQueries | showTTL | showAllTTL | showCluster | showRegion | showDataNodes | showConfigNodes
+ | showFunctions | showTriggers | showContinuousQueries | showTTL | showAllTTL | showCluster | showClusterDetails | showRegion | showDataNodes | showConfigNodes
| showSchemaTemplates | showNodesInSchemaTemplate
| showPathsUsingSchemaTemplate | showPathsSetSchemaTemplate
| countStorageGroup | countDevices | countTimeseries | countNodes
@@ -339,6 +339,11 @@ showCluster
: SHOW CLUSTER
;
+// Show Cluster Details
+showClusterDetails
+ : SHOW CLUSTER DETAILS
+ ;
+
// Show Region
showRegion
: SHOW (SCHEMA | DATA)? REGIONS (OF STORAGE GROUP prefixPath? (COMMA prefixPath)*)?
diff --git a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4 b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
index a6141a614e..be2578da03 100644
--- a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
+++ b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4
@@ -194,6 +194,10 @@ DESCRIBE
: D E S C R I B E
;
+DETAILS
+ : D E T A I L S
+ ;
+
DEVICE
: D E V I C E
;
diff --git a/docs/UserGuide/Maintenance-Tools/Maintenance-Command.md b/docs/UserGuide/Maintenance-Tools/Maintenance-Command.md
index 19a775303e..4f78031b49 100644
--- a/docs/UserGuide/Maintenance-Tools/Maintenance-Command.md
+++ b/docs/UserGuide/Maintenance-Tools/Maintenance-Command.md
@@ -253,6 +253,29 @@ Total line number = 6
It costs 0.011s
```
+View the details of all nodes:
+
+```
+SHOW CLUSTER DETAILS
+```
+
+Eg:
+```
+IoTDB> show cluster details
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+|NodeID| NodeType| Status|InternalAddress|InternalPort|ConfigConsensusPort|RpcAddress|RpcPort|DataConsensusPort|SchemaConsensusPort|MppPort|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+| 0|ConfigNode|Running| 127.0.0.1| 22277| 22278| | | | | |
+| 1|ConfigNode|Running| 127.0.0.1| 22279| 22280| | | | | |
+| 2|ConfigNode|Running| 127.0.0.1| 22281| 22282| | | | | |
+| 3| DataNode|Running| 127.0.0.1| 9003| | 127.0.0.1| 6667| 40010| 50010| 8777|
+| 4| DataNode|Running| 127.0.0.1| 9004| | 127.0.0.1| 6668| 40011| 50011| 8778|
+| 5| DataNode|Running| 127.0.0.1| 9005| | 127.0.0.1| 6669| 40012| 50012| 8779|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+Total line number = 6
+It costs 0.340s
+```
+
After a node is stopped, its status will change, as shown below:
```
diff --git a/docs/zh/UserGuide/Maintenance-Tools/Maintenance-Command.md b/docs/zh/UserGuide/Maintenance-Tools/Maintenance-Command.md
index f6985d4f19..1b70be4d59 100644
--- a/docs/zh/UserGuide/Maintenance-Tools/Maintenance-Command.md
+++ b/docs/zh/UserGuide/Maintenance-Tools/Maintenance-Command.md
@@ -251,6 +251,28 @@ Total line number = 6
It costs 0.011s
```
+查看全部节点的详细配置信息:
+
+```
+SHOW CLUSTER DETAILS
+```
+
+示例:
+```
+IoTDB> show cluster details
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+|NodeID| NodeType| Status|InternalAddress|InternalPort|ConfigConsensusPort|RpcAddress|RpcPort|DataConsensusPort|SchemaConsensusPort|MppPort|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+| 0|ConfigNode|Running| 127.0.0.1| 22277| 22278| | | | | |
+| 1|ConfigNode|Running| 127.0.0.1| 22279| 22280| | | | | |
+| 2|ConfigNode|Running| 127.0.0.1| 22281| 22282| | | | | |
+| 3| DataNode|Running| 127.0.0.1| 9003| | 127.0.0.1| 6667| 40010| 50010| 8777|
+| 4| DataNode|Running| 127.0.0.1| 9004| | 127.0.0.1| 6668| 40011| 50011| 8778|
+| 5| DataNode|Running| 127.0.0.1| 9005| | 127.0.0.1| 6669| 40012| 50012| 8779|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+Total line number = 6
+It costs 0.340s
+```
## 集群 Region 分布监控工具
集群中以 Region 作为数据复制和数据管理的单元,Region 的状态和分布对于系统运维和测试有很大帮助,如以下场景:
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
index 9d842b3838..d78c84ed8d 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
@@ -62,14 +62,19 @@ public class ColumnHeaderConstant {
public static final String COLUMN_COUNT_TIMESERIES = "count(timeseries)";
public static final String COLUMN_COUNT_STORAGE_GROUP = "count(storage group)";
- // column names for show cluster statement
+ // column names for show cluster and show cluster details statements
public static final String COLUMN_NODE_ID = "NodeID";
public static final String COLUMN_NODE_TYPE = "NodeType";
public static final String COLUMN_STATUS = "Status";
public static final String COLUMN_HOST = "Host";
public static final String COLUMN_INTERNAL_ADDRESS = "InternalAddress";
public static final String COLUMN_INTERNAL_PORT = "InternalPort";
+ public static final String COLUMN_CONFIG_CONSENSUS_PORT = "ConfigConsensusPort";
+ public static final String COLUMN_RPC_ADDRESS = "RpcAddress";
public static final String COLUMN_RPC_PORT = "RpcPort";
+ public static final String COLUMN_DATA_CONSENSUS_PORT = "DataConsensusPort";
+ public static final String COLUMN_SCHEMA_CONSENSUS_PORT = "SchemaConsensusPort";
+ public static final String COLUMN_MPP_PORT = "MppPort";
// column names for show functions statement
public static final String COLUMN_FUNCTION_NAME = "function name";
@@ -252,6 +257,20 @@ public class ColumnHeaderConstant {
new ColumnHeader(COLUMN_INTERNAL_ADDRESS, TSDataType.TEXT),
new ColumnHeader(COLUMN_INTERNAL_PORT, TSDataType.INT32));
+ public static final List<ColumnHeader> showClusterDetailsColumnHeaders =
+ ImmutableList.of(
+ new ColumnHeader(COLUMN_NODE_ID, TSDataType.INT32),
+ new ColumnHeader(COLUMN_NODE_TYPE, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_STATUS, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_INTERNAL_ADDRESS, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_INTERNAL_PORT, TSDataType.INT32),
+ new ColumnHeader(COLUMN_CONFIG_CONSENSUS_PORT, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_RPC_ADDRESS, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_RPC_PORT, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_DATA_CONSENSUS_PORT, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_SCHEMA_CONSENSUS_PORT, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_MPP_PORT, TSDataType.TEXT));
+
public static final List<ColumnHeader> showFunctionsColumnHeaders =
ImmutableList.of(
new ColumnHeader(COLUMN_FUNCTION_NAME, TSDataType.TEXT),
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java
index 020f6426e1..00d4f7a4e5 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java
@@ -81,6 +81,10 @@ public class DatasetHeaderFactory {
return new DatasetHeader(ColumnHeaderConstant.showClusterColumnHeaders, true);
}
+ public static DatasetHeader getShowClusterDetailsHeader() {
+ return new DatasetHeader(ColumnHeaderConstant.showClusterDetailsColumnHeaders, true);
+ }
+
public static DatasetHeader getShowFunctionsHeader() {
return new DatasetHeader(ColumnHeaderConstant.showFunctionsColumnHeaders, true);
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
index b6e2c737a9..9a57bb3d08 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
@@ -1958,7 +1958,11 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext>
ShowClusterStatement showClusterStatement, MPPQueryContext context) {
Analysis analysis = new Analysis();
analysis.setStatement(showClusterStatement);
- analysis.setRespDatasetHeader(DatasetHeaderFactory.getShowClusterHeader());
+ if (showClusterStatement.isDetails()) {
+ analysis.setRespDatasetHeader(DatasetHeaderFactory.getShowClusterDetailsHeader());
+ } else {
+ analysis.setRespDatasetHeader(DatasetHeaderFactory.getShowClusterHeader());
+ }
return analysis;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigTaskVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigTaskVisitor.java
index 1e6aa6f61e..5fe55dadcc 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigTaskVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ConfigTaskVisitor.java
@@ -33,6 +33,7 @@ import org.apache.iotdb.db.mpp.plan.execution.config.metadata.GetSeriesSlotListT
import org.apache.iotdb.db.mpp.plan.execution.config.metadata.GetTimeSlotListTask;
import org.apache.iotdb.db.mpp.plan.execution.config.metadata.SetStorageGroupTask;
import org.apache.iotdb.db.mpp.plan.execution.config.metadata.SetTTLTask;
+import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowClusterDetailsTask;
import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowClusterTask;
import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowConfigNodesTask;
import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowContinuousQueriesTask;
@@ -171,7 +172,9 @@ public class ConfigTaskVisitor
@Override
public IConfigTask visitShowCluster(
ShowClusterStatement showClusterStatement, TaskContext context) {
- return new ShowClusterTask(showClusterStatement);
+ return showClusterStatement.isDetails()
+ ? new ShowClusterDetailsTask(showClusterStatement)
+ : new ShowClusterTask(showClusterStatement);
}
@Override
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java
index 10df3d09c3..406202398c 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java
@@ -84,6 +84,7 @@ import org.apache.iotdb.db.mpp.plan.execution.config.metadata.GetRegionIdTask;
import org.apache.iotdb.db.mpp.plan.execution.config.metadata.GetSeriesSlotListTask;
import org.apache.iotdb.db.mpp.plan.execution.config.metadata.GetTimeSlotListTask;
import org.apache.iotdb.db.mpp.plan.execution.config.metadata.SetStorageGroupTask;
+import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowClusterDetailsTask;
import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowClusterTask;
import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowConfigNodesTask;
import org.apache.iotdb.db.mpp.plan.execution.config.metadata.ShowContinuousQueriesTask;
@@ -109,6 +110,7 @@ import org.apache.iotdb.db.mpp.plan.statement.metadata.GetSeriesSlotListStatemen
import org.apache.iotdb.db.mpp.plan.statement.metadata.GetTimeSlotListStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.SetStorageGroupStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.SetTTLStatement;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowClusterStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowDataNodesStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowRegionStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowStorageGroupStatement;
@@ -722,7 +724,7 @@ public class ClusterConfigTaskExecutor implements IConfigTaskExecutor {
}
@Override
- public SettableFuture<ConfigTaskResult> showCluster() {
+ public SettableFuture<ConfigTaskResult> showCluster(ShowClusterStatement showClusterStatement) {
SettableFuture<ConfigTaskResult> future = SettableFuture.create();
TShowClusterResp showClusterResp = new TShowClusterResp();
try (ConfigNodeClient client =
@@ -732,7 +734,11 @@ public class ClusterConfigTaskExecutor implements IConfigTaskExecutor {
future.setException(e);
}
// build TSBlock
- ShowClusterTask.buildTSBlock(showClusterResp, future);
+ if (showClusterStatement.isDetails()) {
+ ShowClusterDetailsTask.buildTSBlock(showClusterResp, future);
+ } else {
+ ShowClusterTask.buildTSBlock(showClusterResp, future);
+ }
return future;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/IConfigTaskExecutor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/IConfigTaskExecutor.java
index dc79335224..1e5ba37b17 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/IConfigTaskExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/IConfigTaskExecutor.java
@@ -33,6 +33,7 @@ import org.apache.iotdb.db.mpp.plan.statement.metadata.GetSeriesSlotListStatemen
import org.apache.iotdb.db.mpp.plan.statement.metadata.GetTimeSlotListStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.SetStorageGroupStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.SetTTLStatement;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowClusterStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowDataNodesStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowRegionStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowStorageGroupStatement;
@@ -94,7 +95,7 @@ public interface IConfigTaskExecutor {
SettableFuture<ConfigTaskResult> setSystemStatus(boolean onCluster, NodeStatus status);
- SettableFuture<ConfigTaskResult> showCluster();
+ SettableFuture<ConfigTaskResult> showCluster(ShowClusterStatement showClusterStatement);
SettableFuture<ConfigTaskResult> showTTL(ShowTTLStatement showTTLStatement);
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/StandaloneConfigTaskExecutor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/StandaloneConfigTaskExecutor.java
index a0c59d4d8b..bf6109a6de 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/StandaloneConfigTaskExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/StandaloneConfigTaskExecutor.java
@@ -51,6 +51,7 @@ import org.apache.iotdb.db.mpp.plan.statement.metadata.GetSeriesSlotListStatemen
import org.apache.iotdb.db.mpp.plan.statement.metadata.GetTimeSlotListStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.SetStorageGroupStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.SetTTLStatement;
+import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowClusterStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowDataNodesStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowRegionStatement;
import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowStorageGroupStatement;
@@ -368,7 +369,7 @@ public class StandaloneConfigTaskExecutor implements IConfigTaskExecutor {
}
@Override
- public SettableFuture<ConfigTaskResult> showCluster() {
+ public SettableFuture<ConfigTaskResult> showCluster(ShowClusterStatement showClusterStatement) {
SettableFuture<ConfigTaskResult> future = SettableFuture.create();
future.setException(
new IoTDBException(
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterDetailsTask.java
similarity index 56%
copy from server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterTask.java
copy to server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterDetailsTask.java
index 50b6d3fa85..daff96ca94 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterDetailsTask.java
@@ -42,36 +42,68 @@ import java.util.stream.Collectors;
import static org.apache.iotdb.commons.conf.IoTDBConstant.NODE_TYPE_CONFIG_NODE;
import static org.apache.iotdb.commons.conf.IoTDBConstant.NODE_TYPE_DATA_NODE;
-public class ShowClusterTask implements IConfigTask {
+public class ShowClusterDetailsTask implements IConfigTask {
- public ShowClusterTask(ShowClusterStatement showClusterStatement) {}
+ private final ShowClusterStatement showClusterStatement;
- @Override
- public ListenableFuture<ConfigTaskResult> execute(IConfigTaskExecutor configTaskExecutor)
- throws InterruptedException {
- return configTaskExecutor.showCluster();
+ public ShowClusterDetailsTask(ShowClusterStatement showClusterStatement) {
+ this.showClusterStatement = showClusterStatement;
}
- private static void buildTsBlock(
+ private static void buildConfigNodesTsBlock(
TsBlockBuilder builder,
int nodeId,
String nodeType,
String nodeStatus,
- String hostAddress,
- int port) {
+ String internalAddress,
+ int internalPort,
+ int configConsensusPort) {
builder.getTimeColumnBuilder().writeLong(0L);
builder.getColumnBuilder(0).writeInt(nodeId);
builder.getColumnBuilder(1).writeBinary(new Binary(nodeType));
builder.getColumnBuilder(2).writeBinary(new Binary(nodeStatus));
- builder.getColumnBuilder(3).writeBinary(new Binary(hostAddress));
- builder.getColumnBuilder(4).writeInt(port);
+ builder.getColumnBuilder(3).writeBinary(new Binary(internalAddress));
+ builder.getColumnBuilder(4).writeInt(internalPort);
+ builder.getColumnBuilder(5).writeBinary(new Binary(Integer.toString(configConsensusPort)));
+ builder.getColumnBuilder(6).writeBinary(new Binary(""));
+ builder.getColumnBuilder(7).writeBinary(new Binary(""));
+ builder.getColumnBuilder(8).writeBinary(new Binary(""));
+ builder.getColumnBuilder(9).writeBinary(new Binary(""));
+ builder.getColumnBuilder(10).writeBinary(new Binary(""));
+ builder.declarePosition();
+ }
+
+ private static void buildDataNodesTsBlock(
+ TsBlockBuilder builder,
+ int nodeId,
+ String nodeType,
+ String nodeStatus,
+ String internalAddress,
+ int internalPort,
+ String rpcAddress,
+ int rpcPort,
+ int dataConsensusPort,
+ int schemaConsensusPort,
+ int mppPort) {
+ builder.getTimeColumnBuilder().writeLong(0L);
+ builder.getColumnBuilder(0).writeInt(nodeId);
+ builder.getColumnBuilder(1).writeBinary(new Binary(nodeType));
+ builder.getColumnBuilder(2).writeBinary(new Binary(nodeStatus));
+ builder.getColumnBuilder(3).writeBinary(new Binary(internalAddress));
+ builder.getColumnBuilder(4).writeInt(internalPort);
+ builder.getColumnBuilder(5).writeBinary(new Binary(""));
+ builder.getColumnBuilder(6).writeBinary(new Binary(rpcAddress));
+ builder.getColumnBuilder(7).writeBinary(new Binary(Integer.toString(rpcPort)));
+ builder.getColumnBuilder(8).writeBinary(new Binary(Integer.toString(dataConsensusPort)));
+ builder.getColumnBuilder(9).writeBinary(new Binary(Integer.toString(schemaConsensusPort)));
+ builder.getColumnBuilder(10).writeBinary(new Binary(Integer.toString(mppPort)));
builder.declarePosition();
}
public static void buildTSBlock(
TShowClusterResp clusterNodeInfos, SettableFuture<ConfigTaskResult> future) {
List<TSDataType> outputDataTypes =
- ColumnHeaderConstant.showClusterColumnHeaders.stream()
+ ColumnHeaderConstant.showClusterDetailsColumnHeaders.stream()
.map(ColumnHeader::getColumnType)
.collect(Collectors.toList());
TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
@@ -80,27 +112,39 @@ public class ShowClusterTask implements IConfigTask {
.getConfigNodeList()
.forEach(
e ->
- buildTsBlock(
+ buildConfigNodesTsBlock(
builder,
e.getConfigNodeId(),
NODE_TYPE_CONFIG_NODE,
clusterNodeInfos.getNodeStatus().get(e.getConfigNodeId()),
e.getInternalEndPoint().getIp(),
- e.getInternalEndPoint().getPort()));
+ e.getInternalEndPoint().getPort(),
+ e.getConsensusEndPoint().getPort()));
clusterNodeInfos
.getDataNodeList()
.forEach(
e ->
- buildTsBlock(
+ buildDataNodesTsBlock(
builder,
e.getDataNodeId(),
NODE_TYPE_DATA_NODE,
clusterNodeInfos.getNodeStatus().get(e.getDataNodeId()),
e.getInternalEndPoint().getIp(),
- e.getInternalEndPoint().getPort()));
+ e.getInternalEndPoint().getPort(),
+ e.getClientRpcEndPoint().getIp(),
+ e.getClientRpcEndPoint().getPort(),
+ e.getDataRegionConsensusEndPoint().getPort(),
+ e.getSchemaRegionConsensusEndPoint().getPort(),
+ e.getMPPDataExchangeEndPoint().getPort()));
- DatasetHeader datasetHeader = DatasetHeaderFactory.getShowClusterHeader();
+ DatasetHeader datasetHeader = DatasetHeaderFactory.getShowClusterDetailsHeader();
future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS, builder.build(), datasetHeader));
}
+
+ @Override
+ public ListenableFuture<ConfigTaskResult> execute(IConfigTaskExecutor configTaskExecutor)
+ throws InterruptedException {
+ return configTaskExecutor.showCluster(showClusterStatement);
+ }
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterTask.java
index 50b6d3fa85..2b5817523e 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterTask.java
@@ -44,12 +44,16 @@ import static org.apache.iotdb.commons.conf.IoTDBConstant.NODE_TYPE_DATA_NODE;
public class ShowClusterTask implements IConfigTask {
- public ShowClusterTask(ShowClusterStatement showClusterStatement) {}
+ private final ShowClusterStatement showClusterStatement;
+
+ public ShowClusterTask(ShowClusterStatement showClusterStatement) {
+ this.showClusterStatement = showClusterStatement;
+ }
@Override
public ListenableFuture<ConfigTaskResult> execute(IConfigTaskExecutor configTaskExecutor)
throws InterruptedException {
- return configTaskExecutor.showCluster();
+ return configTaskExecutor.showCluster(showClusterStatement);
}
private static void buildTsBlock(
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
index a10c09e2c4..033aaf3dd5 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
@@ -2242,6 +2242,13 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
return new ShowClusterStatement();
}
+ @Override
+ public Statement visitShowClusterDetails(IoTDBSqlParser.ShowClusterDetailsContext ctx) {
+ ShowClusterStatement showClusterStatement = new ShowClusterStatement();
+ showClusterStatement.setDetails(true);
+ return showClusterStatement;
+ }
+
@Override
public Statement visitDeleteStorageGroup(IoTDBSqlParser.DeleteStorageGroupContext ctx) {
DeleteStorageGroupStatement deleteStorageGroupStatement = new DeleteStorageGroupStatement();
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/ShowClusterStatement.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/ShowClusterStatement.java
index 0f356b7f03..be001b932f 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/ShowClusterStatement.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/ShowClusterStatement.java
@@ -24,6 +24,8 @@ import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
public class ShowClusterStatement extends ShowStatement implements IConfigStatement {
+ private boolean isDetails = false;
+
@Override
public QueryType getQueryType() {
return QueryType.READ;
@@ -33,4 +35,12 @@ public class ShowClusterStatement extends ShowStatement implements IConfigStatem
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitShowCluster(this, context);
}
+
+ public boolean isDetails() {
+ return isDetails;
+ }
+
+ public void setDetails(boolean details) {
+ isDetails = details;
+ }
}