You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by yu...@apache.org on 2020/11/02 01:33:45 UTC
[iotdb] 01/01: insert tablet and check exception
This is an automated email from the ASF dual-hosted git repository.
yuyuankang pushed a commit to branch kyy
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 204e356a5984d11da70901ccfa224efc1a8c3fa3
Author: Ring-k <yu...@hotmail.com>
AuthorDate: Mon Nov 2 09:32:57 2020 +0800
insert tablet and check exception
---
.../apache/iotdb/db/qp/executor/PlanExecutor.java | 34 ++++++++++++++++++----
1 file changed, 28 insertions(+), 6 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
index 606ad35..ca85b78 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
@@ -324,7 +324,8 @@ public class PlanExecutor implements IPlanExecutor {
}
}
- public static void flushSpecifiedStorageGroups(FlushPlan plan) throws StorageGroupNotSetException {
+ public static void flushSpecifiedStorageGroups(FlushPlan plan)
+ throws StorageGroupNotSetException {
Map<PartialPath, List<Pair<Long, Boolean>>> storageGroupMap = plan
.getStorageGroupPartitionIds();
for (Entry<PartialPath, List<Pair<Long, Boolean>>> entry : storageGroupMap.entrySet()) {
@@ -734,7 +735,8 @@ public class PlanExecutor implements IPlanExecutor {
@Override
public void delete(DeletePlan deletePlan) throws QueryProcessException {
for (PartialPath path : deletePlan.getPaths()) {
- delete(path, deletePlan.getDeleteStartTime(), deletePlan.getDeleteEndTime(), deletePlan.getIndex());
+ delete(path, deletePlan.getDeleteStartTime(), deletePlan.getDeleteEndTime(),
+ deletePlan.getIndex());
}
}
@@ -900,7 +902,8 @@ public class PlanExecutor implements IPlanExecutor {
}
@Override
- public void delete(PartialPath path, long startTime, long endTime, long planIndex) throws QueryProcessException {
+ public void delete(PartialPath path, long startTime, long endTime, long planIndex)
+ throws QueryProcessException {
try {
if (!IoTDB.metaManager.isPathExist(path)) {
throw new QueryProcessException(
@@ -968,8 +971,26 @@ public class PlanExecutor implements IPlanExecutor {
getSeriesSchemas(insertTabletPlan);
StorageEngine.getInstance().insertTablet(insertTabletPlan);
if (insertTabletPlan.getFailedMeasurements() != null) {
- throw new StorageEngineException(
- INSERT_MEASUREMENTS_FAILED_MESSAGE + insertTabletPlan.getFailedMeasurements());
+ // check if all path not exist exceptions
+ List<String> failedPaths = insertTabletPlan.getFailedMeasurements();
+ List<Exception> exceptions = insertTabletPlan.getFailedExceptions();
+ boolean isPathNotExistException = true;
+ for (Exception e : exceptions) {
+ Throwable curException = e;
+ while (curException.getCause() != null) {
+ curException = curException.getCause();
+ }
+ if (!(curException instanceof PathNotExistException)) {
+ isPathNotExistException = false;
+ break;
+ }
+ }
+ if (isPathNotExistException) {
+ throw new PathNotExistException(failedPaths);
+ } else {
+ throw new StorageEngineException(
+ INSERT_MEASUREMENTS_FAILED_MESSAGE + insertTabletPlan.getFailedMeasurements());
+ }
}
} catch (StorageEngineException | MetadataException e) {
throw new QueryProcessException(e);
@@ -1058,7 +1079,8 @@ public class PlanExecutor implements IPlanExecutor {
return true;
}
- private boolean createMultiTimeSeries(CreateMultiTimeSeriesPlan createMultiTimeSeriesPlan) throws QueryProcessException {
+ private boolean createMultiTimeSeries(CreateMultiTimeSeriesPlan createMultiTimeSeriesPlan)
+ throws QueryProcessException {
TSStatus[] results = null;
boolean hasFailed = false;
for (int i = 0; i < createMultiTimeSeriesPlan.getPaths().size(); i++) {