You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2020/12/21 05:25:13 UTC

[iotdb] branch UserException created (now 34eee26)

This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a change to branch UserException
in repository https://gitbox.apache.org/repos/asf/iotdb.git.


      at 34eee26  fix something

This branch includes the following new commits:

     new a9b925f  init
     new 34eee26  fix something

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[iotdb] 02/02: fix something

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch UserException
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 34eee265aecb45b9405fb0bb90f8de34d3b48eaa
Author: JackieTien97 <Ja...@foxmail.com>
AuthorDate: Mon Dec 21 13:24:42 2020 +0800

    fix something
---
 .../iotdb/cluster/log/applier/BaseApplier.java     |  7 ++--
 .../iotdb/cluster/log/applier/DataLogApplier.java  |  3 +-
 .../iotdb/cluster/log/applier/MetaLogApplier.java  |  3 +-
 .../cluster/server/member/DataGroupMember.java     |  5 +--
 .../cluster/server/member/MetaGroupMember.java     |  4 +++
 .../org/apache/iotdb/cluster/common/IoTDBTest.java |  3 +-
 .../iotdb/cluster/common/TestAsyncDataClient.java  |  3 +-
 .../iotdb/cluster/common/TestLogApplier.java       |  4 +--
 .../org/apache/iotdb/cluster/common/TestUtils.java |  3 +-
 .../cluster/server/member/DataGroupMemberTest.java | 11 ++++---
 .../cluster/server/member/MetaGroupMemberTest.java | 11 ++++---
 .../org/apache/iotdb/db/engine/StorageEngine.java  | 14 ++++----
 .../apache/iotdb/db/exception/UserException.java   | 38 ++++++++++++++++++++++
 .../org/apache/iotdb/db/mqtt/PublishHandler.java   |  4 +--
 .../apache/iotdb/db/qp/executor/IPlanExecutor.java |  3 +-
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  | 23 ++++++++-----
 .../org/apache/iotdb/db/service/TSServiceImpl.java |  6 +++-
 .../java/org/apache/iotdb/rpc/TSStatusCode.java    |  1 +
 18 files changed, 104 insertions(+), 42 deletions(-)

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 75cef69..a641b30 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
@@ -28,6 +28,7 @@ import org.apache.iotdb.cluster.rpc.thrift.Node;
 import org.apache.iotdb.cluster.server.member.DataGroupMember;
 import org.apache.iotdb.cluster.server.member.MetaGroupMember;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.exception.UserException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.metadata.PathNotExistException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
