This is an automated email from the ASF dual-hosted git repository.

caogaofei pushed a commit to branch beyyes/remove_datanode_and_kill_process
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to 
refs/heads/beyyes/remove_datanode_and_kill_process by this push:
     new 9ff73421b1 add system.exit(0) for the stop method of datanode
9ff73421b1 is described below

commit 9ff73421b1b239158ec84204069be68b69b40005
Author: Beyyes <[email protected]>
AuthorDate: Wed Aug 31 11:44:16 2022 +0800

    add system.exit(0) for the stop method of datanode
---
 .../java/org/apache/iotdb/db/service/DataNode.java     | 18 ++++++++++++++++--
 .../iotdb/db/service/DataNodeServerCommandLine.java    |  2 +-
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/service/DataNode.java 
b/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
index 2d794003b2..16e0287367 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
@@ -74,6 +74,7 @@ import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 public class DataNode implements DataNodeMBean {
   private static final Logger logger = LoggerFactory.getLogger(DataNode.class);
@@ -119,7 +120,7 @@ public class DataNode implements DataNodeMBean {
     
thisNode.setPort(IoTDBDescriptor.getInstance().getConfig().getInternalPort());
   }
 
-  protected void doAddNode(String[] args) {
+  protected void doAddNode() {
     try {
       // prepare cluster IoTDB-DataNode
       prepareDataNode();
@@ -388,7 +389,6 @@ public class DataNode implements DataNodeMBean {
   public void stop() {
     deactivate();
 
-    // QSW
     try {
       MetricService.getInstance().stop();
       SchemaRegionConsensusImpl.getInstance().stop();
@@ -396,6 +396,20 @@ public class DataNode implements DataNodeMBean {
     } catch (Exception e) {
       logger.error("stop data node error", e);
     }
+
+    // kill the datanode process 5 seconds later
+    // if remove this step, datanode process will still alive
+    new Thread(
+            () -> {
+              try {
+                TimeUnit.SECONDS.sleep(5);
+              } catch (InterruptedException e) {
+                logger.error("Meets InterruptedException in stop method of 
DataNode");
+              } finally {
+                System.exit(0);
+              }
+            })
+        .start();
   }
 
   private void initServiceProvider() throws QueryProcessException {
diff --git 
a/server/src/main/java/org/apache/iotdb/db/service/DataNodeServerCommandLine.java
 
b/server/src/main/java/org/apache/iotdb/db/service/DataNodeServerCommandLine.java
index 038f0e2612..15d902041d 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/service/DataNodeServerCommandLine.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/service/DataNodeServerCommandLine.java
@@ -92,7 +92,7 @@ public class DataNodeServerCommandLine extends 
ServerCommandLine {
 
     // we start IoTDB kernel first. then we start the cluster module.
     if (MODE_START.equals(mode)) {
-      dataNode.doAddNode(args);
+      dataNode.doAddNode();
     } else if (MODE_REMOVE.equals(mode)) {
       doRemoveNode(args);
     } else {

Reply via email to