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

qiaojialin pushed a commit to branch partition_cache
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/partition_cache by this push:
     new a27f3693b8 finish (#6344)
a27f3693b8 is described below

commit a27f3693b84828392423611a6742694e3e4f7418
Author: YongzaoDan <[email protected]>
AuthorDate: Mon Jun 20 15:53:38 2022 +0800

    finish (#6344)
---
 .../iotdb/confignode/manager/ConfigManager.java    |  9 ++++++
 .../apache/iotdb/confignode/manager/Manager.java   |  8 +++++
 .../thrift/ConfigNodeRPCServiceProcessor.java      |  6 ++++
 .../apache/iotdb/db/client/ConfigNodeClient.java   | 34 +++++++---------------
 thrift-commons/src/main/thrift/common.thrift       |  5 ++++
 .../src/main/thrift/confignode.thrift              | 11 ++++---
 6 files changed, 45 insertions(+), 28 deletions(-)

diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
 
b/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
index 20634fa4d7..d6951f64d4 100644
--- 
a/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
+++ 
b/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
@@ -19,6 +19,7 @@
 
 package org.apache.iotdb.confignode.manager;
 
+import org.apache.iotdb.common.rpc.thrift.TRegionCache;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
 import org.apache.iotdb.common.rpc.thrift.TSeriesPartitionSlot;
 import org.apache.iotdb.commons.conf.CommonDescriptor;
@@ -355,6 +356,14 @@ public class ConfigManager implements Manager {
     }
   }
 
+  @Override
+  public TRegionCache getRegionCache() {
+    TRegionCache result = new TRegionCache();
+    result.setTimestamp(System.currentTimeMillis());
+    result.setRegionReplicaMap(loadManager.genRealTimeRoutingPolicy());
+    return result;
+  }
+
   @Override
   public TSchemaPartitionResp getOrCreateSchemaPartition(PathPatternTree 
patternTree) {
     TSStatus status = confirmLeader();
diff --git 
a/confignode/src/main/java/org/apache/iotdb/confignode/manager/Manager.java 
b/confignode/src/main/java/org/apache/iotdb/confignode/manager/Manager.java
index 96a427c8a3..360a124a49 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/Manager.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/Manager.java
@@ -18,6 +18,7 @@
  */
 package org.apache.iotdb.confignode.manager;
 
+import org.apache.iotdb.common.rpc.thrift.TRegionCache;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.confignode.consensus.request.auth.AuthorReq;
@@ -159,6 +160,13 @@ public interface Manager {
    */
   TSchemaPartitionResp getSchemaPartition(PathPatternTree patternTree);
 
+  /**
+   * Get latest RegionCache
+   *
+   * @return Map<TConsensusGroupId, TRegionReplicaSet>
+   */
+  TRegionCache getRegionCache();
+
   /**
    * Get or create SchemaPartition
    *
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 f2a395e8da..4c701a71a4 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
@@ -22,6 +22,7 @@ import org.apache.iotdb.common.rpc.thrift.TConfigNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TDataNodeInfo;
 import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TFlushReq;
+import org.apache.iotdb.common.rpc.thrift.TRegionCache;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
 import org.apache.iotdb.commons.auth.AuthException;
 import org.apache.iotdb.commons.conf.CommonDescriptor;
@@ -262,6 +263,11 @@ public class ConfigNodeRPCServiceProcessor implements 
ConfigIService.Iface {
     return resp;
   }
 
+  @Override
+  public TRegionCache getRegionCache() throws TException {
+    return configManager.getRegionCache();
+  }
+
   @Override
   public TSchemaPartitionResp getSchemaPartition(TSchemaPartitionReq req) 
throws TException {
     PathPatternTree patternTree =
diff --git 
a/server/src/main/java/org/apache/iotdb/db/client/ConfigNodeClient.java 
b/server/src/main/java/org/apache/iotdb/db/client/ConfigNodeClient.java
index 1dfaf9bb4e..75252b6700 100644
--- a/server/src/main/java/org/apache/iotdb/db/client/ConfigNodeClient.java
+++ b/server/src/main/java/org/apache/iotdb/db/client/ConfigNodeClient.java
@@ -22,6 +22,7 @@ package org.apache.iotdb.db.client;
 import org.apache.iotdb.common.rpc.thrift.TConfigNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.common.rpc.thrift.TFlushReq;
+import org.apache.iotdb.common.rpc.thrift.TRegionCache;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
 import org.apache.iotdb.commons.client.BaseClientFactory;
 import org.apache.iotdb.commons.client.ClientFactoryProperty;
@@ -87,6 +88,8 @@ public class ConfigNodeClient implements 
ConfigIService.Iface, SyncThriftClient,
 
   private static final int RETRY_NUM = 5;
 
+  private static final String MSG_UNSUPPORTED_INTERFACE = "DataNode doesn't 
support this interface";
+
   public static final String MSG_RECONNECTION_FAIL =
       "Fail to connect to any config node. Please check server it";
 
@@ -395,6 +398,11 @@ public class ConfigNodeClient implements 
ConfigIService.Iface, SyncThriftClient,
     throw new TException(MSG_RECONNECTION_FAIL);
   }
 
+  @Override
+  public TRegionCache getRegionCache() throws TException {
+    throw new TException(MSG_UNSUPPORTED_INTERFACE);
+  }
+
   @Override
   public TSStatus setTTL(TSetTTLReq setTTLReq) throws TException {
     for (int i = 0; i < RETRY_NUM; i++) {
@@ -607,34 +615,12 @@ public class ConfigNodeClient implements 
ConfigIService.Iface, SyncThriftClient,
 
   @Override
   public TConfigNodeRegisterResp registerConfigNode(TConfigNodeRegisterReq 
req) throws TException {
-    for (int i = 0; i < RETRY_NUM; i++) {
-      try {
-        TConfigNodeRegisterResp resp = client.registerConfigNode(req);
-        if (!updateConfigNodeLeader(resp.status)) {
-          return resp;
-        }
-      } catch (TException e) {
-        configLeader = null;
-      }
-      reconnect();
-    }
-    throw new TException(MSG_RECONNECTION_FAIL);
+    throw new TException(MSG_UNSUPPORTED_INTERFACE);
   }
 
   @Override
   public TSStatus applyConfigNode(TConfigNodeLocation configNodeLocation) 
throws TException {
-    for (int i = 0; i < RETRY_NUM; i++) {
-      try {
-        TSStatus status = client.applyConfigNode(configNodeLocation);
-        if (!updateConfigNodeLeader(status)) {
-          return status;
-        }
-      } catch (TException e) {
-        configLeader = null;
-      }
-      reconnect();
-    }
-    throw new TException(MSG_RECONNECTION_FAIL);
+    throw new TException(MSG_UNSUPPORTED_INTERFACE);
   }
 
   @Override
diff --git a/thrift-commons/src/main/thrift/common.thrift 
b/thrift-commons/src/main/thrift/common.thrift
index b81273d0a5..cf2c6ae916 100644
--- a/thrift-commons/src/main/thrift/common.thrift
+++ b/thrift-commons/src/main/thrift/common.thrift
@@ -87,6 +87,11 @@ struct TRegionLocation {
   7: optional string status;
 }
 
+struct TRegionCache {
+  1: required i64 timestamp
+  2: required map<TConsensusGroupId, TRegionReplicaSet> regionReplicaMap
+}
+
 struct THeartbeatReq {
   1: required i64 heartbeatTimestamp
 }
diff --git a/thrift-confignode/src/main/thrift/confignode.thrift 
b/thrift-confignode/src/main/thrift/confignode.thrift
index 9f4eb968c1..f6e9d4afb2 100644
--- a/thrift-confignode/src/main/thrift/confignode.thrift
+++ b/thrift-confignode/src/main/thrift/confignode.thrift
@@ -250,6 +250,7 @@ service ConfigIService {
   TDataNodeInfoResp getDataNodeInfo(i32 dataNodeId)
 
   /* Show Cluster */
+
   TClusterNodeInfos getAllClusterNodeInfos()
 
   /* StorageGroup */
@@ -272,6 +273,12 @@ service ConfigIService {
 
   TStorageGroupSchemaResp getMatchedStorageGroupSchemas(list<string> 
storageGroupPathPattern)
 
+  /* Region */
+
+  common.TRegionCache getRegionCache()
+
+  TShowRegionResp showRegion(TShowRegionReq req)
+
   /* Schema */
 
   TSchemaPartitionResp getSchemaPartition(TSchemaPartitionReq req)
@@ -314,9 +321,5 @@ service ConfigIService {
 
   common.TSStatus flush(common.TFlushReq req)
 
-  /* Show Region */
-
-  TShowRegionResp showRegion(TShowRegionReq req)
-
 }
 

Reply via email to