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/01 07:52:57 UTC

[iotdb] 01/01: check reasons when insert tablets

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 92b36c34e1811d16eb213de101300474c5859dab
Author: Ring-k <yu...@hotmail.com>
AuthorDate: Sun Nov 1 15:51:48 2020 +0800

    check reasons when insert tablets
---
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  | 66 ++++++++++++----------
 1 file changed, 36 insertions(+), 30 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..d78f9a6 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(
@@ -933,28 +936,8 @@ public class PlanExecutor implements IPlanExecutor {
       }
 
       StorageEngine.getInstance().insert(insertRowPlan);
-      if (insertRowPlan.getFailedMeasurements() != null) {
-        // check if all path not exist exceptions
-        List<String> failedPaths = insertRowPlan.getFailedMeasurements();
-        List<Exception> exceptions = insertRowPlan.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 + insertRowPlan.getFailedMeasurements());
-        }
-      }
+      checkFailedReasons(insertRowPlan.getFailedMeasurements(),
+          insertRowPlan.getFailedExceptions());
     } catch (StorageEngineException | MetadataException e) {
       throw new QueryProcessException(e);
     }
@@ -967,15 +950,37 @@ public class PlanExecutor implements IPlanExecutor {
           .setMeasurementMNodes(new MeasurementMNode[insertTabletPlan.getMeasurements().length]);
       getSeriesSchemas(insertTabletPlan);
       StorageEngine.getInstance().insertTablet(insertTabletPlan);
-      if (insertTabletPlan.getFailedMeasurements() != null) {
-        throw new StorageEngineException(
-            INSERT_MEASUREMENTS_FAILED_MESSAGE + insertTabletPlan.getFailedMeasurements());
-      }
+      checkFailedReasons(insertTabletPlan.getFailedMeasurements(),
+          insertTabletPlan.getFailedExceptions());
     } catch (StorageEngineException | MetadataException e) {
       throw new QueryProcessException(e);
     }
   }
 
+  private void checkFailedReasons(List<String> failedMeasurements, List<Exception> failedExceptions)
+      throws PathNotExistException, StorageEngineException {
+    if (failedMeasurements != null) {
+      // check if all path not exist exceptions
+      boolean isPathNotExistException = true;
+      for (Exception e : failedExceptions) {
+        Throwable curException = e;
+        while (curException.getCause() != null) {
+          curException = curException.getCause();
+        }
+        if (!(curException instanceof PathNotExistException)) {
+          isPathNotExistException = false;
+          break;
+        }
+      }
+      if (isPathNotExistException) {
+        throw new PathNotExistException(failedMeasurements);
+      } else {
+        throw new StorageEngineException(
+            INSERT_MEASUREMENTS_FAILED_MESSAGE + failedMeasurements);
+      }
+    }
+  }
+
   private boolean operateAuthor(AuthorPlan author) throws QueryProcessException {
     AuthorOperator.AuthorType authorType = author.getAuthorType();
     String userName = author.getUserName();
@@ -1058,7 +1063,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++) {