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 9c244b7f4f [IOTDB-3747] Fix log bug (#6612)
9c244b7f4f is described below

commit 9c244b7f4f103d391385381fc8bec9499d796918
Author: YongzaoDan <[email protected]>
AuthorDate: Thu Jul 7 19:57:01 2022 +0800

    [IOTDB-3747] Fix log bug (#6612)
---
 .../response/DataNodeConfigurationResp.java        |  6 +++-
 .../iotdb/confignode/manager/NodeManager.java      | 38 ++++++++++++----------
 .../iotdb/confignode/persistence/NodeInfo.java     | 11 +++++--
 .../thrift/ConfigNodeRPCServiceProcessor.java      | 10 +++---
 4 files changed, 38 insertions(+), 27 deletions(-)

diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/DataNodeConfigurationResp.java
 
b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/DataNodeConfigurationResp.java
index c4672cf4b0..6af40f276f 100644
--- 
a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/DataNodeConfigurationResp.java
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/DataNodeConfigurationResp.java
@@ -59,13 +59,17 @@ public class DataNodeConfigurationResp implements DataSet {
     this.globalConfig = globalConfig;
   }
 
-  public void convertToRpcDataNodeRegisterResp(TDataNodeRegisterResp resp) {
+  public TDataNodeRegisterResp convertToRpcDataNodeRegisterResp() {
+    TDataNodeRegisterResp resp = new TDataNodeRegisterResp();
     resp.setStatus(status);
     resp.setConfigNodeList(configNodeList);
+
     if (status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()
         || status.getCode() == 
TSStatusCode.DATANODE_ALREADY_REGISTERED.getStatusCode()) {
       resp.setDataNodeId(dataNodeId);
       resp.setGlobalConfig(globalConfig);
     }
+
+    return resp;
   }
 }
diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/manager/NodeManager.java 
b/confignode/src/main/java/org/apache/iotdb/confignode/manager/NodeManager.java
index bac86cbe09..e78babad7c 100644
--- 
a/confignode/src/main/java/org/apache/iotdb/confignode/manager/NodeManager.java
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/manager/NodeManager.java
@@ -43,7 +43,6 @@ import org.apache.iotdb.confignode.rpc.thrift.TGlobalConfig;
 import org.apache.iotdb.consensus.common.DataSet;
 import org.apache.iotdb.consensus.common.Peer;
 import org.apache.iotdb.consensus.common.response.ConsensusGenericResponse;
-import org.apache.iotdb.consensus.common.response.ConsensusWriteResponse;
 import org.apache.iotdb.rpc.TSStatusCode;
 
 import org.slf4j.Logger;
@@ -94,25 +93,29 @@ public class NodeManager {
   /**
    * Register DataNode
    *
-   * @param req RegisterDataNodeReq
+   * @param registerDataNodePlan RegisterDataNodeReq
    * @return DataNodeConfigurationDataSet. The TSStatus will be set to 
SUCCESS_STATUS when register
    *     success, and DATANODE_ALREADY_REGISTERED when the DataNode is already 
exist.
    */
-  public DataSet registerDataNode(RegisterDataNodePlan req) {
+  public DataSet registerDataNode(RegisterDataNodePlan registerDataNodePlan) {
     DataNodeConfigurationResp dataSet = new DataNodeConfigurationResp();
-    TSStatus status = new 
TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
-    status.setMessage("registerDataNode success.");
-    if (nodeInfo.isRegisteredDataNode(req.getInfo().getLocation())) {
+    TSStatus status = new TSStatus();
+
+    if 
(nodeInfo.isRegisteredDataNode(registerDataNodePlan.getInfo().getLocation())) {
       status.setCode(TSStatusCode.DATANODE_ALREADY_REGISTERED.getStatusCode());
       status.setMessage("DataNode already registered.");
-    } else if (req.getInfo().getLocation().getDataNodeId() < 0) {
-      // only when new dataNode is registered, generate new dataNodeId
-      req.getInfo().getLocation().setDataNodeId(nodeInfo.generateNextNodeId());
-      status = getConsensusManager().write(req).getStatus();
+    } else if (registerDataNodePlan.getInfo().getLocation().getDataNodeId() < 
0) {
+      // Generating a new dataNodeId only when current DataNode doesn't exist 
yet
+      
registerDataNodePlan.getInfo().getLocation().setDataNodeId(nodeInfo.generateNextNodeId());
+      getConsensusManager().write(registerDataNodePlan);
+
+      status.setCode(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+      status.setMessage("registerDataNode success.");
     }
+
     dataSet.setStatus(status);
-    dataSet.setDataNodeId(req.getInfo().getLocation().getDataNodeId());
-    dataSet.setConfigNodeList(nodeInfo.getRegisteredConfigNodes());
+    
dataSet.setDataNodeId(registerDataNodePlan.getInfo().getLocation().getDataNodeId());
+    dataSet.setConfigNodeList(getRegisteredConfigNodes());
     setGlobalConfig(dataSet);
     return dataSet;
   }
@@ -120,20 +123,21 @@ public class NodeManager {
   /**
    * Active DataNode
    *
-   * @param req ActiveDataNodeReq
+   * @param activateDataNodePlan ActiveDataNodeReq
    * @return TSStatus The TSStatus will be set to SUCCESS_STATUS when active 
success, and
    *     DATANODE_ALREADY_REGISTERED when the DataNode is already exist.
    */
-  public TSStatus activateDataNode(ActivateDataNodePlan req) {
+  public TSStatus activateDataNode(ActivateDataNodePlan activateDataNodePlan) {
     TSStatus status = new TSStatus();
-    if (nodeInfo.isRegisteredDataNode(req.getInfo().getLocation())) {
+    if 
(nodeInfo.isRegisteredDataNode(activateDataNodePlan.getInfo().getLocation())) {
       status.setCode(TSStatusCode.DATANODE_ALREADY_ACTIVATED.getStatusCode());
       status.setMessage("DataNode already activated.");
     } else {
-      ConsensusWriteResponse resp = getConsensusManager().write(req);
-      status = resp.getStatus();
+      getConsensusManager().write(activateDataNodePlan);
       // Adjust the maximum RegionGroup number of each StorageGroup
       getClusterSchemaManager().adjustMaxRegionGroupCount();
+      status.setCode(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+      status.setMessage("activateDataNode success.");
     }
     return status;
   }
diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/NodeInfo.java
 
b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/NodeInfo.java
index e6040b86ca..0353ff815a 100644
--- 
a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/NodeInfo.java
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/NodeInfo.java
@@ -125,11 +125,16 @@ public class NodeInfo implements SnapshotProcessor {
     }
   }
 
-  /** @return true if the specific DataNode is registered */
+  /**
+   * Only leader use this interface
+   *
+   * @return True if the specific DataNode already registered, false otherwise
+   */
   public boolean isRegisteredDataNode(TDataNodeLocation dataNodeLocation) {
     boolean result = false;
-    dataNodeInfoReadWriteLock.readLock().lock();
+
     int originalDataNodeId = dataNodeLocation.getDataNodeId();
+    dataNodeInfoReadWriteLock.readLock().lock();
     try {
       for (Map.Entry<Integer, TDataNodeInfo> entry : 
registeredDataNodes.entrySet()) {
         dataNodeLocation.setDataNodeId(entry.getKey());
@@ -137,11 +142,11 @@ public class NodeInfo implements SnapshotProcessor {
           result = true;
           break;
         }
-        dataNodeLocation.setDataNodeId(originalDataNodeId);
       }
     } finally {
       dataNodeInfoReadWriteLock.readLock().unlock();
     }
+    dataNodeLocation.setDataNodeId(originalDataNodeId);
 
     return result;
   }
diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessor.java
 
b/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessor.java
index 870eb24568..c797ede063 100644
--- 
a/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessor.java
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessor.java
@@ -131,12 +131,10 @@ public class ConfigNodeRPCServiceProcessor implements 
IConfigNodeRPCService.Ifac
 
   @Override
   public TDataNodeRegisterResp registerDataNode(TDataNodeRegisterReq req) 
throws TException {
-    RegisterDataNodePlan registerReq = new 
RegisterDataNodePlan(req.getDataNodeInfo());
-    DataNodeConfigurationResp registerResp =
-        (DataNodeConfigurationResp) 
configManager.registerDataNode(registerReq);
-
-    TDataNodeRegisterResp resp = new TDataNodeRegisterResp();
-    registerResp.convertToRpcDataNodeRegisterResp(resp);
+    TDataNodeRegisterResp resp =
+        ((DataNodeConfigurationResp)
+                configManager.registerDataNode(new 
RegisterDataNodePlan(req.getDataNodeInfo())))
+            .convertToRpcDataNodeRegisterResp();
 
     // Print log to record the ConfigNode that performs the 
RegisterDatanodeRequest
     LOGGER.info("Execute RegisterDatanodeRequest {} with result {}", req, 
resp);

Reply via email to