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)
-
}