This is an automated email from the ASF dual-hosted git repository.
xingtanzjr 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 1c1b0596e0 [IOTDB-4094] Perfect the process of remove-confignode
(#7135)
1c1b0596e0 is described below
commit 1c1b0596e09bd312d682538bbf48190f98460b74
Author: Beyyes <[email protected]>
AuthorDate: Tue Aug 30 16:11:08 2022 +0800
[IOTDB-4094] Perfect the process of remove-confignode (#7135)
---
.../async/datanode/AsyncDataNodeClientPool.java | 6 +--
.../sync/confignode/SyncConfigNodeClientPool.java | 12 +++--
.../sync/datanode/SyncDataNodeClientPool.java | 2 +-
.../confignode/conf/ConfigNodeRemoveCheck.java | 10 ++---
.../confignode/conf/ConfigNodeStartupCheck.java | 38 ++++++++--------
.../iotdb/confignode/service/ConfigNode.java | 51 ++++++++++++----------
.../confignode/service/ConfigNodeCommandLine.java | 6 ++-
.../db/mpp/common/header/ColumnHeaderConstant.java | 3 +-
8 files changed, 68 insertions(+), 60 deletions(-)
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/client/async/datanode/AsyncDataNodeClientPool.java
b/confignode/src/main/java/org/apache/iotdb/confignode/client/async/datanode/AsyncDataNodeClientPool.java
index ea3f58b958..557d898ca3 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/client/async/datanode/AsyncDataNodeClientPool.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/client/async/datanode/AsyncDataNodeClientPool.java
@@ -65,7 +65,7 @@ public class AsyncDataNodeClientPool {
private final IClientManager<TEndPoint, AsyncDataNodeInternalServiceClient>
clientManager;
- private final int retryNum = 6;
+ private static final int MAX_RETRY_NUM = 6;
private AsyncDataNodeClientPool() {
clientManager =
@@ -91,7 +91,7 @@ public class AsyncDataNodeClientPool {
if (dataNodeLocationMap.isEmpty()) {
return;
}
- for (int retry = 0; retry < retryNum; retry++) {
+ for (int retry = 0; retry < MAX_RETRY_NUM; retry++) {
CountDownLatch countDownLatch = new
CountDownLatch(dataNodeLocationMap.size());
for (TDataNodeLocation targetDataNode : dataNodeLocationMap.values()) {
AbstractRetryHandler handler;
@@ -269,7 +269,7 @@ public class AsyncDataNodeClientPool {
if (dataNodeLocationMap.isEmpty()) {
return new HashMap<>();
}
- for (int retry = 0; retry < retryNum; retry++) {
+ for (int retry = 0; retry < MAX_RETRY_NUM; retry++) {
index = 0;
CountDownLatch countDownLatch = new
CountDownLatch(dataNodeLocationMap.size());
for (Map.Entry<String, List<TRegionReplicaSet>> entry :
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/client/sync/confignode/SyncConfigNodeClientPool.java
b/confignode/src/main/java/org/apache/iotdb/confignode/client/sync/confignode/SyncConfigNodeClientPool.java
index a596b7e9f0..de74066c1b 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/client/sync/confignode/SyncConfigNodeClientPool.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/client/sync/confignode/SyncConfigNodeClientPool.java
@@ -42,7 +42,7 @@ public class SyncConfigNodeClientPool {
private static final Logger LOGGER =
LoggerFactory.getLogger(SyncConfigNodeClientPool.class);
- private static final int retryNum = 6;
+ private static final int MAX_RETRY_NUM = 6;
private final IClientManager<TEndPoint, SyncConfigNodeIServiceClient>
clientManager;
@@ -66,8 +66,9 @@ public class SyncConfigNodeClientPool {
public Object sendSyncRequestToConfigNodeWithRetry(
TEndPoint endPoint, Object req, ConfigNodeRequestType requestType) {
+
Throwable lastException = null;
- for (int retry = 0; retry < retryNum; retry++) {
+ for (int retry = 0; retry < MAX_RETRY_NUM; retry++) {
try (SyncConfigNodeIServiceClient client =
clientManager.borrowClient(endPoint)) {
switch (requestType) {
case REGISTER_CONFIG_NODE:
@@ -101,11 +102,8 @@ public class SyncConfigNodeClientPool {
}
}
LOGGER.error("{} failed on ConfigNode {}", requestType, endPoint,
lastException);
- switch (requestType) {
- default:
- return RpcUtils.getStatus(
- TSStatusCode.ALL_RETRY_FAILED, "All retry failed due to" +
lastException.getMessage());
- }
+ return RpcUtils.getStatus(
+ TSStatusCode.ALL_RETRY_FAILED, "All retry failed due to: " +
lastException.getMessage());
}
/**
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/client/sync/datanode/SyncDataNodeClientPool.java
b/confignode/src/main/java/org/apache/iotdb/confignode/client/sync/datanode/SyncDataNodeClientPool.java
index 690acb8e90..0c85ffda88 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/client/sync/datanode/SyncDataNodeClientPool.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/client/sync/datanode/SyncDataNodeClientPool.java
@@ -110,7 +110,7 @@ public class SyncDataNodeClientPool {
}
LOGGER.error("{} failed on DataNode {}", requestType, endPoint,
lastException);
return new TSStatus(TSStatusCode.ALL_RETRY_FAILED.getStatusCode())
- .setMessage("All retry failed due to" + lastException.getMessage());
+ .setMessage("All retry failed due to: " + lastException.getMessage());
}
public void deleteRegions(Set<TRegionReplicaSet> deletedRegionSet) {
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeRemoveCheck.java
b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeRemoveCheck.java
index 894e712374..d48eaaf06e 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeRemoveCheck.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeRemoveCheck.java
@@ -39,14 +39,14 @@ import java.util.Properties;
public class ConfigNodeRemoveCheck {
private static final Logger LOGGER =
LoggerFactory.getLogger(ConfigNodeStartupCheck.class);
- private static final ConfigNodeConfig conf =
ConfigNodeDescriptor.getInstance().getConf();
+ private static final ConfigNodeConfig CONF =
ConfigNodeDescriptor.getInstance().getConf();
private final File systemPropertiesFile;
private final Properties systemProperties;
public ConfigNodeRemoveCheck() {
systemPropertiesFile =
- new File(conf.getSystemDir() + File.separator +
ConfigNodeConstant.SYSTEM_FILE_NAME);
+ new File(CONF.getSystemDir() + File.separator +
ConfigNodeConstant.SYSTEM_FILE_NAME);
systemProperties = new Properties();
}
@@ -62,7 +62,7 @@ public class ConfigNodeRemoveCheck {
getConfigNodeList().stream()
.filter(e -> e.getInternalEndPoint().equals(endPoint))
.findFirst()
- .get();
+ .orElse(null);
} catch (IOException | BadNodeUrlException e) {
LOGGER.error("Load system properties file failed.", e);
}
@@ -70,7 +70,7 @@ public class ConfigNodeRemoveCheck {
return nodeLocation;
}
- public void removeConfigNode(TConfigNodeLocation nodeLocation)
+ public void removeConfigNode(TConfigNodeLocation removedNode)
throws BadNodeUrlException, IOException {
TSStatus status = new TSStatus();
for (TConfigNodeLocation configNodeLocation : getConfigNodeList()) {
@@ -79,7 +79,7 @@ public class ConfigNodeRemoveCheck {
SyncConfigNodeClientPool.getInstance()
.sendSyncRequestToConfigNodeWithRetry(
configNodeLocation.getInternalEndPoint(),
- nodeLocation,
+ removedNode,
ConfigNodeRequestType.REMOVE_CONFIG_NODE);
if (status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
break;
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeStartupCheck.java
b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeStartupCheck.java
index 73c1f5ab20..4afab64920 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeStartupCheck.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeStartupCheck.java
@@ -38,7 +38,7 @@ public class ConfigNodeStartupCheck {
private static final Logger LOGGER =
LoggerFactory.getLogger(ConfigNodeStartupCheck.class);
- private static final ConfigNodeConfig conf =
ConfigNodeDescriptor.getInstance().getConf();
+ private static final ConfigNodeConfig CONF =
ConfigNodeDescriptor.getInstance().getConf();
public void startUpCheck() throws StartupException, IOException,
ConfigurationException {
checkGlobalConfig();
@@ -52,60 +52,60 @@ public class ConfigNodeStartupCheck {
private void checkGlobalConfig() throws ConfigurationException {
// When the ConfigNode consensus protocol is set to StandAlone,
// the target_config_nodes needs to point to itself
- if
(conf.getConfigNodeConsensusProtocolClass().equals(ConsensusFactory.StandAloneConsensus)
- &&
(!conf.getInternalAddress().equals(conf.getTargetConfigNode().getIp())
- || conf.getInternalPort() !=
conf.getTargetConfigNode().getPort())) {
+ if
(CONF.getConfigNodeConsensusProtocolClass().equals(ConsensusFactory.StandAloneConsensus)
+ &&
(!CONF.getInternalAddress().equals(CONF.getTargetConfigNode().getIp())
+ || CONF.getInternalPort() !=
CONF.getTargetConfigNode().getPort())) {
throw new ConfigurationException(
IoTDBConstant.TARGET_CONFIG_NODES,
- conf.getTargetConfigNode().getIp() + ":" +
conf.getTargetConfigNode().getPort(),
- conf.getInternalAddress() + ":" + conf.getInternalPort());
+ CONF.getTargetConfigNode().getIp() + ":" +
CONF.getTargetConfigNode().getPort(),
+ CONF.getInternalAddress() + ":" + CONF.getInternalPort());
}
// When the data region consensus protocol is set to StandAlone,
// the data replication factor must be 1
- if
(conf.getDataRegionConsensusProtocolClass().equals(ConsensusFactory.StandAloneConsensus)
- && conf.getDataReplicationFactor() != 1) {
+ if
(CONF.getDataRegionConsensusProtocolClass().equals(ConsensusFactory.StandAloneConsensus)
+ && CONF.getDataReplicationFactor() != 1) {
throw new ConfigurationException(
"data_replication_factor",
- String.valueOf(conf.getDataReplicationFactor()),
+ String.valueOf(CONF.getDataReplicationFactor()),
String.valueOf(1));
}
// When the schema region consensus protocol is set to StandAlone,
// the schema replication factor must be 1
- if
(conf.getSchemaRegionConsensusProtocolClass().equals(ConsensusFactory.StandAloneConsensus)
- && conf.getSchemaReplicationFactor() != 1) {
+ if
(CONF.getSchemaRegionConsensusProtocolClass().equals(ConsensusFactory.StandAloneConsensus)
+ && CONF.getSchemaReplicationFactor() != 1) {
throw new ConfigurationException(
"schema_replication_factor",
- String.valueOf(conf.getSchemaReplicationFactor()),
+ String.valueOf(CONF.getSchemaReplicationFactor()),
String.valueOf(1));
}
// When the schema region consensus protocol is set to
MultiLeaderConsensus,
// we should report an error
- if (conf.getSchemaRegionConsensusProtocolClass()
+ if (CONF.getSchemaRegionConsensusProtocolClass()
.equals(ConsensusFactory.MultiLeaderConsensus)) {
throw new ConfigurationException(
"schema_region_consensus_protocol_class",
- String.valueOf(conf.getSchemaRegionConsensusProtocolClass()),
+ String.valueOf(CONF.getSchemaRegionConsensusProtocolClass()),
String.format(
"%s or %s", ConsensusFactory.StandAloneConsensus,
ConsensusFactory.RatisConsensus));
}
- if (!conf.getRoutingPolicy().equals(RouteBalancer.LEADER_POLICY)
- && !conf.getRoutingPolicy().equals(RouteBalancer.GREEDY_POLICY)) {
+ if (!CONF.getRoutingPolicy().equals(RouteBalancer.LEADER_POLICY)
+ && !CONF.getRoutingPolicy().equals(RouteBalancer.GREEDY_POLICY)) {
throw new ConfigurationException(
- "routing_policy", conf.getRoutingPolicy(), "leader or greedy");
+ "routing_policy", CONF.getRoutingPolicy(), "leader or greedy");
}
}
private void createDirsIfNecessary() throws IOException {
// If systemDir does not exist, create systemDir
- File systemDir = new File(conf.getSystemDir());
+ File systemDir = new File(CONF.getSystemDir());
createDirIfEmpty(systemDir);
// If consensusDir does not exist, create consensusDir
- File consensusDir = new File(conf.getConsensusDir());
+ File consensusDir = new File(CONF.getConsensusDir());
createDirIfEmpty(consensusDir);
}
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNode.java
b/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNode.java
index fd3ad986f8..fafa4f3e68 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNode.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNode.java
@@ -51,14 +51,14 @@ public class ConfigNode implements ConfigNodeMBean {
private static final Logger LOGGER =
LoggerFactory.getLogger(ConfigNode.class);
- private static final ConfigNodeConfig conf =
ConfigNodeDescriptor.getInstance().getConf();
+ private static final ConfigNodeConfig CONF =
ConfigNodeDescriptor.getInstance().getConf();
+
+ private static final int SCHEDULE_WAITING_RETRY_NUM = 20;
private final String mbeanName =
String.format(
"%s:%s=%s",
ConfigNodeConstant.CONFIGNODE_PACKAGE, ConfigNodeConstant.JMX_TYPE,
"ConfigNode");
-
- private static final int scheduleWaitingRetryNum = 20;
private final RegisterManager registerManager = new RegisterManager();
private ConfigManager configManager;
@@ -97,8 +97,8 @@ public class ConfigNode implements ConfigNodeMBean {
.applyConfigNode(
new TConfigNodeLocation(
0,
- new TEndPoint(conf.getInternalAddress(),
conf.getInternalPort()),
- new TEndPoint(conf.getInternalAddress(),
conf.getConsensusPort())));
+ new TEndPoint(CONF.getInternalAddress(),
CONF.getInternalPort()),
+ new TEndPoint(CONF.getInternalAddress(),
CONF.getConsensusPort())));
// We always set up Seed-ConfigNode's RPC service lastly to ensure that
// the external service is not provided until Seed-ConfigNode is fully
initialized
setUpRPCService();
@@ -120,7 +120,7 @@ public class ConfigNode implements ConfigNodeMBean {
ConfigNodeConstant.GLOBAL_NAME);
boolean isJoinedCluster = false;
- for (int retry = 0; retry < scheduleWaitingRetryNum; retry++) {
+ for (int retry = 0; retry < SCHEDULE_WAITING_RETRY_NUM; retry++) {
if
(configManager.getConsensusManager().getConsensusImpl().getAllConsensusGroupIds().size()
> 0) {
isJoinedCluster = true;
@@ -173,9 +173,9 @@ public class ConfigNode implements ConfigNodeMBean {
// Setup UDFService
registerManager.register(
- UDFExecutableManager.setupAndGetInstance(conf.getTemporaryLibDir(),
conf.getUdfLibDir()));
-
registerManager.register(UDFClassLoaderManager.setupAndGetInstance(conf.getUdfLibDir()));
-
registerManager.register(UDFRegistrationService.setupAndGetInstance(conf.getSystemUdfDir()));
+ UDFExecutableManager.setupAndGetInstance(CONF.getTemporaryLibDir(),
CONF.getUdfLibDir()));
+
registerManager.register(UDFClassLoaderManager.setupAndGetInstance(CONF.getUdfLibDir()));
+
registerManager.register(UDFRegistrationService.setupAndGetInstance(CONF.getSystemUdfDir()));
// Setup MetricService
registerManager.register(MetricService.getInstance());
@@ -190,21 +190,26 @@ public class ConfigNode implements ConfigNodeMBean {
new TConfigNodeRegisterReq(
new TConfigNodeLocation(
-1,
- new TEndPoint(conf.getInternalAddress(),
conf.getInternalPort()),
- new TEndPoint(conf.getInternalAddress(),
conf.getConsensusPort())),
- conf.getDataRegionConsensusProtocolClass(),
- conf.getSchemaRegionConsensusProtocolClass(),
- conf.getSeriesPartitionSlotNum(),
- conf.getSeriesPartitionExecutorClass(),
+ new TEndPoint(CONF.getInternalAddress(),
CONF.getInternalPort()),
+ new TEndPoint(CONF.getInternalAddress(),
CONF.getConsensusPort())),
+ CONF.getDataRegionConsensusProtocolClass(),
+ CONF.getSchemaRegionConsensusProtocolClass(),
+ CONF.getSeriesPartitionSlotNum(),
+ CONF.getSeriesPartitionExecutorClass(),
CommonDescriptor.getInstance().getConfig().getDefaultTTL(),
- conf.getTimePartitionInterval(),
- conf.getSchemaReplicationFactor(),
- conf.getSchemaRegionPerDataNode(),
- conf.getDataReplicationFactor(),
- conf.getDataRegionPerProcessor(),
- conf.getReadConsistencyLevel());
-
- TEndPoint targetConfigNode = conf.getTargetConfigNode();
+ CONF.getTimePartitionInterval(),
+ CONF.getSchemaReplicationFactor(),
+ CONF.getSchemaRegionPerDataNode(),
+ CONF.getDataReplicationFactor(),
+ CONF.getDataRegionPerProcessor(),
+ CONF.getReadConsistencyLevel());
+
+ TEndPoint targetConfigNode = CONF.getTargetConfigNode();
+ if (targetConfigNode == null) {
+ LOGGER.error("The targetConfigNode setting in conf is empty");
+ throw new StartupException("The targetConfigNode setting in conf is
empty");
+ }
+
for (int retry = 0; retry < 3; retry++) {
TSStatus status =
(TSStatus)
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNodeCommandLine.java
b/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNodeCommandLine.java
index ae36f91a92..3b71295da9 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNodeCommandLine.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNodeCommandLine.java
@@ -87,6 +87,9 @@ public class ConfigNodeCommandLine extends ServerCommandLine {
LOGGER.error("Meet error when doing remove", e);
return -1;
}
+ } else {
+ LOGGER.error("Unsupported startup mode: {}", mode);
+ return -1;
}
return 0;
@@ -104,7 +107,8 @@ public class ConfigNodeCommandLine extends
ServerCommandLine {
TConfigNodeLocation removeConfigNodeLocation =
ConfigNodeRemoveCheck.getInstance().removeCheck(endPoint);
if (removeConfigNodeLocation == null) {
- LOGGER.error("The ConfigNode not in the Cluster.");
+ LOGGER.error(
+ "The ConfigNode to be removed is not in the cluster, please check
the ip:port input.");
return;
}
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 2200a3ecc1..9a2d76f068 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
@@ -76,6 +76,7 @@ public class ColumnHeaderConstant {
// column names for show region statement
public static final String COLUMN_REGION_ID = "RegionId";
public static final String COLUMN_TYPE = "Type";
+ public static final String COLUMN_SHOW_REGION_STORAGE_GROUP = "Storage
Group";
public static final String COLUMN_DATANODE_ID = "DataNodeId";
public static final String COLUMN_SERIES_SLOTS = "SeriesSlots";
public static final String COLUMN_TIME_SLOTS = "TimeSlots";
@@ -184,7 +185,7 @@ public class ColumnHeaderConstant {
new ColumnHeader(COLUMN_REGION_ID, TSDataType.INT32),
new ColumnHeader(COLUMN_TYPE, TSDataType.TEXT),
new ColumnHeader(COLUMN_STATUS, TSDataType.TEXT),
- new ColumnHeader(COLUMN_STORAGE_GROUP, TSDataType.TEXT),
+ new ColumnHeader(COLUMN_SHOW_REGION_STORAGE_GROUP, TSDataType.TEXT),
new ColumnHeader(COLUMN_SERIES_SLOTS, TSDataType.INT64),
new ColumnHeader(COLUMN_TIME_SLOTS, TSDataType.INT64),
new ColumnHeader(COLUMN_DATANODE_ID, TSDataType.INT32),