This is an automated email from the ASF dual-hosted git repository.
jiangtian 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 c8bc153 fix
new d7e291c Merge pull request #2223 from
LebronAl/cluster_fix_auto_create_schema_bug
c8bc153 is described below
commit c8bc1531cf8f6d4a84b32b7aad307a7876b675d4
Author: LebronAl <[email protected]>
AuthorDate: Wed Dec 9 11:13:04 2020 +0800
fix
---
.../apache/iotdb/cluster/metadata/CMManager.java | 21 +++++++++++++++++++--
.../iotdb/cluster/query/LocalQueryExecutor.java | 2 +-
.../cluster/server/member/MetaGroupMember.java | 4 ++--
3 files changed, 22 insertions(+), 5 deletions(-)
diff --git
a/cluster/src/main/java/org/apache/iotdb/cluster/metadata/CMManager.java
b/cluster/src/main/java/org/apache/iotdb/cluster/metadata/CMManager.java
index 73c75dc..ceef221 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/metadata/CMManager.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/metadata/CMManager.java
@@ -396,7 +396,7 @@ public class CMManager extends MManager {
* create storage groups for CreateTimeseriesPlan and InsertPlan, also
create timeseries for
* InsertPlan. Only the two kind of plans can use this method.
*/
- public void createSchema(PhysicalPlan plan) throws MetadataException {
+ public void createSchema(PhysicalPlan plan) throws MetadataException,
CheckConsistencyException {
// try to set storage group
List<PartialPath> deviceIds;
// only handle InsertPlan, CreateTimeSeriesPlan and
CreateMultiTimeSeriesPlan currently
@@ -491,7 +491,8 @@ public class CMManager extends MManager {
* @param insertPlan, some of the timeseries in it are not created yet
* @return true of all uncreated timeseries are created
*/
- public boolean createTimeseries(InsertPlan insertPlan) throws
IllegalPathException {
+ public boolean createTimeseries(InsertPlan insertPlan)
+ throws IllegalPathException, CheckConsistencyException {
List<String> seriesList = new ArrayList<>();
PartialPath deviceId = insertPlan.getDeviceId();
PartialPath storageGroupName;
@@ -566,6 +567,22 @@ public class CMManager extends MManager {
* To check which timeseries in the input list is unregistered from one node
in "partitionGroup".
*/
private List<String> getUnregisteredSeriesList(List<String> seriesList,
+ PartitionGroup partitionGroup) throws CheckConsistencyException {
+ if (partitionGroup.contains(metaGroupMember.getThisNode())) {
+ return getUnregisteredSeriesListLocally(seriesList, partitionGroup);
+ } else {
+ return getUnregisteredSeriesListRemotely(seriesList, partitionGroup);
+ }
+ }
+
+ private List<String> getUnregisteredSeriesListLocally(List<String>
seriesList,
+ PartitionGroup partitionGroup) throws CheckConsistencyException {
+ DataGroupMember dataMember = metaGroupMember.getDataClusterServer()
+ .getDataMember(partitionGroup.getHeader(), null, null);
+ return
dataMember.getLocalQueryExecutor().getUnregisteredTimeseries(seriesList);
+ }
+
+ private List<String> getUnregisteredSeriesListRemotely(List<String>
seriesList,
PartitionGroup partitionGroup) {
for (Node node : partitionGroup) {
try {
diff --git
a/cluster/src/main/java/org/apache/iotdb/cluster/query/LocalQueryExecutor.java
b/cluster/src/main/java/org/apache/iotdb/cluster/query/LocalQueryExecutor.java
index 3f3880e..d4fe221 100644
---
a/cluster/src/main/java/org/apache/iotdb/cluster/query/LocalQueryExecutor.java
+++
b/cluster/src/main/java/org/apache/iotdb/cluster/query/LocalQueryExecutor.java
@@ -447,7 +447,7 @@ public class LocalQueryExecutor {
*/
public List<String> getUnregisteredTimeseries(List<String> timeseriesList)
throws CheckConsistencyException {
- dataGroupMember.syncLeaderWithConsistencyCheck(false);
+ dataGroupMember.syncLeaderWithConsistencyCheck(true);
List<String> result = new ArrayList<>();
for (String seriesPath : timeseriesList) {
diff --git
a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/MetaGroupMember.java
b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/MetaGroupMember.java
index 7cccccd..863314f 100644
---
a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/MetaGroupMember.java
+++
b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/MetaGroupMember.java
@@ -1468,7 +1468,7 @@ public class MetaGroupMember extends RaftMember {
try {
((CMManager) IoTDB.metaManager).createSchema(plan);
return processPartitionedPlan(plan);
- } catch (MetadataException e) {
+ } catch (MetadataException | CheckConsistencyException e) {
logger.error(
String.format("Failed to set storage group or create timeseries,
because %s", e));
}
@@ -1551,7 +1551,7 @@ public class MetaGroupMember extends RaftMember {
boolean hasCreate;
try {
hasCreate = ((CMManager) IoTDB.metaManager).createTimeseries(plan);
- } catch (IllegalPathException e) {
+ } catch (IllegalPathException | CheckConsistencyException e) {
return StatusUtils.getStatus(StatusUtils.EXECUTE_STATEMENT_ERROR,
e.getMessage());
}
if (hasCreate) {