@@ -64,7 +65,7 @@ abstract class BaseApplier implements LogApplier {
    * @throws StorageEngineException
    */
   void applyPhysicalPlan(PhysicalPlan plan, DataGroupMember dataGroupMember)
-      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException {
+      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, UserException {
     if (plan instanceof InsertPlan) {
       processPlanWithTolerance((InsertPlan) plan, dataGroupMember);
     } else if (plan != null && !plan.isQuery()) {
@@ -85,7 +86,7 @@ abstract class BaseApplier implements LogApplier {
   }
 
   private void executeAfterSync(PhysicalPlan plan)
-      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException {
+      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, UserException {
     try {
       metaGroupMember.syncLeaderWithConsistencyCheck(true);
     } catch (CheckConsistencyException ce) {
@@ -103,7 +104,7 @@ abstract class BaseApplier implements LogApplier {
    * @throws StorageEngineException
    */
   private void processPlanWithTolerance(InsertPlan plan, DataGroupMember dataGroupMember)
-      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException {
+      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, UserException {
     try {
       getQueryExecutor().processNonQuery(plan);
     } catch (QueryProcessException | StorageGroupNotSetException | StorageEngineException e) {
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/DataLogApplier.java b/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/DataLogApplier.java
index 8ce84b5..ecb1db7 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/DataLogApplier.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/DataLogApplier.java
@@ -30,6 +30,7 @@ import org.apache.iotdb.cluster.server.member.MetaGroupMember;
 import org.apache.iotdb.cluster.utils.IOUtils;
 import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.exception.UserException;
 import org.apache.iotdb.db.exception.metadata.PathNotExistException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
@@ -89,7 +90,7 @@ public class DataLogApplier extends BaseApplier {
   }
 
   private void applyInsert(InsertPlan plan)
-      throws StorageGroupNotSetException, QueryProcessException, StorageEngineException {
+      throws StorageGroupNotSetException, QueryProcessException, StorageEngineException, UserException {
     // check if the corresponding slot is being pulled
     PartialPath sg;
     long time = plan.getMinTime();
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/MetaLogApplier.java b/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/MetaLogApplier.java
index d7dd5f9..0e13dc8 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/MetaLogApplier.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/log/applier/MetaLogApplier.java
@@ -26,6 +26,7 @@ import org.apache.iotdb.cluster.log.logtypes.RemoveNodeLog;
 import org.apache.iotdb.cluster.rpc.thrift.Node;
 import org.apache.iotdb.cluster.server.member.MetaGroupMember;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.exception.UserException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.slf4j.Logger;
@@ -60,7 +61,7 @@ public class MetaLogApplier extends BaseApplier {
       } else {
         logger.error("Unsupported log: {} {}", log.getClass().getName(), log);
       }
-    } catch (StorageEngineException | StorageGroupNotSetException | QueryProcessException e) {
+    } catch (StorageEngineException | StorageGroupNotSetException | QueryProcessException | UserException e) {
       logger.debug("Exception occurred when executing {}", log, e);
       log.setException(e);
     } finally {
diff --git a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java
index de200cf..b136a3e 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/DataGroupMember.java
@@ -89,6 +89,7 @@ import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.engine.storagegroup.StorageGroupProcessor.TimePartitionFilter;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.exception.UserException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
 import org.apache.iotdb.db.metadata.PartialPath;
@@ -641,8 +642,8 @@ public class DataGroupMember extends RaftMember {
     try {
       PlanExecutor.flushSpecifiedStorageGroups(flushPlan);
       return true;
-    } catch (StorageGroupNotSetException e) {
-      logger.error("Some SGs are missing while flushing", e);
+    } catch (UserException e) {
+      logger.warn("Some SGs are missing while flushing {}", e.getMessage());
     }
     return false;
   }
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 863314f..e8891ab 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
@@ -126,6 +126,7 @@ import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.exception.StartupException;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.exception.UserException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.metadata.PathNotExistException;
@@ -1352,6 +1353,9 @@ public class MetaGroupMember extends RaftMember {
     boolean execRet;
     try {
       execRet = getLocalExecutor().processNonQuery(plan);
+    } catch (UserException e) {
+      logger.warn("meet error while processing non-query {}", e.getMessage());
+      return RpcUtils.getStatus(e.getErrorCode(), e.getMessage());
     } catch (QueryProcessException e) {
       if (e.getErrorCode() != TSStatusCode.INTERNAL_SERVER_ERROR.getStatusCode()) {
         logger.debug("meet error while processing non-query. ", e);
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/common/IoTDBTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/common/IoTDBTest.java
index a6d7b6d..db45b43 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/common/IoTDBTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/common/IoTDBTest.java
@@ -29,6 +29,7 @@ import org.apache.iotdb.db.conf.IoTDBConstant;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.exception.StartupException;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.exception.UserException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
@@ -141,7 +142,7 @@ public abstract class IoTDBTest {
           schema.getMeasurementId()),
           schema.getType(), schema.getEncodingType(), schema.getCompressor(), schema.getProps(),
           Collections.emptyMap(), Collections.emptyMap(), null));
-    } catch (QueryProcessException | StorageGroupNotSetException | StorageEngineException | IllegalPathException e) {
+    } catch (QueryProcessException | StorageGroupNotSetException | StorageEngineException | IllegalPathException | UserException e) {
       // ignore
     }
   }
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/common/TestAsyncDataClient.java b/cluster/src/test/java/org/apache/iotdb/cluster/common/TestAsyncDataClient.java
index 118f7e5..472fc41 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/common/TestAsyncDataClient.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/common/TestAsyncDataClient.java
@@ -42,6 +42,7 @@ import org.apache.iotdb.cluster.server.service.DataAsyncService;
 import org.apache.iotdb.cluster.utils.IOUtils;
 import org.apache.iotdb.cluster.utils.StatusUtils;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.exception.UserException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
@@ -110,7 +111,7 @@ public class TestAsyncDataClient extends AsyncDataClient {
         PhysicalPlan plan = PhysicalPlan.Factory.create(request.planBytes);
         planExecutor.processNonQuery(plan);
         resultHandler.onComplete(StatusUtils.OK);
-      } catch (IOException | QueryProcessException | StorageGroupNotSetException | StorageEngineException | IllegalPathException e) {
+      } catch (IOException | QueryProcessException | StorageGroupNotSetException | StorageEngineException | IllegalPathException | UserException e) {
         resultHandler.onError(e);
       }
     }).start();
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/common/TestLogApplier.java b/cluster/src/test/java/org/apache/iotdb/cluster/common/TestLogApplier.java
index fe90c0a..00920d3 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/common/TestLogApplier.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/common/TestLogApplier.java
@@ -24,8 +24,8 @@ import org.apache.iotdb.cluster.log.LogApplier;
 import org.apache.iotdb.cluster.log.logtypes.CloseFileLog;
 import org.apache.iotdb.cluster.log.logtypes.PhysicalPlanLog;
 import org.apache.iotdb.db.engine.StorageEngine;
+import org.apache.iotdb.db.exception.UserException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
-import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.metadata.PartialPath;
 import org.apache.iotdb.db.qp.executor.PlanExecutor;
@@ -47,7 +47,7 @@ public class TestLogApplier implements LogApplier {
               .closeStorageGroupProcessor(new PartialPath(closeFileLog.getStorageGroupName()),
                   closeFileLog.getPartitionId(),
                   closeFileLog.isSeq(), false);
-        } catch (StorageGroupNotSetException | IllegalPathException e) {
+        } catch (UserException | IllegalPathException e) {
           throw new QueryProcessException(e);
         }
       }
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/common/TestUtils.java b/cluster/src/test/java/org/apache/iotdb/cluster/common/TestUtils.java
index 771112b..acacd95 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/common/TestUtils.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/common/TestUtils.java
@@ -38,6 +38,7 @@ import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.exception.UserException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
@@ -269,7 +270,7 @@ public class TestUtils {
   }
 
   public static void prepareData()
-      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, IllegalPathException {
+      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, IllegalPathException, UserException {
     InsertRowPlan insertPlan = new InsertRowPlan();
     // data for raw data query and aggregation
     // 10 devices (storage groups)
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/server/member/DataGroupMemberTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/server/member/DataGroupMemberTest.java
index 96dc257..8876ae2 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/server/member/DataGroupMemberTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/server/member/DataGroupMemberTest.java
@@ -86,6 +86,7 @@ import org.apache.iotdb.db.engine.modification.Deletion;
 import org.apache.iotdb.db.engine.storagegroup.StorageGroupProcessor;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.exception.UserException;
 import org.apache.iotdb.db.exception.WriteProcessException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
@@ -591,7 +592,7 @@ public class DataGroupMemberTest extends MemberTest {
 
   @Test
   public void testQuerySingleSeries()
-      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, IllegalPathException {
+      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, IllegalPathException, UserException {
     System.out.println("Start testQuerySingleSeries()");
     InsertRowPlan insertPlan = new InsertRowPlan();
     insertPlan.setDeviceId(new PartialPath(TestUtils.getTestSg(0)));
@@ -649,7 +650,7 @@ public class DataGroupMemberTest extends MemberTest {
 
   @Test
   public void testQuerySingleSeriesWithValueFilter()
-      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, IllegalPathException {
+      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, IllegalPathException, UserException {
     System.out.println("Start testQuerySingleSeriesWithValueFilter()");
     InsertRowPlan insertPlan = new InsertRowPlan();
     insertPlan.setDeviceId(new PartialPath(TestUtils.getTestSg(0)));
@@ -707,7 +708,7 @@ public class DataGroupMemberTest extends MemberTest {
 
   @Test
   public void testQuerySingleSeriesByTimestamp()
-      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, IllegalPathException {
+      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, IllegalPathException, UserException {
     System.out.println("Start testQuerySingleSeriesByTimestamp()");
     InsertRowPlan insertPlan = new InsertRowPlan();
     insertPlan.setDeviceId(new PartialPath(TestUtils.getTestSg(0)));
@@ -763,7 +764,7 @@ public class DataGroupMemberTest extends MemberTest {
 
   @Test
   public void testQuerySingleSeriesByTimestampWithValueFilter()
-      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, IllegalPathException {
+      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, IllegalPathException, UserException {
     System.out.println("Start testQuerySingleSeriesByTimestampWithValueFilter()");
     InsertRowPlan insertPlan = new InsertRowPlan();
     insertPlan.setDeviceId(new PartialPath(TestUtils.getTestSg(0)));
@@ -951,7 +952,7 @@ public class DataGroupMemberTest extends MemberTest {
 
   @Test
   public void testGroupBy()
-      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, IllegalPathException {
+      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, IllegalPathException, UserException {
     System.out.println("Start testGroupBy()");
     TestUtils.prepareData();
 
diff --git a/cluster/src/test/java/org/apache/iotdb/cluster/server/member/MetaGroupMemberTest.java b/cluster/src/test/java/org/apache/iotdb/cluster/server/member/MetaGroupMemberTest.java
index 32b0b30..94c4c31 100644
--- a/cluster/src/test/java/org/apache/iotdb/cluster/server/member/MetaGroupMemberTest.java
+++ b/cluster/src/test/java/org/apache/iotdb/cluster/server/member/MetaGroupMemberTest.java
@@ -101,6 +101,7 @@ import org.apache.iotdb.db.auth.entity.User;
 import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.engine.storagegroup.StorageGroupProcessor;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.exception.UserException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
@@ -194,7 +195,7 @@ public class MetaGroupMemberTest extends MemberTest {
         try {
           planExecutor.processNonQuery(plan);
           return StatusUtils.OK;
-        } catch (QueryProcessException | StorageGroupNotSetException | StorageEngineException e) {
+        } catch (QueryProcessException | StorageGroupNotSetException | StorageEngineException | UserException e) {
           return StatusUtils.getStatus(StatusUtils.EXECUTE_STATEMENT_ERROR, e.getMessage());
         }
       }
@@ -411,7 +412,7 @@ public class MetaGroupMemberTest extends MemberTest {
                   PhysicalPlan plan = PhysicalPlan.Factory.create(request.planBytes);
                   planExecutor.processNonQuery(plan);
                   resultHandler.onComplete(StatusUtils.OK);
-                } catch (IOException | QueryProcessException | StorageGroupNotSetException | StorageEngineException | IllegalPathException e) {
+                } catch (IOException | QueryProcessException | StorageGroupNotSetException | StorageEngineException | IllegalPathException | UserException e) {
                   resultHandler.onError(e);
                 }
               }).start();
@@ -482,7 +483,7 @@ public class MetaGroupMemberTest extends MemberTest {
 
   @Test
   public void testClosePartition()
-      throws QueryProcessException, StorageEngineException, StorageGroupNotSetException, IllegalPathException {
+      throws QueryProcessException, StorageEngineException, StorageGroupNotSetException, IllegalPathException, UserException {
     System.out.println("Start testClosePartition()");
     // the operation is accepted
     dummyResponse.set(Response.RESPONSE_AGREE);
@@ -745,7 +746,7 @@ public class MetaGroupMemberTest extends MemberTest {
 
   @Test
   public void testGetReaderByTimestamp()
-      throws QueryProcessException, StorageEngineException, IOException, StorageGroupNotSetException, IllegalPathException {
+      throws QueryProcessException, StorageEngineException, IOException, StorageGroupNotSetException, IllegalPathException, UserException {
     System.out.println("Start testGetReaderByTimestamp()");
     RaftServer.setReadOperationTimeoutMS(10000);
     mockDataClusterServer = true;
@@ -793,7 +794,7 @@ public class MetaGroupMemberTest extends MemberTest {
 
   @Test
   public void testGetReader()
-      throws QueryProcessException, StorageEngineException, IOException, StorageGroupNotSetException, IllegalPathException, EmptyIntervalException {
+      throws QueryProcessException, StorageEngineException, IOException, StorageGroupNotSetException, IllegalPathException, EmptyIntervalException, UserException {
     System.out.println("Start testGetReader()");
     mockDataClusterServer = true;
     InsertRowPlan insertPlan = new InsertRowPlan();
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
index 781836f..dfbda13 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
@@ -59,11 +59,11 @@ import org.apache.iotdb.db.exception.ShutdownException;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.StorageGroupProcessorException;
 import org.apache.iotdb.db.exception.TsFileProcessorException;
+import org.apache.iotdb.db.exception.UserException;
 import org.apache.iotdb.db.exception.WriteProcessException;
 import org.apache.iotdb.db.exception.WriteProcessRejectException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
-import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.exception.runtime.StorageEngineFailureException;
 import org.apache.iotdb.db.metadata.PartialPath;
@@ -497,15 +497,14 @@ public class StorageEngine implements IService {
    * @param partitionId      the partition id
    * @param isSeq            is sequence tsfile or unsequence tsfile
    * @param isSync           close tsfile synchronously or asynchronously
-   * @throws StorageGroupNotSetException
    */
   public void closeStorageGroupProcessor(PartialPath storageGroupPath, long partitionId,
       boolean isSeq,
-      boolean isSync)
-      throws StorageGroupNotSetException {
+      boolean isSync) throws UserException {
     StorageGroupProcessor processor = processorMap.get(storageGroupPath);
     if (processor == null) {
-      throw new StorageGroupNotSetException(storageGroupPath.getFullPath());
+      throw new UserException(String.format("Storage group is not set for current seriesPath: [%s]",
+          storageGroupPath.getFullPath()), TSStatusCode.METADATA_ERROR.getStatusCode());
     }
 
     logger.info("async closing sg processor is called for closing {}, seq = {}, partitionId = {}",
@@ -871,8 +870,9 @@ public class StorageEngine implements IService {
       try {
         TimeUnit.MILLISECONDS.sleep(config.getCheckPeriodWhenInsertBlocked());
         if (System.currentTimeMillis() - startTime > config.getMaxWaitingTimeWhenInsertBlocked()) {
-          throw new WriteProcessRejectException("System rejected over " + config.getMaxWaitingTimeWhenInsertBlocked() +
-              "ms");
+          throw new WriteProcessRejectException(
+              "System rejected over " + config.getMaxWaitingTimeWhenInsertBlocked() +
+                  "ms");
         }
       } catch (InterruptedException e) {
         Thread.currentThread().interrupt();
diff --git a/server/src/main/java/org/apache/iotdb/db/exception/UserException.java b/server/src/main/java/org/apache/iotdb/db/exception/UserException.java
new file mode 100644
index 0000000..9abdef2
--- /dev/null
+++ b/server/src/main/java/org/apache/iotdb/db/exception/UserException.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.iotdb.db.exception;
+
+/**
+ * This kind of exception is caused by users' wrong sql, and server needn't print the full stack of
+ * the exception
+ */
+public class UserException extends IoTDBException{
+
+  public UserException(String message, int errorCode) {
+    super(message, errorCode);
+  }
+
+  public UserException(String message, Throwable cause, int errorCode) {
+    super(message, cause, errorCode);
+  }
+
+  public UserException(Throwable cause, int errorCode) {
+    super(cause, errorCode);
+  }
+}
diff --git a/server/src/main/java/org/apache/iotdb/db/mqtt/PublishHandler.java b/server/src/main/java/org/apache/iotdb/db/mqtt/PublishHandler.java
index 87a2adf..d445c40 100644
--- a/server/src/main/java/org/apache/iotdb/db/mqtt/PublishHandler.java
+++ b/server/src/main/java/org/apache/iotdb/db/mqtt/PublishHandler.java
@@ -25,7 +25,7 @@ import java.util.List;
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.exception.StorageEngineException;
-import org.apache.iotdb.db.exception.metadata.IllegalPathException;
+import org.apache.iotdb.db.exception.UserException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.metadata.PartialPath;
@@ -109,7 +109,7 @@ public class PublishHandler extends AbstractInterceptHandler {
     }
 
     private boolean executeNonQuery(PhysicalPlan plan)
-        throws QueryProcessException, StorageGroupNotSetException, StorageEngineException {
+        throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, UserException {
         if (IoTDBDescriptor.getInstance().getConfig().isReadOnly()) {
             throw new QueryProcessException(
                     "Current system mode is read-only, does not support non-query operation");
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/executor/IPlanExecutor.java b/server/src/main/java/org/apache/iotdb/db/qp/executor/IPlanExecutor.java
index 5febac6..f9e6495 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/executor/IPlanExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/executor/IPlanExecutor.java
@@ -22,6 +22,7 @@ import java.io.IOException;
 import java.sql.SQLException;
 import org.apache.iotdb.db.exception.BatchProcessException;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.exception.UserException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
@@ -54,7 +55,7 @@ public interface IPlanExecutor {
    * @param plan Physical Non-Query Plan
    */
   boolean processNonQuery(PhysicalPlan plan)
-      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException;
+      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, UserException;
 
   /**
    * execute update command and return whether the operator is successful.
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 68497de..978190c 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
@@ -69,6 +69,7 @@ import org.apache.iotdb.db.engine.storagegroup.StorageGroupProcessor.TimePartiti
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.exception.BatchProcessException;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.exception.UserException;
 import org.apache.iotdb.db.exception.metadata.DeleteFailedException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
@@ -186,7 +187,7 @@ public class PlanExecutor implements IPlanExecutor {
 
   @Override
   public boolean processNonQuery(PhysicalPlan plan)
-      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException {
+      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, UserException {
     switch (plan.getOperatorType()) {
       case DELETE:
         delete((DeletePlan) plan);
@@ -306,7 +307,7 @@ public class PlanExecutor implements IPlanExecutor {
     IoTDBDescriptor.getInstance().getConfig().setEnablePerformanceTracing(plan.isTracingOn());
   }
 
-  private void operateFlush(FlushPlan plan) throws StorageGroupNotSetException {
+  private void operateFlush(FlushPlan plan) throws UserException {
     if (plan.getPaths().isEmpty()) {
       StorageEngine.getInstance().syncCloseAllProcessor();
     } else {
@@ -318,14 +319,16 @@ public class PlanExecutor implements IPlanExecutor {
       if (!noExistSg.isEmpty()) {
         StringBuilder sb = new StringBuilder();
         noExistSg.forEach(storageGroup -> sb.append(storageGroup.getFullPath()).append(","));
-        throw new StorageGroupNotSetException(
-            sb.subSequence(0, sb.length() - 1).toString());
+        throw new UserException(String
+            .format("Storage group is not set for current seriesPath: [%s]",
+                sb.subSequence(0, sb.length() - 1).toString()),
+            TSStatusCode.METADATA_ERROR.getStatusCode());
       }
     }
   }
 
   public static void flushSpecifiedStorageGroups(FlushPlan plan)
-      throws StorageGroupNotSetException {
+      throws UserException {
     Map<PartialPath, List<Pair<Long, Boolean>>> storageGroupMap = plan
         .getStorageGroupPartitionIds();
     for (Entry<PartialPath, List<Pair<Long, Boolean>>> entry : storageGroupMap.entrySet()) {
@@ -935,7 +938,7 @@ public class PlanExecutor implements IPlanExecutor {
     }
   }
 
-  private boolean operateAuthor(AuthorPlan author) throws QueryProcessException {
+  private boolean operateAuthor(AuthorPlan author) throws QueryProcessException, UserException {
     AuthorOperator.AuthorType authorType = author.getAuthorType();
     String userName = author.getUserName();
     String roleName = author.getRoleName();
@@ -990,7 +993,7 @@ public class PlanExecutor implements IPlanExecutor {
           throw new QueryProcessException("Unsupported operation " + authorType);
       }
     } catch (AuthException e) {
-      throw new QueryProcessException(e.getMessage());
+      throw new UserException(e.getMessage(), TSStatusCode.AUTHORITY_ERROR.getStatusCode());
     }
     return true;
   }
@@ -1133,14 +1136,16 @@ public class PlanExecutor implements IPlanExecutor {
   }
 
   protected boolean deleteStorageGroups(DeleteStorageGroupPlan deleteStorageGroupPlan)
-      throws QueryProcessException {
+      throws QueryProcessException, UserException {
     List<PartialPath> deletePathList = new ArrayList<>();
     try {
       for (PartialPath storageGroupPath : deleteStorageGroupPlan.getPaths()) {
         List<PartialPath> allRelatedStorageGroupPath = IoTDB.metaManager
             .getStorageGroupPaths(storageGroupPath);
         if (allRelatedStorageGroupPath.isEmpty()) {
-          throw new PathNotExistException(storageGroupPath.getFullPath());
+          throw new UserException(
+              String.format("Path [%s] does not exist", storageGroupPath.getFullPath()),
+              TSStatusCode.TIMESERIES_NOT_EXIST.getStatusCode());
         }
         for (PartialPath path : allRelatedStorageGroupPath) {
           StorageEngine.getInstance().deleteStorageGroup(path);
diff --git a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
index 6e75bfb..13c2c66 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
@@ -54,6 +54,7 @@ import org.apache.iotdb.db.engine.cache.TimeSeriesMetadataCache;
 import org.apache.iotdb.db.exception.BatchProcessException;
 import org.apache.iotdb.db.exception.QueryInBatchStatementException;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.exception.UserException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
@@ -1133,7 +1134,7 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
   }
 
   private boolean executeNonQuery(PhysicalPlan plan)
-      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException {
+      throws QueryProcessException, StorageGroupNotSetException, StorageEngineException, UserException {
     if (IoTDBDescriptor.getInstance().getConfig().isReadOnly()) {
       throw new QueryProcessException(
           "Current system mode is read-only, does not support non-query operation");
@@ -1792,6 +1793,9 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
       execRet = executeNonQuery(plan);
     } catch (BatchProcessException e) {
       return RpcUtils.getStatus(Arrays.asList(e.getFailingStatus()));
+    } catch (UserException e) {
+      logger.warn("meet error while processing non-query {}", e.getMessage());
+      return RpcUtils.getStatus(e.getErrorCode(), e.getMessage());
     } catch (QueryProcessException e) {
       logger.warn("meet error while processing non-query. ", e);
       Throwable cause = e;
diff --git a/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java b/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java
index 4e2184c..d063e0a 100644
--- a/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java
+++ b/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java
@@ -72,6 +72,7 @@ public enum TSStatusCode {
   START_UP_ERROR(504),
   SHUT_DOWN_ERROR(505),
   MULTIPLE_ERROR(506),
+  AUTHORITY_ERROR(507),
 
   WRONG_LOGIN_PASSWORD_ERROR(600),
   NOT_LOGIN_ERROR(601),


[iotdb] 01/02: init

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch UserException
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit a9b925fa9ce4e53c5121c919f483bf8a9e3d8bd6
Author: JackieTien97 <Ja...@foxmail.com>
AuthorDate: Wed Dec 16 10:35:20 2020 +0800

    init
---
 .../org/apache/iotdb/db/integration/IoTDBGroupByFillWithRangeIT.java   | 3 ---
 server/src/test/java/org/apache/iotdb/db/integration/IoTDBLastIT.java  | 1 -
 2 files changed, 4 deletions(-)

diff --git a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBGroupByFillWithRangeIT.java b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBGroupByFillWithRangeIT.java
index ec5eb86..1312d67 100644
--- a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBGroupByFillWithRangeIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBGroupByFillWithRangeIT.java
@@ -113,7 +113,6 @@ public class IoTDBGroupByFillWithRangeIT {
           String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet
               .getString(last_value("root.ln.wf01.wt01.temperature"));
           assertEquals(retArray2[cnt], ans);
-          System.out.println(ans);
           cnt++;
         }
         assertEquals(retArray2.length, cnt);
@@ -131,7 +130,6 @@ public class IoTDBGroupByFillWithRangeIT {
           String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet
               .getString(last_value("root.ln.wf01.wt01.temperature"));
           assertEquals(retArray2[cnt], ans);
-          System.out.println(ans);
           cnt++;
         }
         assertEquals(retArray2.length, cnt);
@@ -149,7 +147,6 @@ public class IoTDBGroupByFillWithRangeIT {
           String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet
               .getString(last_value("root.ln.wf01.wt01.temperature"));
           assertEquals(retArray2[retArray2.length - cnt - 1], ans);
-          System.out.println(ans);
           cnt++;
         }
         assertEquals(retArray2.length, cnt);
diff --git a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBLastIT.java b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBLastIT.java
index dabb6bb..729974a 100644
--- a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBLastIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBLastIT.java
@@ -322,7 +322,6 @@ public class IoTDBLastIT {
           String ans = resultSet.getString(TIMESTAMP_STR) + ","
               + resultSet.getString(TIMESEIRES_STR) + ","
               + resultSet.getString(VALUE_STR);
-          System.out.println(ans);
           Assert.assertEquals(retArray3[cnt], ans);
           cnt++;
         }