You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2021/07/10 07:40:33 UTC
[iotdb] branch rel/0.12 updated: Fix cluster auto create schema bug
when retry locally (#3532)
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch rel/0.12
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/0.12 by this push:
new b741f0a Fix cluster auto create schema bug when retry locally (#3532)
b741f0a is described below
commit b741f0a4826c6204b9662faa1929e57bb5fb7a2c
Author: Potato <TX...@gmail.com>
AuthorDate: Sat Jul 10 15:40:03 2021 +0800
Fix cluster auto create schema bug when retry locally (#3532)
---
.../apache/iotdb/cluster/coordinator/Coordinator.java | 6 +++---
.../org/apache/iotdb/cluster/metadata/CMManager.java | 6 +++++-
.../iotdb/cluster/server/MetaClusterServer.java | 1 +
.../java/org/apache/iotdb/db/metadata/MManager.java | 19 ++++++++++++++-----
.../main/java/org/apache/iotdb/db/service/IoTDB.java | 9 +++++++++
.../main/java/org/apache/iotdb/session/Session.java | 2 +-
6 files changed, 33 insertions(+), 10 deletions(-)
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/coordinator/Coordinator.java b/cluster/src/main/java/org/apache/iotdb/cluster/coordinator/Coordinator.java
index aa168d5..11f99e8 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/coordinator/Coordinator.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/coordinator/Coordinator.java
@@ -385,10 +385,10 @@ public class Coordinator {
private TSStatus createTimeseriesForFailedInsertion(
Map<PhysicalPlan, PartitionGroup> planGroupMap, InsertPlan plan) {
- // try to create timeseries
- if (plan.getFailedMeasurements() != null) {
- plan.getPlanFromFailed();
+ for (PhysicalPlan subPlan : planGroupMap.keySet()) {
+ ((InsertPlan) subPlan).recoverFromFailure();
}
+ // try to create timeseries
boolean hasCreate;
try {
hasCreate = ((CMManager) IoTDB.metaManager).createTimeseries(plan);
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 43eeeb6..319159a 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
@@ -732,7 +732,11 @@ public class CMManager extends MManager {
}
if (result.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()
&& result.getCode() != TSStatusCode.PATH_ALREADY_EXIST_ERROR.getStatusCode()
- && result.getCode() != TSStatusCode.NEED_REDIRECTION.getStatusCode()) {
+ && result.getCode() != TSStatusCode.NEED_REDIRECTION.getStatusCode()
+ && !(result.getCode() == TSStatusCode.MULTIPLE_ERROR.getStatusCode()
+ && result.getSubStatus().stream()
+ .allMatch(
+ s -> s.getCode() == TSStatusCode.PATH_ALREADY_EXIST_ERROR.getStatusCode()))) {
logger.error(
"{} failed to execute create timeseries {}: {}",
metaGroupMember.getThisNode(),
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/MetaClusterServer.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/MetaClusterServer.java
index 12e286f..abb8020 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/MetaClusterServer.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/MetaClusterServer.java
@@ -108,6 +108,7 @@ public class MetaClusterServer extends RaftServer
metaHeartbeatServer.start();
ioTDB = new IoTDB();
IoTDB.setMetaManager(CMManager.getInstance());
+ IoTDB.setClusterMode();
((CMManager) IoTDB.metaManager).setMetaGroupMember(member);
((CMManager) IoTDB.metaManager).setCoordinator(coordinator);
ioTDB.active();
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
index ba434bc..072ecdd 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
@@ -64,6 +64,7 @@ import org.apache.iotdb.db.query.context.QueryContext;
import org.apache.iotdb.db.query.dataset.ShowDevicesResult;
import org.apache.iotdb.db.query.dataset.ShowTimeSeriesResult;
import org.apache.iotdb.db.rescon.MemTableManager;
+import org.apache.iotdb.db.service.IoTDB;
import org.apache.iotdb.db.utils.RandomDeleteCache;
import org.apache.iotdb.db.utils.SchemaUtils;
import org.apache.iotdb.db.utils.TestOnly;
@@ -1937,11 +1938,19 @@ public class MManager {
measurementList[i] = measurementMNode.getName();
} catch (MetadataException e) {
- logger.warn(
- "meet error when check {}.{}, message: {}",
- deviceId,
- measurementList[i],
- e.getMessage());
+ if (IoTDB.isClusterMode()) {
+ logger.debug(
+ "meet error when check {}.{}, message: {}",
+ deviceId,
+ measurementList[i],
+ e.getMessage());
+ } else {
+ logger.warn(
+ "meet error when check {}.{}, message: {}",
+ deviceId,
+ measurementList[i],
+ e.getMessage());
+ }
if (config.isEnablePartialInsert()) {
// mark failed measurement
plan.markFailedMeasurementInsertion(i, e);
diff --git a/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java b/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java
index 6a516db..65f6ea5 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java
@@ -53,6 +53,7 @@ public class IoTDB implements IoTDBMBean {
String.format("%s:%s=%s", IoTDBConstant.IOTDB_PACKAGE, IoTDBConstant.JMX_TYPE, "IoTDB");
private RegisterManager registerManager = new RegisterManager();
public static MManager metaManager = MManager.getInstance();
+ private static boolean clusterMode = false;
public static IoTDB getInstance() {
return IoTDBHolder.INSTANCE;
@@ -72,6 +73,14 @@ public class IoTDB implements IoTDBMBean {
IoTDB.metaManager = metaManager;
}
+ public static void setClusterMode() {
+ IoTDB.clusterMode = true;
+ }
+
+ public static boolean isClusterMode() {
+ return IoTDB.clusterMode;
+ }
+
public void active() {
StartupChecks checks = new StartupChecks().withDefaultTest();
try {
diff --git a/session/src/main/java/org/apache/iotdb/session/Session.java b/session/src/main/java/org/apache/iotdb/session/Session.java
index 0e0ef99..66726e9 100644
--- a/session/src/main/java/org/apache/iotdb/session/Session.java
+++ b/session/src/main/java/org/apache/iotdb/session/Session.java
@@ -628,7 +628,7 @@ public class Session {
private SessionDataSet executeStatementMayRedirect(String sql, long timeoutInMs)
throws StatementExecutionException, IoTDBConnectionException {
try {
- logger.info("{} execute sql {}", defaultSessionConnection.getEndPoint(), sql);
+ logger.debug("{} execute sql {}", defaultSessionConnection.getEndPoint(), sql);
return defaultSessionConnection.executeQueryStatement(sql, timeoutInMs);
} catch (RedirectException e) {
handleQueryRedirection(e.getEndPoint());