This is an automated email from the ASF dual-hosted git repository. neuyilan pushed a commit to branch optimize_get_failstatus_and_reduce_debug_log in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 52687241bee29f58dc4e1ac0cfdb2c33ad845ee0 Author: HouliangQi <[email protected]> AuthorDate: Mon Mar 1 20:19:48 2021 +0800 optimize the get fail status codes & reduce the output of the debug log --- .../apache/iotdb/db/qp/executor/PlanExecutor.java | 9 ++--- .../iotdb/db/qp/physical/crud/InsertRowsPlan.java | 13 ++++--- .../qp/physical/sys/CreateMultiTimeSeriesPlan.java | 13 ++----- .../db/qp/physical/sys/DeleteTimeSeriesPlan.java | 13 ++----- .../org/apache/iotdb/db/service/TSServiceImpl.java | 19 +++++----- .../org/apache/iotdb/db/utils/StatusUtils.java | 40 ++++++++++++++++++++++ 6 files changed, 65 insertions(+), 42 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 89f77cf..f0a28a5 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 @@ -122,7 +122,6 @@ import org.apache.iotdb.db.utils.FileLoaderUtils; import org.apache.iotdb.db.utils.UpgradeUtils; import org.apache.iotdb.rpc.RpcUtils; import org.apache.iotdb.rpc.TSStatusCode; -import org.apache.iotdb.service.rpc.thrift.TSStatus; import org.apache.iotdb.tsfile.common.constant.TsFileConstant; import org.apache.iotdb.tsfile.exception.filter.QueryFilterOptimizationException; import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetadata; @@ -1181,21 +1180,17 @@ public class PlanExecutor implements IPlanExecutor { @Override public void insert(InsertRowsPlan plan) throws QueryProcessException { - boolean allSuccess = true; for (int i = 0; i < plan.getInsertRowPlanList().size(); i++) { if (plan.getResults().containsKey(i)) { - allSuccess = false; continue; } try { insert(plan.getInsertRowPlanList().get(i)); - plan.getResults().put(i, RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS)); } catch (QueryProcessException e) { plan.getResults().put(i, RpcUtils.getStatus(e.getErrorCode(), e.getMessage())); - allSuccess = false; } - if (!allSuccess) { - throw new BatchProcessException(plan.getResults().values().toArray(new TSStatus[0])); + if (!plan.getResults().isEmpty()) { + throw new BatchProcessException(plan.getFailingStatus()); } } } diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertRowsPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertRowsPlan.java index 5e2f484..cdd35ab 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertRowsPlan.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertRowsPlan.java @@ -22,6 +22,7 @@ import org.apache.iotdb.db.exception.metadata.IllegalPathException; import org.apache.iotdb.db.exception.query.QueryProcessException; import org.apache.iotdb.db.metadata.PartialPath; import org.apache.iotdb.db.qp.logical.Operator.OperatorType; +import org.apache.iotdb.db.utils.StatusUtils; import org.apache.iotdb.service.rpc.thrift.TSStatus; import java.io.DataOutputStream; @@ -208,12 +209,16 @@ public class InsertRowsPlan extends InsertPlan { @Override public String toString() { return "InsertRowsPlan{" - + " insertRowPlanIndexList=" - + insertRowPlanIndexList - + ", insertRowPlanList=" - + insertRowPlanList + + " insertRowPlanIndexList's size=" + + insertRowPlanIndexList.size() + + ", insertRowPlanList's size=" + + insertRowPlanList.size() + ", results=" + results + "}"; } + + public TSStatus[] getFailingStatus() { + return StatusUtils.getFailingStatus(results, insertRowPlanList.size()); + } } diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateMultiTimeSeriesPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateMultiTimeSeriesPlan.java index f3f354d..9ebc54b 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateMultiTimeSeriesPlan.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateMultiTimeSeriesPlan.java @@ -22,7 +22,7 @@ import org.apache.iotdb.db.exception.metadata.IllegalPathException; import org.apache.iotdb.db.metadata.PartialPath; import org.apache.iotdb.db.qp.logical.Operator; import org.apache.iotdb.db.qp.physical.PhysicalPlan; -import org.apache.iotdb.rpc.RpcUtils; +import org.apache.iotdb.db.utils.StatusUtils; import org.apache.iotdb.service.rpc.thrift.TSStatus; import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; @@ -33,7 +33,6 @@ import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Objects; @@ -141,15 +140,7 @@ public class CreateMultiTimeSeriesPlan extends PhysicalPlan { } public TSStatus[] getFailingStatus() { - if (results.isEmpty()) { - return new TSStatus[0]; - } - TSStatus[] failingStatus = new TSStatus[paths.size()]; - Arrays.fill(failingStatus, RpcUtils.SUCCESS_STATUS); - for (Map.Entry<Integer, TSStatus> status : results.entrySet()) { - failingStatus[status.getKey()] = status.getValue(); - } - return failingStatus; + return StatusUtils.getFailingStatus(results, paths.size()); } public void setResults(Map<Integer, TSStatus> results) { diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DeleteTimeSeriesPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DeleteTimeSeriesPlan.java index 20af1ea..d0b1677 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DeleteTimeSeriesPlan.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DeleteTimeSeriesPlan.java @@ -22,14 +22,13 @@ import org.apache.iotdb.db.exception.metadata.IllegalPathException; import org.apache.iotdb.db.metadata.PartialPath; import org.apache.iotdb.db.qp.logical.Operator; import org.apache.iotdb.db.qp.physical.PhysicalPlan; -import org.apache.iotdb.rpc.RpcUtils; +import org.apache.iotdb.db.utils.StatusUtils; import org.apache.iotdb.service.rpc.thrift.TSStatus; import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.TreeMap; @@ -102,14 +101,6 @@ public class DeleteTimeSeriesPlan extends PhysicalPlan { } public TSStatus[] getFailingStatus() { - if (results.isEmpty()) { - return new TSStatus[0]; - } - TSStatus[] failingStatus = new TSStatus[deletePathList.size()]; - Arrays.fill(failingStatus, RpcUtils.SUCCESS_STATUS); - for (Map.Entry<Integer, TSStatus> status : results.entrySet()) { - failingStatus[status.getKey()] = status.getValue(); - } - return failingStatus; + return StatusUtils.getFailingStatus(results, deletePathList.size()); } } 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 60feccf..d2757af 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 @@ -1143,7 +1143,7 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext { req.deviceIds.get(0), req.getTimestamps().get(0)); } - boolean allSuccess = true; + boolean checkAllSuccess = true; InsertRowsPlan insertRowsPlan = new InsertRowsPlan(); for (int i = 0; i < req.deviceIds.size(); i++) { try { @@ -1156,11 +1156,11 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext { TSStatus status = checkAuthority(plan, req.getSessionId()); if (status != null) { insertRowsPlan.getResults().put(i, status); - allSuccess = false; + checkAllSuccess = false; } insertRowsPlan.addOneInsertRowPlan(plan, i); } catch (Exception e) { - allSuccess = false; + checkAllSuccess = false; insertRowsPlan .getResults() .put( @@ -1172,16 +1172,16 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext { TSStatus tsStatus = executeNonQueryPlan(insertRowsPlan); return judgeFinalTsStatus( - allSuccess, tsStatus, insertRowsPlan.getResults(), req.deviceIds.size()); + checkAllSuccess, tsStatus, insertRowsPlan.getResults(), req.deviceIds.size()); } private TSStatus judgeFinalTsStatus( - boolean allSuccess, + boolean checkAllSuccess, TSStatus executeTsStatus, Map<Integer, TSStatus> checkTsStatus, int totalRowCount) { - if (allSuccess) { + if (checkAllSuccess) { return executeTsStatus; } @@ -1252,7 +1252,7 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext { req.getTimestamps().get(0)); } - boolean allSuccess = true; + boolean allCheckSuccess = true; InsertRowsPlan insertRowsPlan = new InsertRowsPlan(); for (int i = 0; i < req.deviceIds.size(); i++) { InsertRowPlan plan = new InsertRowPlan(); @@ -1266,6 +1266,7 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext { TSStatus status = checkAuthority(plan, req.getSessionId()); if (status != null) { insertRowsPlan.getResults().put(i, status); + allCheckSuccess = false; } insertRowsPlan.addOneInsertRowPlan(plan, i); } catch (Exception e) { @@ -1275,13 +1276,13 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext { i, onNPEOrUnexpectedException( e, "inserting string records", TSStatusCode.INTERNAL_SERVER_ERROR)); - allSuccess = false; + allCheckSuccess = false; } } TSStatus tsStatus = executeNonQueryPlan(insertRowsPlan); return judgeFinalTsStatus( - allSuccess, tsStatus, insertRowsPlan.getResults(), req.deviceIds.size()); + allCheckSuccess, tsStatus, insertRowsPlan.getResults(), req.deviceIds.size()); } @Override diff --git a/server/src/main/java/org/apache/iotdb/db/utils/StatusUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/StatusUtils.java new file mode 100644 index 0000000..f292b35 --- /dev/null +++ b/server/src/main/java/org/apache/iotdb/db/utils/StatusUtils.java @@ -0,0 +1,40 @@ +/* + * 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.utils; + +import org.apache.iotdb.rpc.RpcUtils; +import org.apache.iotdb.service.rpc.thrift.TSStatus; + +import java.util.Arrays; +import java.util.Map; + +public class StatusUtils { + public static TSStatus[] getFailingStatus(Map<Integer, TSStatus> statusMap, int size) { + if (statusMap == null || statusMap.isEmpty()) { + return new TSStatus[0]; + } + TSStatus[] failingStatus = new TSStatus[size]; + Arrays.fill(failingStatus, RpcUtils.SUCCESS_STATUS); + for (Map.Entry<Integer, TSStatus> status : statusMap.entrySet()) { + failingStatus[status.getKey()] = status.getValue(); + } + return failingStatus; + } +}
