Skip to content

Commit 38c1d59

Browse files
authored
Feat/updated cli (apache#13194)
1 parent 8f54b80 commit 38c1d59

File tree

14 files changed

+568
-627
lines changed

14 files changed

+568
-627
lines changed

Diff for: .idea/icon.png

6.58 KB
Loading

Diff for: iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNode.java

+66-5
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,18 @@
2222
import org.apache.iotdb.common.rpc.thrift.TConfigNodeLocation;
2323
import org.apache.iotdb.common.rpc.thrift.TEndPoint;
2424
import org.apache.iotdb.common.rpc.thrift.TSStatus;
25+
import org.apache.iotdb.commons.ServerCommandLine;
2526
import org.apache.iotdb.commons.client.ClientManagerMetrics;
2627
import org.apache.iotdb.commons.concurrent.ThreadModule;
2728
import org.apache.iotdb.commons.concurrent.ThreadName;
2829
import org.apache.iotdb.commons.concurrent.ThreadPoolMetrics;
2930
import org.apache.iotdb.commons.conf.CommonConfig;
3031
import org.apache.iotdb.commons.conf.CommonDescriptor;
3132
import org.apache.iotdb.commons.conf.IoTDBConstant;
33+
import org.apache.iotdb.commons.exception.BadNodeUrlException;
34+
import org.apache.iotdb.commons.exception.ConfigurationException;
3235
import org.apache.iotdb.commons.exception.IllegalPathException;
36+
import org.apache.iotdb.commons.exception.IoTDBException;
3337
import org.apache.iotdb.commons.exception.StartupException;
3438
import org.apache.iotdb.commons.service.JMXService;
3539
import org.apache.iotdb.commons.service.RegisterManager;
@@ -43,6 +47,8 @@
4347
import org.apache.iotdb.confignode.conf.ConfigNodeConfig;
4448
import org.apache.iotdb.confignode.conf.ConfigNodeConstant;
4549
import org.apache.iotdb.confignode.conf.ConfigNodeDescriptor;
50+
import org.apache.iotdb.confignode.conf.ConfigNodeRemoveCheck;
51+
import org.apache.iotdb.confignode.conf.ConfigNodeStartupCheck;
4652
import org.apache.iotdb.confignode.conf.SystemPropertiesUtils;
4753
import org.apache.iotdb.confignode.manager.ConfigManager;
4854
import org.apache.iotdb.confignode.manager.consensus.ConsensusManager;
@@ -74,7 +80,7 @@
7480
import java.util.List;
7581
import java.util.concurrent.TimeUnit;
7682

77-
public class ConfigNode implements ConfigNodeMBean {
83+
public class ConfigNode extends ServerCommandLine implements ConfigNodeMBean {
7884

7985
private static final Logger LOGGER = LoggerFactory.getLogger(ConfigNode.class);
8086

@@ -101,11 +107,13 @@ public class ConfigNode implements ConfigNodeMBean {
101107

102108
protected ConfigManager configManager;
103109

104-
protected ConfigNode() {
110+
public ConfigNode() {
111+
super("ConfigNode");
105112
// We do not init anything here, so that we can re-initialize the instance in IT.
113+
ConfigNodeHolder.instance = this;
106114
}
107115

108-
public static void main(String[] args) {
116+
public static void main(String[] args) throws Exception {
109117
LOGGER.info(
110118
"{} environment variables: {}",
111119
ConfigNodeConstant.GLOBAL_NAME,
@@ -114,7 +122,60 @@ public static void main(String[] args) {
114122
"{} default charset is: {}",
115123
ConfigNodeConstant.GLOBAL_NAME,
116124
Charset.defaultCharset().displayName());
117-
new ConfigNodeCommandLine().doMain(args);
125+
ConfigNode configNode = new ConfigNode();
126+
int returnCode = configNode.run(args);
127+
if (returnCode != 0) {
128+
System.exit(returnCode);
129+
}
130+
}
131+
132+
@Override
133+
protected void start() throws IoTDBException {
134+
try {
135+
// Do ConfigNode startup checks
136+
LOGGER.info("Starting IoTDB {}", IoTDBConstant.VERSION_WITH_BUILD);
137+
ConfigNodeStartupCheck checks = new ConfigNodeStartupCheck(IoTDBConstant.CN_ROLE);
138+
checks.startUpCheck();
139+
} catch (StartupException | ConfigurationException | IOException e) {
140+
LOGGER.error("Meet error when doing start checking", e);
141+
throw new IoTDBException("Error starting", -1);
142+
}
143+
active();
144+
}
145+
146+
@Override
147+
protected void remove(Long nodeId) throws IoTDBException {
148+
// If the nodeId was null, this is a shorthand for removing the current dataNode.
149+
// In this case we need to find our nodeId.
150+
if (nodeId == null) {
151+
nodeId = (long) CONF.getConfigNodeId();
152+
}
153+
154+
try {
155+
LOGGER.info("Starting to remove ConfigNode with node-id {}", nodeId);
156+
157+
try {
158+
TConfigNodeLocation removeConfigNodeLocation =
159+
ConfigNodeRemoveCheck.getInstance().removeCheck(Long.toString(nodeId));
160+
if (removeConfigNodeLocation == null) {
161+
LOGGER.error(
162+
"The ConfigNode to be removed is not in the cluster, or the input format is incorrect.");
163+
return;
164+
}
165+
166+
ConfigNodeRemoveCheck.getInstance().removeConfigNode(removeConfigNodeLocation);
167+
} catch (BadNodeUrlException e) {
168+
LOGGER.warn("No ConfigNodes need to be removed.", e);
169+
return;
170+
}
171+
172+
LOGGER.info(
173+
"ConfigNode: {} is removed. If the confignode data directory is no longer needed, you can delete it manually.",
174+
nodeId);
175+
} catch (IOException e) {
176+
LOGGER.error("Meet error when doing remove ConfigNode", e);
177+
throw new IoTDBException("Error removing", -1);
178+
}
118179
}
119180

120181
public void active() {
@@ -465,7 +526,7 @@ public void setConfigManager(ConfigManager configManager) {
465526

466527
private static class ConfigNodeHolder {
467528

468-
private static ConfigNode instance = new ConfigNode();
529+
private static ConfigNode instance;
469530

470531
private ConfigNodeHolder() {
471532
// Empty constructor

Diff for: iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNodeCommandLine.java

-128
This file was deleted.

Diff for: iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateCQProcedureTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public void serializeDeserializeTest() {
6767
Mockito.when(cqManager.getExecutor()).thenReturn(executor);
6868
ConfigManager configManager = Mockito.mock(ConfigManager.class);
6969
Mockito.when(configManager.getCQManager()).thenReturn(cqManager);
70-
ConfigNode configNode = ConfigNode.getInstance();
70+
ConfigNode configNode = new ConfigNode();
7171
configNode.setConfigManager(configManager);
7272

7373
try {

Diff for: iotdb-core/datanode/src/assembly/resources/sbin/remove-datanode.bat

-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@ IF "%~1"=="--help" (
2525
echo Usage:
2626
echo Remove the DataNode with datanode_id
2727
echo ./sbin/remove-datanode.bat [datanode_id]
28-
echo Remove the DataNode with address:port
29-
echo ./sbin/remove-datanode.bat [dn_rpc_address:dn_rpc_port]
3028
EXIT /B 0
3129
)
3230

Diff for: iotdb-core/datanode/src/assembly/resources/sbin/remove-datanode.sh

-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ if [ "$#" -eq 1 ] && [ "$1" == "--help" ]; then
2424
echo "Usage:"
2525
echo "Remove the DataNode with datanode_id"
2626
echo "./sbin/remove-datanode.sh [datanode_id]"
27-
echo "Remove the DataNode with address:port"
28-
echo "./sbin/remove-datanode.sh [dn_rpc_address:dn_rpc_port]"
2927
exit 0
3028
fi
3129

0 commit comments

Comments
 (0)