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 8fea934fd7 finish (#6610)
8fea934fd7 is described below
commit 8fea934fd72d4f88726e3cd990faaef0648c8ca6
Author: YongzaoDan <[email protected]>
AuthorDate: Thu Jul 7 14:18:44 2022 +0800
finish (#6610)
---
.../request/read/GetDataPartitionPlan.java | 46 ++----
.../request/read/GetOrCreateDataPartitionPlan.java | 24 +++
.../read/GetOrCreateSchemaPartitionPlan.java | 9 ++
.../request/read/GetSchemaPartitionPlan.java | 5 +-
.../consensus/response/DataPartitionResp.java | 30 ++++
.../consensus/response/SchemaPartitionResp.java | 19 +++
.../iotdb/confignode/manager/ConfigManager.java | 165 +++++++++++++++------
.../apache/iotdb/confignode/manager/IManager.java | 20 ++-
.../thrift/ConfigNodeRPCServiceProcessor.java | 51 ++++++-
.../request/ConfigPhysicalPlanSerDeTest.java | 12 +-
.../commons/partition/DataPartitionTable.java | 14 ++
.../apache/iotdb/db/client/ConfigNodeClient.java | 69 +++++++++
.../src/main/thrift/confignode.thrift | 26 ++++
13 files changed, 385 insertions(+), 105 deletions(-)
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetDataPartitionPlan.java
b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetDataPartitionPlan.java
index 5564bb9cc7..2f128d1d97 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetDataPartitionPlan.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetDataPartitionPlan.java
@@ -21,7 +21,6 @@ package org.apache.iotdb.confignode.consensus.request.read;
import org.apache.iotdb.common.rpc.thrift.TSeriesPartitionSlot;
import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
import org.apache.iotdb.commons.utils.BasicStructureSerDeUtil;
-import org.apache.iotdb.commons.utils.TestOnly;
import org.apache.iotdb.commons.utils.ThriftCommonsSerDeUtils;
import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
@@ -36,11 +35,13 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
+import java.util.concurrent.ConcurrentHashMap;
/** Get or create DataPartition by the specific partitionSlotsMap. */
public class GetDataPartitionPlan extends ConfigPhysicalPlan {
- private Map<String, Map<TSeriesPartitionSlot, List<TTimePartitionSlot>>>
partitionSlotsMap;
+ // Map<StorageGroup, Map<TSeriesPartitionSlot, List<TTimePartitionSlot>>>
+ protected Map<String, Map<TSeriesPartitionSlot, List<TTimePartitionSlot>>>
partitionSlotsMap;
public GetDataPartitionPlan() {
super(ConfigPhysicalPlanType.GetDataPartition);
@@ -50,45 +51,24 @@ public class GetDataPartitionPlan extends
ConfigPhysicalPlan {
super(configPhysicalPlanType);
}
- public Map<String, Map<TSeriesPartitionSlot, List<TTimePartitionSlot>>>
getPartitionSlotsMap() {
- return partitionSlotsMap;
- }
-
- @TestOnly
- public void setPartitionSlotsMap(
+ public GetDataPartitionPlan(
Map<String, Map<TSeriesPartitionSlot, List<TTimePartitionSlot>>>
partitionSlotsMap) {
+ this();
this.partitionSlotsMap = partitionSlotsMap;
}
+ public Map<String, Map<TSeriesPartitionSlot, List<TTimePartitionSlot>>>
getPartitionSlotsMap() {
+ return partitionSlotsMap;
+ }
+
/**
- * Convert TDataPartitionReq to GetOrCreateDataPartitionPlan
+ * Convert TDataPartitionReq to GetDataPartitionPlan
*
* @param req TDataPartitionReq
+ * @return GetDataPartitionPlan
*/
- public void convertFromRpcTDataPartitionReq(TDataPartitionReq req) {
- partitionSlotsMap = new HashMap<>();
- req.getPartitionSlotsMap()
- .forEach(
- ((storageGroup, tSeriesPartitionTimePartitionSlots) -> {
- // Extract StorageGroupName
- partitionSlotsMap.putIfAbsent(storageGroup, new HashMap<>());
-
- tSeriesPartitionTimePartitionSlots.forEach(
- ((tSeriesPartitionSlot, tTimePartitionSlots) -> {
- // Extract SeriesPartitionSlot
- partitionSlotsMap
- .get(storageGroup)
- .putIfAbsent(tSeriesPartitionSlot, new ArrayList<>());
-
- // Extract TimePartitionSlots
- tTimePartitionSlots.forEach(
- tTimePartitionSlot ->
- partitionSlotsMap
- .get(storageGroup)
- .get(tSeriesPartitionSlot)
- .add(tTimePartitionSlot));
- }));
- }));
+ public static GetDataPartitionPlan
convertFromRpcTDataPartitionReq(TDataPartitionReq req) {
+ return new GetDataPartitionPlan(new
ConcurrentHashMap<>(req.getPartitionSlotsMap()));
}
@Override
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetOrCreateDataPartitionPlan.java
b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetOrCreateDataPartitionPlan.java
index 6d123af514..dd48267775 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetOrCreateDataPartitionPlan.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetOrCreateDataPartitionPlan.java
@@ -18,11 +18,35 @@
*/
package org.apache.iotdb.confignode.consensus.request.read;
+import org.apache.iotdb.common.rpc.thrift.TSeriesPartitionSlot;
+import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
+import org.apache.iotdb.confignode.rpc.thrift.TDataPartitionReq;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
public class GetOrCreateDataPartitionPlan extends GetDataPartitionPlan {
public GetOrCreateDataPartitionPlan() {
super(ConfigPhysicalPlanType.GetOrCreateDataPartition);
}
+
+ public GetOrCreateDataPartitionPlan(
+ Map<String, Map<TSeriesPartitionSlot, List<TTimePartitionSlot>>>
partitionSlotsMap) {
+ this();
+ this.partitionSlotsMap = partitionSlotsMap;
+ }
+
+ /**
+ * Convert TDataPartitionReq to GetOrCreateDataPartitionPlan
+ *
+ * @param req TDataPartitionReq
+ * @return GetOrCreateDataPartitionPlan
+ */
+ public static GetOrCreateDataPartitionPlan convertFromRpcTDataPartitionReq(
+ TDataPartitionReq req) {
+ return new GetOrCreateDataPartitionPlan(new
ConcurrentHashMap<>(req.getPartitionSlotsMap()));
+ }
}
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetOrCreateSchemaPartitionPlan.java
b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetOrCreateSchemaPartitionPlan.java
index f9e0b4dcf1..9ee8adc6b4 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetOrCreateSchemaPartitionPlan.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetOrCreateSchemaPartitionPlan.java
@@ -18,11 +18,20 @@
*/
package org.apache.iotdb.confignode.consensus.request.read;
+import org.apache.iotdb.common.rpc.thrift.TSeriesPartitionSlot;
import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
+import java.util.List;
+import java.util.Map;
+
public class GetOrCreateSchemaPartitionPlan extends GetSchemaPartitionPlan {
public GetOrCreateSchemaPartitionPlan() {
super(ConfigPhysicalPlanType.GetOrCreateSchemaPartition);
}
+
+ public GetOrCreateSchemaPartitionPlan(Map<String,
List<TSeriesPartitionSlot>> partitionSlotsMap) {
+ this();
+ this.partitionSlotsMap = partitionSlotsMap;
+ }
}
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetSchemaPartitionPlan.java
b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetSchemaPartitionPlan.java
index bc52a4ff65..77e33a9b04 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetSchemaPartitionPlan.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/read/GetSchemaPartitionPlan.java
@@ -40,7 +40,7 @@ public class GetSchemaPartitionPlan extends
ConfigPhysicalPlan {
// Map<StorageGroup, List<SeriesPartitionSlot>>
// Get all SchemaPartitions when the partitionSlotsMap is empty
// Get all exists SchemaPartitions in one StorageGroup when the
SeriesPartitionSlot is empty
- private Map<String, List<TSeriesPartitionSlot>> partitionSlotsMap;
+ protected Map<String, List<TSeriesPartitionSlot>> partitionSlotsMap;
public GetSchemaPartitionPlan() {
super(ConfigPhysicalPlanType.GetSchemaPartition);
@@ -50,7 +50,8 @@ public class GetSchemaPartitionPlan extends
ConfigPhysicalPlan {
super(configPhysicalPlanType);
}
- public void setPartitionSlotsMap(Map<String, List<TSeriesPartitionSlot>>
partitionSlotsMap) {
+ public GetSchemaPartitionPlan(Map<String, List<TSeriesPartitionSlot>>
partitionSlotsMap) {
+ this();
this.partitionSlotsMap = partitionSlotsMap;
}
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/DataPartitionResp.java
b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/DataPartitionResp.java
index 2107d8a0d9..a8adce7785 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/DataPartitionResp.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/DataPartitionResp.java
@@ -26,6 +26,7 @@ import
org.apache.iotdb.common.rpc.thrift.TSeriesPartitionSlot;
import org.apache.iotdb.common.rpc.thrift.TTimePartitionSlot;
import org.apache.iotdb.commons.partition.DataPartitionTable;
import org.apache.iotdb.confignode.rpc.thrift.TDataPartitionResp;
+import org.apache.iotdb.confignode.rpc.thrift.TDataPartitionTableResp;
import org.apache.iotdb.consensus.common.DataSet;
import org.apache.iotdb.rpc.TSStatusCode;
@@ -106,4 +107,33 @@ public class DataPartitionResp implements DataSet {
return resp;
}
+
+ public TDataPartitionTableResp convertToTDataPartitionTableResp() {
+ TDataPartitionTableResp resp = new TDataPartitionTableResp();
+ resp.setStatus(status);
+
+ if (status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
+ Map<String, Map<TSeriesPartitionSlot, Map<TTimePartitionSlot,
List<TConsensusGroupId>>>>
+ dataPartitionMap = new ConcurrentHashMap<>();
+
+ dataPartition.forEach(
+ (storageGroup, dataPartitionTable) -> {
+ Map<TSeriesPartitionSlot, Map<TTimePartitionSlot,
List<TConsensusGroupId>>>
+ seriesPartitionSlotMap = new ConcurrentHashMap<>();
+
+ dataPartitionTable
+ .getDataPartitionMap()
+ .forEach(
+ (seriesPartitionSlot, seriesPartitionTable) ->
+ seriesPartitionSlotMap.put(
+ seriesPartitionSlot,
seriesPartitionTable.getSeriesPartitionMap()));
+
+ dataPartitionMap.put(storageGroup, seriesPartitionSlotMap);
+ });
+
+ resp.setDataPartitionTable(dataPartitionMap);
+ }
+
+ return resp;
+ }
}
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/SchemaPartitionResp.java
b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/SchemaPartitionResp.java
index 9c3d593567..a0ca2ac713 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/SchemaPartitionResp.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/SchemaPartitionResp.java
@@ -25,6 +25,7 @@ import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.common.rpc.thrift.TSeriesPartitionSlot;
import org.apache.iotdb.commons.partition.SchemaPartitionTable;
import org.apache.iotdb.confignode.rpc.thrift.TSchemaPartitionResp;
+import org.apache.iotdb.confignode.rpc.thrift.TSchemaPartitionTableResp;
import org.apache.iotdb.consensus.common.DataSet;
import org.apache.iotdb.rpc.TSStatusCode;
@@ -91,4 +92,22 @@ public class SchemaPartitionResp implements DataSet {
return resp;
}
+
+ public TSchemaPartitionTableResp convertToRpcSchemaPartitionTableResp() {
+ TSchemaPartitionTableResp resp = new TSchemaPartitionTableResp();
+ resp.setStatus(status);
+
+ if (status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
+ Map<String, Map<TSeriesPartitionSlot, TConsensusGroupId>>
schemaPartitionMap =
+ new ConcurrentHashMap<>();
+
+ schemaPartition.forEach(
+ (storageGroup, schemaPartitionTable) ->
+ schemaPartitionMap.put(storageGroup,
schemaPartitionTable.getSchemaPartitionMap()));
+
+ resp.setSchemaPartitionTable(schemaPartitionMap);
+ }
+
+ return resp;
+ }
}
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 4758921fc4..c529119ae6 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
@@ -77,10 +77,12 @@ import
org.apache.iotdb.confignode.rpc.thrift.TClusterNodeInfos;
import org.apache.iotdb.confignode.rpc.thrift.TConfigNodeRegisterReq;
import org.apache.iotdb.confignode.rpc.thrift.TConfigNodeRegisterResp;
import org.apache.iotdb.confignode.rpc.thrift.TDataPartitionResp;
+import org.apache.iotdb.confignode.rpc.thrift.TDataPartitionTableResp;
import org.apache.iotdb.confignode.rpc.thrift.TPermissionInfoResp;
import org.apache.iotdb.confignode.rpc.thrift.TRegionRouteMapResp;
import org.apache.iotdb.confignode.rpc.thrift.TSchemaNodeManagementResp;
import org.apache.iotdb.confignode.rpc.thrift.TSchemaPartitionResp;
+import org.apache.iotdb.confignode.rpc.thrift.TSchemaPartitionTableResp;
import org.apache.iotdb.confignode.rpc.thrift.TStorageGroupSchema;
import org.apache.iotdb.consensus.common.DataSet;
import org.apache.iotdb.db.mpp.common.schematree.PathPatternTree;
@@ -344,10 +346,18 @@ public class ConfigManager implements IManager {
}
@Override
- public TSchemaPartitionResp getSchemaPartition(PathPatternTree patternTree) {
+ public Object getSchemaPartition(PathPatternTree patternTree, boolean
isContainedReplicaSet) {
+ // Construct empty response from parameter isContainedReplicaSet
+ Object resp;
+ if (isContainedReplicaSet) {
+ resp = new TSchemaPartitionResp();
+ } else {
+ resp = new TSchemaPartitionTableResp();
+ }
+
TSStatus status = confirmLeader();
if (status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
- GetSchemaPartitionPlan getSchemaPartitionPlan = new
GetSchemaPartitionPlan();
+ // Build GetSchemaPartitionPlan
Map<String, Set<TSeriesPartitionSlot>> partitionSlotsMap = new
HashMap<>();
List<PartialPath> relatedPaths = patternTree.getAllPathPatterns();
List<String> allStorageGroups =
getClusterSchemaManager().getStorageGroupNames();
@@ -375,44 +385,64 @@ public class ConfigManager implements IManager {
}
}
- // return empty partition
+ // Return empty resp if the partitionSlotsMap is empty
if (partitionSlotsMap.isEmpty()) {
- TSchemaPartitionResp resp = new TSchemaPartitionResp();
- resp.setStatus(new
TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode()));
- resp.setSchemaRegionMap(new HashMap<>());
- return resp;
+ if (isContainedReplicaSet) {
+ return ((TSchemaPartitionResp) resp)
+ .setStatus(StatusUtils.OK)
+ .setSchemaRegionMap(new HashMap<>());
+ } else {
+ return ((TSchemaPartitionTableResp) resp)
+ .setStatus(StatusUtils.OK)
+ .setSchemaPartitionTable(new HashMap<>());
+ }
}
- getSchemaPartitionPlan.setPartitionSlotsMap(
- partitionSlotsMap.entrySet().stream()
- .collect(Collectors.toMap(Map.Entry::getKey, e -> new
ArrayList<>(e.getValue()))));
-
- SchemaPartitionResp resp =
+ GetSchemaPartitionPlan getSchemaPartitionPlan =
+ new GetSchemaPartitionPlan(
+ partitionSlotsMap.entrySet().stream()
+ .collect(
+ Collectors.toMap(Map.Entry::getKey, e -> new
ArrayList<>(e.getValue()))));
+ SchemaPartitionResp queryResult =
(SchemaPartitionResp)
partitionManager.getSchemaPartition(getSchemaPartitionPlan);
- TSchemaPartitionResp result =
-
resp.convertToRpcSchemaPartitionResp(getLoadManager().genRealTimeRoutingPolicy());
+ if (isContainedReplicaSet) {
+ resp =
+ queryResult.convertToRpcSchemaPartitionResp(
+ getLoadManager().genRealTimeRoutingPolicy());
+ } else {
+ resp = queryResult.convertToRpcSchemaPartitionTableResp();
+ }
// TODO: Delete or hide this LOGGER before officially release.
- LOGGER.info(
- "GetSchemaPartition receive paths: {}, return TSchemaPartitionResp:
{}",
- relatedPaths,
- result);
+ LOGGER.info("GetSchemaPartition receive paths: {}, return: {}",
relatedPaths, resp);
- return result;
+ return resp;
} else {
- return new TSchemaPartitionResp().setStatus(status);
+ if (isContainedReplicaSet) {
+ return ((TSchemaPartitionResp) resp).setStatus(status);
+ } else {
+ return ((TSchemaPartitionTableResp) resp).setStatus(status);
+ }
}
}
@Override
- public TSchemaPartitionResp getOrCreateSchemaPartition(PathPatternTree
patternTree) {
+ public Object getOrCreateSchemaPartition(
+ PathPatternTree patternTree, boolean isContainedReplicaSet) {
+ // Construct empty response from parameter isContainedReplicaSet
+ Object resp;
+ if (isContainedReplicaSet) {
+ resp = new TSchemaPartitionResp();
+ } else {
+ resp = new TSchemaPartitionTableResp();
+ }
+
TSStatus status = confirmLeader();
if (status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
List<String> devicePaths = patternTree.getAllDevicePatterns();
List<String> storageGroups =
getClusterSchemaManager().getStorageGroupNames();
- GetOrCreateSchemaPartitionPlan getOrCreateSchemaPartitionPlan =
- new GetOrCreateSchemaPartitionPlan();
+ // Build GetOrCreateSchemaPartitionPlan
Map<String, List<TSeriesPartitionSlot>> partitionSlotsMap = new
HashMap<>();
for (String devicePath : devicePaths) {
if (!devicePath.contains("*")) {
@@ -427,23 +457,33 @@ public class ConfigManager implements IManager {
}
}
}
- getOrCreateSchemaPartitionPlan.setPartitionSlotsMap(partitionSlotsMap);
+ GetOrCreateSchemaPartitionPlan getOrCreateSchemaPartitionPlan =
+ new GetOrCreateSchemaPartitionPlan(partitionSlotsMap);
- SchemaPartitionResp resp =
+ SchemaPartitionResp queryResult =
(SchemaPartitionResp)
partitionManager.getOrCreateSchemaPartition(getOrCreateSchemaPartitionPlan);
- TSchemaPartitionResp result =
-
resp.convertToRpcSchemaPartitionResp(getLoadManager().genRealTimeRoutingPolicy());
+ if (isContainedReplicaSet) {
+ resp =
+ queryResult.convertToRpcSchemaPartitionResp(
+ getLoadManager().genRealTimeRoutingPolicy());
+ } else {
+ resp = queryResult.convertToRpcSchemaPartitionTableResp();
+ }
// TODO: Delete or hide this LOGGER before officially release.
LOGGER.info(
"GetOrCreateSchemaPartition receive devicePaths: {}, return
TSchemaPartitionResp: {}",
devicePaths,
- result);
+ resp);
- return result;
+ return resp;
} else {
- return new TSchemaPartitionResp().setStatus(status);
+ if (isContainedReplicaSet) {
+ return ((TSchemaPartitionResp) resp).setStatus(status);
+ } else {
+ return ((TSchemaPartitionTableResp) resp).setStatus(status);
+ }
}
}
@@ -477,48 +517,79 @@ public class ConfigManager implements IManager {
}
@Override
- public TDataPartitionResp getDataPartition(GetDataPartitionPlan
getDataPartitionPlan) {
+ public Object getDataPartition(
+ GetDataPartitionPlan getDataPartitionPlan, boolean
isContainedReplicaSet) {
+ // Construct empty response from parameter isContainedReplicaSet
+ Object resp;
+ if (isContainedReplicaSet) {
+ resp = new TDataPartitionResp();
+ } else {
+ resp = new TDataPartitionTableResp();
+ }
+
TSStatus status = confirmLeader();
if (status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
- DataPartitionResp resp =
+ DataPartitionResp queryResult =
(DataPartitionResp)
partitionManager.getDataPartition(getDataPartitionPlan);
- TDataPartitionResp result =
-
resp.convertToTDataPartitionResp(getLoadManager().genRealTimeRoutingPolicy());
+ if (isContainedReplicaSet) {
+ resp =
queryResult.convertToTDataPartitionResp(getLoadManager().genRealTimeRoutingPolicy());
+ } else {
+ resp = queryResult.convertToTDataPartitionTableResp();
+ }
// TODO: Delete or hide this LOGGER before officially release.
LOGGER.info(
- "GetDataPartition interface receive PartitionSlotsMap: {}, return
TDataPartitionResp: {}",
+ "GetDataPartition interface receive PartitionSlotsMap: {}, return:
{}",
getDataPartitionPlan.getPartitionSlotsMap(),
- result);
+ resp);
- return result;
+ return resp;
} else {
- return new TDataPartitionResp().setStatus(status);
+ if (isContainedReplicaSet) {
+ return ((TDataPartitionResp) resp).setStatus(status);
+ } else {
+ return ((TDataPartitionTableResp) resp).setStatus(status);
+ }
}
}
@Override
- public TDataPartitionResp getOrCreateDataPartition(
- GetOrCreateDataPartitionPlan getOrCreateDataPartitionReq) {
+ public Object getOrCreateDataPartition(
+ GetOrCreateDataPartitionPlan getOrCreateDataPartitionReq, boolean
isContainedReplicaSet) {
+ // Construct empty response from parameter isContainedReplicaSet
+ Object resp;
+ if (isContainedReplicaSet) {
+ resp = new TDataPartitionResp();
+ } else {
+ resp = new TDataPartitionTableResp();
+ }
+
TSStatus status = confirmLeader();
if (status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
- DataPartitionResp resp =
+ DataPartitionResp queryResult =
(DataPartitionResp)
partitionManager.getOrCreateDataPartition(getOrCreateDataPartitionReq);
- TDataPartitionResp result =
-
resp.convertToTDataPartitionResp(getLoadManager().genRealTimeRoutingPolicy());
+ if (isContainedReplicaSet) {
+ resp =
queryResult.convertToTDataPartitionResp(getLoadManager().genRealTimeRoutingPolicy());
+ } else {
+ resp = queryResult.convertToTDataPartitionTableResp();
+ }
// TODO: Delete or hide this LOGGER before officially release.
LOGGER.info(
- "GetOrCreateDataPartition success. receive PartitionSlotsMap: {},
return TDataPartitionResp: {}",
+ "GetOrCreateDataPartition success. receive PartitionSlotsMap: {},
return: {}",
getOrCreateDataPartitionReq.getPartitionSlotsMap(),
- result);
+ resp);
- return result;
+ return resp;
} else {
- return new TDataPartitionResp().setStatus(status);
+ if (isContainedReplicaSet) {
+ return ((TDataPartitionResp) resp).setStatus(status);
+ } else {
+ return ((TDataPartitionTableResp) resp).setStatus(status);
+ }
}
}
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/manager/IManager.java
b/confignode/src/main/java/org/apache/iotdb/confignode/manager/IManager.java
index dd934bad3b..3c75879daf 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/IManager.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/IManager.java
@@ -41,11 +41,9 @@ import org.apache.iotdb.confignode.manager.load.LoadManager;
import org.apache.iotdb.confignode.rpc.thrift.TClusterNodeInfos;
import org.apache.iotdb.confignode.rpc.thrift.TConfigNodeRegisterReq;
import org.apache.iotdb.confignode.rpc.thrift.TConfigNodeRegisterResp;
-import org.apache.iotdb.confignode.rpc.thrift.TDataPartitionResp;
import org.apache.iotdb.confignode.rpc.thrift.TPermissionInfoResp;
import org.apache.iotdb.confignode.rpc.thrift.TRegionRouteMapResp;
import org.apache.iotdb.confignode.rpc.thrift.TSchemaNodeManagementResp;
-import org.apache.iotdb.confignode.rpc.thrift.TSchemaPartitionResp;
import org.apache.iotdb.consensus.common.DataSet;
import org.apache.iotdb.db.mpp.common.schematree.PathPatternTree;
@@ -170,16 +168,20 @@ public interface IManager {
/**
* Get SchemaPartition
*
+ * @param isContainedReplicaSet The last map level of result will contain
TRegionReplicaSet if
+ * true, otherwise the last level will be TConsensusGroupId
* @return TSchemaPartitionResp
*/
- TSchemaPartitionResp getSchemaPartition(PathPatternTree patternTree);
+ Object getSchemaPartition(PathPatternTree patternTree, boolean
isContainedReplicaSet);
/**
* Get or create SchemaPartition
*
+ * @param isContainedReplicaSet The last map level of result will contain
TRegionReplicaSet if
+ * true, otherwise the last level will be TConsensusGroupId
* @return TSchemaPartitionResp
*/
- TSchemaPartitionResp getOrCreateSchemaPartition(PathPatternTree patternTree);
+ Object getOrCreateSchemaPartition(PathPatternTree patternTree, boolean
isContainedReplicaSet);
/**
* create SchemaNodeManagementPartition for child paths node management
@@ -191,17 +193,21 @@ public interface IManager {
/**
* Get DataPartition
*
+ * @param isContainedReplicaSet The last map level of result will contain
TRegionReplicaSet if
+ * true, otherwise the last level will be TConsensusGroupId
* @return TDataPartitionResp
*/
- TDataPartitionResp getDataPartition(GetDataPartitionPlan
getDataPartitionPlan);
+ Object getDataPartition(GetDataPartitionPlan getDataPartitionPlan, boolean
isContainedReplicaSet);
/**
* Get or create DataPartition
*
+ * @param isContainedReplicaSet The last map level of result will contain
TRegionReplicaSet if
+ * true, otherwise the last level will be TConsensusGroupId
* @return TDataPartitionResp
*/
- TDataPartitionResp getOrCreateDataPartition(
- GetOrCreateDataPartitionPlan getOrCreateDataPartitionPlan);
+ Object getOrCreateDataPartition(
+ GetOrCreateDataPartitionPlan getOrCreateDataPartitionPlan, boolean
isContainedReplicaSet);
/**
* Operate Permission
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 8406e42a24..870eb24568 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
@@ -71,6 +71,7 @@ import
org.apache.iotdb.confignode.rpc.thrift.TDataNodeRegisterReq;
import org.apache.iotdb.confignode.rpc.thrift.TDataNodeRegisterResp;
import org.apache.iotdb.confignode.rpc.thrift.TDataPartitionReq;
import org.apache.iotdb.confignode.rpc.thrift.TDataPartitionResp;
+import org.apache.iotdb.confignode.rpc.thrift.TDataPartitionTableResp;
import org.apache.iotdb.confignode.rpc.thrift.TDeleteStorageGroupReq;
import org.apache.iotdb.confignode.rpc.thrift.TDeleteStorageGroupsReq;
import org.apache.iotdb.confignode.rpc.thrift.TDropFunctionReq;
@@ -81,6 +82,7 @@ import
org.apache.iotdb.confignode.rpc.thrift.TSchemaNodeManagementReq;
import org.apache.iotdb.confignode.rpc.thrift.TSchemaNodeManagementResp;
import org.apache.iotdb.confignode.rpc.thrift.TSchemaPartitionReq;
import org.apache.iotdb.confignode.rpc.thrift.TSchemaPartitionResp;
+import org.apache.iotdb.confignode.rpc.thrift.TSchemaPartitionTableResp;
import org.apache.iotdb.confignode.rpc.thrift.TSetDataReplicationFactorReq;
import org.apache.iotdb.confignode.rpc.thrift.TSetSchemaReplicationFactorReq;
import org.apache.iotdb.confignode.rpc.thrift.TSetStorageGroupReq;
@@ -262,7 +264,15 @@ public class ConfigNodeRPCServiceProcessor implements
IConfigNodeRPCService.Ifac
public TSchemaPartitionResp getSchemaPartition(TSchemaPartitionReq req)
throws TException {
PathPatternTree patternTree =
PathPatternTree.deserialize(ByteBuffer.wrap(req.getPathPatternTree()));
- return configManager.getSchemaPartition(patternTree);
+ return (TSchemaPartitionResp)
configManager.getSchemaPartition(patternTree, true);
+ }
+
+ @Override
+ public TSchemaPartitionTableResp getSchemaPartitionTable(TSchemaPartitionReq
req)
+ throws TException {
+ PathPatternTree patternTree =
+ PathPatternTree.deserialize(ByteBuffer.wrap(req.getPathPatternTree()));
+ return (TSchemaPartitionTableResp)
configManager.getSchemaPartition(patternTree, false);
}
@Override
@@ -270,7 +280,15 @@ public class ConfigNodeRPCServiceProcessor implements
IConfigNodeRPCService.Ifac
throws TException {
PathPatternTree patternTree =
PathPatternTree.deserialize(ByteBuffer.wrap(req.getPathPatternTree()));
- return configManager.getOrCreateSchemaPartition(patternTree);
+ return (TSchemaPartitionResp)
configManager.getOrCreateSchemaPartition(patternTree, true);
+ }
+
+ @Override
+ public TSchemaPartitionTableResp
getOrCreateSchemaPartitionTable(TSchemaPartitionReq req)
+ throws TException {
+ PathPatternTree patternTree =
+ PathPatternTree.deserialize(ByteBuffer.wrap(req.getPathPatternTree()));
+ return (TSchemaPartitionTableResp)
configManager.getOrCreateSchemaPartition(patternTree, false);
}
@Override
@@ -284,16 +302,33 @@ public class ConfigNodeRPCServiceProcessor implements
IConfigNodeRPCService.Ifac
@Override
public TDataPartitionResp getDataPartition(TDataPartitionReq req) throws
TException {
- GetDataPartitionPlan getDataPartitionPlan = new GetDataPartitionPlan();
- getDataPartitionPlan.convertFromRpcTDataPartitionReq(req);
- return configManager.getDataPartition(getDataPartitionPlan);
+ GetDataPartitionPlan getDataPartitionPlan =
+ GetDataPartitionPlan.convertFromRpcTDataPartitionReq(req);
+ return (TDataPartitionResp)
configManager.getDataPartition(getDataPartitionPlan, true);
+ }
+
+ @Override
+ public TDataPartitionTableResp getDataPartitionTable(TDataPartitionReq req)
throws TException {
+ GetDataPartitionPlan getDataPartitionPlan =
+ GetDataPartitionPlan.convertFromRpcTDataPartitionReq(req);
+ return (TDataPartitionTableResp)
configManager.getDataPartition(getDataPartitionPlan, false);
}
@Override
public TDataPartitionResp getOrCreateDataPartition(TDataPartitionReq req)
throws TException {
- GetOrCreateDataPartitionPlan getOrCreateDataPartitionReq = new
GetOrCreateDataPartitionPlan();
- getOrCreateDataPartitionReq.convertFromRpcTDataPartitionReq(req);
- return configManager.getOrCreateDataPartition(getOrCreateDataPartitionReq);
+ GetOrCreateDataPartitionPlan getOrCreateDataPartitionReq =
+ GetOrCreateDataPartitionPlan.convertFromRpcTDataPartitionReq(req);
+ return (TDataPartitionResp)
+ configManager.getOrCreateDataPartition(getOrCreateDataPartitionReq,
true);
+ }
+
+ @Override
+ public TDataPartitionTableResp
getOrCreateDataPartitionTable(TDataPartitionReq req)
+ throws TException {
+ GetOrCreateDataPartitionPlan getOrCreateDataPartitionReq =
+ GetOrCreateDataPartitionPlan.convertFromRpcTDataPartitionReq(req);
+ return (TDataPartitionTableResp)
+ configManager.getOrCreateDataPartition(getOrCreateDataPartitionReq,
false);
}
@Override
diff --git
a/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
b/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
index 86c9a4067f..3c5859e674 100644
---
a/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
+++
b/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
@@ -286,8 +286,7 @@ public class ConfigPhysicalPlanSerDeTest {
Map<String, List<TSeriesPartitionSlot>> partitionSlotsMap = new
HashMap<>();
partitionSlotsMap.put(storageGroup,
Collections.singletonList(seriesPartitionSlot));
- GetSchemaPartitionPlan req0 = new GetSchemaPartitionPlan();
- req0.setPartitionSlotsMap(partitionSlotsMap);
+ GetSchemaPartitionPlan req0 = new
GetSchemaPartitionPlan(partitionSlotsMap);
GetSchemaPartitionPlan req1 =
(GetSchemaPartitionPlan)
ConfigPhysicalPlan.Factory.create(req0.serializeToByteBuffer());
Assert.assertEquals(req0, req1);
@@ -301,8 +300,7 @@ public class ConfigPhysicalPlanSerDeTest {
Map<String, List<TSeriesPartitionSlot>> partitionSlotsMap = new
HashMap<>();
partitionSlotsMap.put(storageGroup,
Collections.singletonList(seriesPartitionSlot));
- GetOrCreateSchemaPartitionPlan req0 = new GetOrCreateSchemaPartitionPlan();
- req0.setPartitionSlotsMap(partitionSlotsMap);
+ GetOrCreateSchemaPartitionPlan req0 = new
GetOrCreateSchemaPartitionPlan(partitionSlotsMap);
GetOrCreateSchemaPartitionPlan req1 =
(GetOrCreateSchemaPartitionPlan)
ConfigPhysicalPlan.Factory.create(req0.serializeToByteBuffer());
@@ -355,8 +353,7 @@ public class ConfigPhysicalPlanSerDeTest {
partitionSlotsMap.get(storageGroup).put(seriesPartitionSlot, new
ArrayList<>());
partitionSlotsMap.get(storageGroup).get(seriesPartitionSlot).add(timePartitionSlot);
- GetDataPartitionPlan req0 = new GetDataPartitionPlan();
- req0.setPartitionSlotsMap(partitionSlotsMap);
+ GetDataPartitionPlan req0 = new GetDataPartitionPlan(partitionSlotsMap);
GetDataPartitionPlan req1 =
(GetDataPartitionPlan)
ConfigPhysicalPlan.Factory.create(req0.serializeToByteBuffer());
Assert.assertEquals(req0, req1);
@@ -374,8 +371,7 @@ public class ConfigPhysicalPlanSerDeTest {
partitionSlotsMap.get(storageGroup).put(seriesPartitionSlot, new
ArrayList<>());
partitionSlotsMap.get(storageGroup).get(seriesPartitionSlot).add(timePartitionSlot);
- GetOrCreateDataPartitionPlan req0 = new GetOrCreateDataPartitionPlan();
- req0.setPartitionSlotsMap(partitionSlotsMap);
+ GetOrCreateDataPartitionPlan req0 = new
GetOrCreateDataPartitionPlan(partitionSlotsMap);
GetOrCreateDataPartitionPlan req1 =
(GetOrCreateDataPartitionPlan)
ConfigPhysicalPlan.Factory.create(req0.serializeToByteBuffer());
diff --git
a/node-commons/src/main/java/org/apache/iotdb/commons/partition/DataPartitionTable.java
b/node-commons/src/main/java/org/apache/iotdb/commons/partition/DataPartitionTable.java
index f9b0e1c7a8..3a67776e78 100644
---
a/node-commons/src/main/java/org/apache/iotdb/commons/partition/DataPartitionTable.java
+++
b/node-commons/src/main/java/org/apache/iotdb/commons/partition/DataPartitionTable.java
@@ -137,6 +137,20 @@ public class DataPartitionTable {
return result;
}
+ public static DataPartitionTable convertFromPlainMap(
+ Map<TSeriesPartitionSlot, Map<TTimePartitionSlot,
List<TConsensusGroupId>>>
+ dataPartitionMap) {
+ DataPartitionTable result = new DataPartitionTable();
+
+ dataPartitionMap.forEach(
+ (seriesPartitionSlot, seriesPartitionMap) ->
+ result
+ .getDataPartitionMap()
+ .put(seriesPartitionSlot, new
SeriesPartitionTable(seriesPartitionMap)));
+
+ return result;
+ }
+
public void serialize(OutputStream outputStream, TProtocol protocol)
throws IOException, TException {
ReadWriteIOUtils.write(dataPartitionMap.size(), outputStream);
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 4edb3b11b4..61aa287bd5 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
@@ -46,6 +46,7 @@ import
org.apache.iotdb.confignode.rpc.thrift.TDataNodeRegisterReq;
import org.apache.iotdb.confignode.rpc.thrift.TDataNodeRegisterResp;
import org.apache.iotdb.confignode.rpc.thrift.TDataPartitionReq;
import org.apache.iotdb.confignode.rpc.thrift.TDataPartitionResp;
+import org.apache.iotdb.confignode.rpc.thrift.TDataPartitionTableResp;
import org.apache.iotdb.confignode.rpc.thrift.TDeleteStorageGroupReq;
import org.apache.iotdb.confignode.rpc.thrift.TDeleteStorageGroupsReq;
import org.apache.iotdb.confignode.rpc.thrift.TDropFunctionReq;
@@ -56,6 +57,7 @@ import
org.apache.iotdb.confignode.rpc.thrift.TSchemaNodeManagementReq;
import org.apache.iotdb.confignode.rpc.thrift.TSchemaNodeManagementResp;
import org.apache.iotdb.confignode.rpc.thrift.TSchemaPartitionReq;
import org.apache.iotdb.confignode.rpc.thrift.TSchemaPartitionResp;
+import org.apache.iotdb.confignode.rpc.thrift.TSchemaPartitionTableResp;
import org.apache.iotdb.confignode.rpc.thrift.TSetDataReplicationFactorReq;
import org.apache.iotdb.confignode.rpc.thrift.TSetSchemaReplicationFactorReq;
import org.apache.iotdb.confignode.rpc.thrift.TSetStorageGroupReq;
@@ -478,6 +480,23 @@ public class ConfigNodeClient
throw new TException(MSG_RECONNECTION_FAIL);
}
+ @Override
+ public TSchemaPartitionTableResp getSchemaPartitionTable(TSchemaPartitionReq
req)
+ throws TException {
+ for (int i = 0; i < RETRY_NUM; i++) {
+ try {
+ TSchemaPartitionTableResp resp = client.getSchemaPartitionTable(req);
+ if (!updateConfigNodeLeader(resp.status)) {
+ return resp;
+ }
+ } catch (TException e) {
+ configLeader = null;
+ }
+ reconnect();
+ }
+ throw new TException(MSG_RECONNECTION_FAIL);
+ }
+
@Override
public TSchemaPartitionResp getOrCreateSchemaPartition(TSchemaPartitionReq
req)
throws TException {
@@ -495,6 +514,23 @@ public class ConfigNodeClient
throw new TException(MSG_RECONNECTION_FAIL);
}
+ @Override
+ public TSchemaPartitionTableResp
getOrCreateSchemaPartitionTable(TSchemaPartitionReq req)
+ throws TException {
+ for (int i = 0; i < RETRY_NUM; i++) {
+ try {
+ TSchemaPartitionTableResp resp =
client.getOrCreateSchemaPartitionTable(req);
+ if (!updateConfigNodeLeader(resp.status)) {
+ return resp;
+ }
+ } catch (TException e) {
+ configLeader = null;
+ }
+ reconnect();
+ }
+ throw new TException(MSG_RECONNECTION_FAIL);
+ }
+
@Override
public TSchemaNodeManagementResp
getSchemaNodeManagementPartition(TSchemaNodeManagementReq req)
throws TException {
@@ -528,6 +564,22 @@ public class ConfigNodeClient
throw new TException(MSG_RECONNECTION_FAIL);
}
+ @Override
+ public TDataPartitionTableResp getDataPartitionTable(TDataPartitionReq req)
throws TException {
+ for (int i = 0; i < RETRY_NUM; i++) {
+ try {
+ TDataPartitionTableResp resp = client.getDataPartitionTable(req);
+ if (!updateConfigNodeLeader(resp.status)) {
+ return resp;
+ }
+ } catch (TException e) {
+ configLeader = null;
+ }
+ reconnect();
+ }
+ throw new TException(MSG_RECONNECTION_FAIL);
+ }
+
@Override
public TDataPartitionResp getOrCreateDataPartition(TDataPartitionReq req)
throws TException {
for (int i = 0; i < RETRY_NUM; i++) {
@@ -544,6 +596,23 @@ public class ConfigNodeClient
throw new TException(MSG_RECONNECTION_FAIL);
}
+ @Override
+ public TDataPartitionTableResp
getOrCreateDataPartitionTable(TDataPartitionReq req)
+ throws TException {
+ for (int i = 0; i < RETRY_NUM; i++) {
+ try {
+ TDataPartitionTableResp resp =
client.getOrCreateDataPartitionTable(req);
+ if (!updateConfigNodeLeader(resp.status)) {
+ return resp;
+ }
+ } catch (TException e) {
+ configLeader = null;
+ }
+ reconnect();
+ }
+ throw new TException(MSG_RECONNECTION_FAIL);
+ }
+
@Override
public TSStatus operatePermission(TAuthorizerReq req) throws TException {
for (int i = 0; i < RETRY_NUM; i++) {
diff --git a/thrift-confignode/src/main/thrift/confignode.thrift
b/thrift-confignode/src/main/thrift/confignode.thrift
index 9aed98654d..973b383df7 100644
--- a/thrift-confignode/src/main/thrift/confignode.thrift
+++ b/thrift-confignode/src/main/thrift/confignode.thrift
@@ -108,12 +108,19 @@ struct TSchemaPartitionReq {
1: required binary pathPatternTree
}
+// TODO: Replace this by TSchemaPartitionTableResp
struct TSchemaPartitionResp {
1: required common.TSStatus status
// map<StorageGroupName, map<TSeriesPartitionSlot, TRegionReplicaSet>>
2: optional map<string, map<common.TSeriesPartitionSlot,
common.TRegionReplicaSet>> schemaRegionMap
}
+struct TSchemaPartitionTableResp {
+ 1: required common.TSStatus status
+ // map<StorageGroupName, map<TSeriesPartitionSlot, TConsensusGroupId>>
+ 2: optional map<string, map<common.TSeriesPartitionSlot,
common.TConsensusGroupId>> schemaPartitionTable
+}
+
// Node Management
struct TSchemaNodeManagementReq {
@@ -134,12 +141,19 @@ struct TDataPartitionReq {
1: required map<string, map<common.TSeriesPartitionSlot,
list<common.TTimePartitionSlot>>> partitionSlotsMap
}
+// TODO: Replace this by TDataPartitionTableResp
struct TDataPartitionResp {
1: required common.TSStatus status
// map<StorageGroupName, map<TSeriesPartitionSlot, map<TTimePartitionSlot,
list<TRegionReplicaSet>>>>
2: optional map<string, map<common.TSeriesPartitionSlot,
map<common.TTimePartitionSlot, list<common.TRegionReplicaSet>>>>
dataPartitionMap
}
+struct TDataPartitionTableResp {
+ 1: required common.TSStatus status
+ // map<StorageGroupName, map<TSeriesPartitionSlot, map<TTimePartitionSlot,
list<TConsensusGroupId>>>>
+ 2: optional map<string, map<common.TSeriesPartitionSlot,
map<common.TTimePartitionSlot, list<common.TConsensusGroupId>>>>
dataPartitionTable
+}
+
// Authorize
struct TAuthorizerReq {
1: required i32 authorType
@@ -285,20 +299,32 @@ service IConfigNodeRPCService {
/* Schema */
+ // TODO: Replace this by getSchemaPartitionTable
TSchemaPartitionResp getSchemaPartition(TSchemaPartitionReq req)
+ TSchemaPartitionTableResp getSchemaPartitionTable(TSchemaPartitionReq req)
+
+ // TODO: Replace this by getOrCreateSchemaPartitionTable
TSchemaPartitionResp getOrCreateSchemaPartition(TSchemaPartitionReq req)
+ TSchemaPartitionTableResp
getOrCreateSchemaPartitionTable(TSchemaPartitionReq req)
+
/* Node Management */
TSchemaNodeManagementResp
getSchemaNodeManagementPartition(TSchemaNodeManagementReq req)
/* Data */
+ // TODO: Replace this by getDataPartitionTable
TDataPartitionResp getDataPartition(TDataPartitionReq req)
+ TDataPartitionTableResp getDataPartitionTable(TDataPartitionReq req)
+
TDataPartitionResp getOrCreateDataPartition(TDataPartitionReq req)
+ // TODO: Replace this by getOrCreateDataPartitionTable
+ TDataPartitionTableResp getOrCreateDataPartitionTable(TDataPartitionReq req)
+
/* Authorize */
common.TSStatus operatePermission(TAuthorizerReq req)