You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by wa...@apache.org on 2021/07/20 03:33:46 UTC
[iotdb] branch master updated: [IOTDB-1456] Fix Error occurred
while executing delete timeseries statement (#3474)
This is an automated email from the ASF dual-hosted git repository.
wangchao316 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 af567ee [IOTDB-1456] Fix Error occurred while executing delete timeseries statement (#3474)
af567ee is described below
commit af567eeb1973f594ab44d998a9ac23485522c896
Author: cmlmakahts <82...@users.noreply.github.com>
AuthorDate: Tue Jul 20 11:33:24 2021 +0800
[IOTDB-1456] Fix Error occurred while executing delete timeseries statement (#3474)
[IOTDB-1456] Fix Error occurred while executing delete timeseries statement (#3474)
---
.../apache/iotdb/cluster/log/applier/BaseApplier.java | 17 ++++++++++++++++-
.../src/test/java/org/apache/iotdb/db/sql/Cases.java | 18 ++++++++++++++++++
2 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/BaseApplier.java b/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/BaseApplier.java
index ed98803..44b1580 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/BaseApplier.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/BaseApplier.java
@@ -38,6 +38,7 @@ import org.apache.iotdb.db.qp.executor.PlanExecutor;
import org.apache.iotdb.db.qp.physical.BatchPlan;
import org.apache.iotdb.db.qp.physical.PhysicalPlan;
import org.apache.iotdb.db.qp.physical.crud.InsertPlan;
+import org.apache.iotdb.db.qp.physical.sys.DeleteTimeSeriesPlan;
import org.apache.iotdb.db.utils.SchemaUtils;
import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.iotdb.service.rpc.thrift.TSStatus;
@@ -94,6 +95,7 @@ abstract class BaseApplier implements LogApplier {
private void handleBatchProcessException(BatchProcessException e, PhysicalPlan plan)
throws QueryProcessException, StorageEngineException, StorageGroupNotSetException {
TSStatus[] failingStatus = e.getFailingStatus();
+ boolean needThrow = false;
for (int i = 0; i < failingStatus.length; i++) {
TSStatus status = failingStatus[i];
// skip succeeded plans in later execution
@@ -102,6 +104,16 @@ abstract class BaseApplier implements LogApplier {
&& plan instanceof BatchPlan) {
((BatchPlan) plan).setIsExecuted(i);
}
+
+ if (plan instanceof DeleteTimeSeriesPlan) {
+ if (status != null && status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
+ if (status.getCode() == TSStatusCode.TIMESERIES_NOT_EXIST.getStatusCode()) {
+ logger.info("{} doesn't exist, it may has been deleted.", plan.getPaths().get(i));
+ } else {
+ needThrow = true;
+ }
+ }
+ }
}
boolean needRetry = false;
for (int i = 0, failingStatusLength = failingStatus.length; i < failingStatusLength; i++) {
@@ -118,7 +130,10 @@ abstract class BaseApplier implements LogApplier {
executeAfterSync(plan);
return;
}
- throw e;
+
+ if (!(plan instanceof DeleteTimeSeriesPlan) || needThrow) {
+ throw e;
+ }
}
private void executeAfterSync(PhysicalPlan plan)
diff --git a/testcontainer/src/test/java/org/apache/iotdb/db/sql/Cases.java b/testcontainer/src/test/java/org/apache/iotdb/db/sql/Cases.java
index 9a871c6..965fad6 100644
--- a/testcontainer/src/test/java/org/apache/iotdb/db/sql/Cases.java
+++ b/testcontainer/src/test/java/org/apache/iotdb/db/sql/Cases.java
@@ -25,6 +25,7 @@ import org.apache.iotdb.db.qp.physical.sys.CreateFunctionPlan;
import org.apache.iotdb.db.qp.physical.sys.DropFunctionPlan;
import org.apache.iotdb.db.qp.physical.sys.ShowFunctionsPlan;
import org.apache.iotdb.db.qp.physical.sys.ShowPlan;
+import org.apache.iotdb.rpc.BatchExecutionException;
import org.apache.iotdb.rpc.IoTDBConnectionException;
import org.apache.iotdb.rpc.StatementExecutionException;
import org.apache.iotdb.session.Session;
@@ -142,6 +143,23 @@ public abstract class Cases {
resultSet.close();
}
+ // test https://issues.apache.org/jira/browse/IOTDB-1457
+ initDataArray =
+ new String[] {
+ "INSERT INTO root.ln.wf011.wt0110(timestamp, temperature) values(250, 10.0)",
+ "INSERT INTO root.ln.wf011.wt0111(timestamp, temperature) values(300, 20.0)",
+ "INSERT INTO root.ln.wf011.wt0112(timestamp, temperature) values(350, 25.0)"
+ };
+
+ for (String initData : initDataArray) {
+ writeStatement.execute(initData);
+ }
+ try {
+ session.executeNonQueryStatement(" delete from root.ln.wf011.*");
+ } catch (StatementExecutionException | IoTDBConnectionException e) {
+ Assert.assertFalse(e instanceof BatchExecutionException);
+ }
+
// test dictionary encoding
writeStatement.execute(
"create timeseries root.ln.wf01.wt02.city WITH DATATYPE=TEXT, ENCODING=DICTIONARY");