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

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

commit 7ee3590b95c8144d9f164191becc8256828a692a
Merge: 4f1b4fb3496 d79ba919649
Author: Tian Jiang <[email protected]>
AuthorDate: Mon May 22 09:56:34 2023 +0800

    Merge branch 'ISSUE_5792' into native_raft
    
    # Conflicts:
    #       
node-commons/src/main/java/org/apache/iotdb/commons/concurrent/dynamic/DynamicThread.java
    #       
node-commons/src/main/java/org/apache/iotdb/commons/service/ServiceType.java
    #       
server/src/main/java/org/apache/iotdb/db/mpp/execution/executor/RegionWriteExecutor.java
    #       
server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertTabletNode.java

 .../org/apache/iotdb/db/qp/sql/IdentifierParser.g4 |   1 +
 .../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4   |  43 ++-
 .../statemachine/ConfigRegionStateMachine.java     |   2 +
 .../iotdb/confignode/manager/ConfigManager.java    |  16 +-
 .../apache/iotdb/confignode/manager/IManager.java  |   8 -
 .../iotdb/confignode/manager/ProcedureManager.java |  18 ++
 .../iotdb/confignode/manager/load/LoadManager.java |   3 +-
 .../iotdb/confignode/manager/pipe/PipeManager.java |   3 +
 .../pipe/{ => plugin}/PipePluginCoordinator.java   |   2 +-
 .../manager/pipe/runtime/PipeMetaSyncer.java       |  80 +++++
 .../pipe/{ => runtime}/PipeRuntimeCoordinator.java |  18 +-
 .../pipe/{ => task}/PipeTaskCoordinator.java       |  23 +-
 .../manager/schema/ClusterSchemaManager.java       |  32 +-
 .../persistence/pipe/PipePluginInfo.java           |  44 +--
 .../confignode/persistence/pipe/PipeTaskInfo.java  |  71 +++--
 .../persistence/pipe/PipeTaskOperation.java        |   1 +
 .../pipe/plugin/CreatePipePluginProcedure.java     |   2 +-
 .../impl/pipe/plugin/DropPipePluginProcedure.java  |   2 +-
 .../runtime/PipeHandleLeaderChangeProcedure.java   |   3 +-
 .../impl/pipe/runtime/PipeMetaSyncProcedure.java   | 126 ++++++++
 .../pipe/task/AbstractOperatePipeProcedureV2.java  |  11 +-
 .../impl/pipe/task/CreatePipeProcedureV2.java      |  16 +-
 .../impl/pipe/task/DropPipeProcedureV2.java        |   4 +-
 .../impl/pipe/task/StartPipeProcedureV2.java       |   4 +-
 .../impl/pipe/task/StopPipeProcedureV2.java        |   4 +-
 .../procedure/store/ProcedureFactory.java          |   6 +
 .../confignode/procedure/store/ProcedureType.java  |   3 +-
 .../thrift/ConfigNodeRPCServiceProcessor.java      |   7 -
 .../pipe/runtime/PipeMetaSyncProcedureTest.java    |  55 ++++
 .../apache/iotdb/consensus/ratis/RatisClient.java  |  18 +-
 distribution/pom.xml                               |  14 +
 distribution/src/assembly/spark-connector.xml      |  48 +++
 .../UserGuide/Ecosystem-Integration/Spark-IoTDB.md | 273 ++++++++--------
 docs/UserGuide/Operate-Metadata/Node.md            |   4 +-
 docs/UserGuide/Operate-Metadata/Timeseries.md      |  89 ++++--
 docs/UserGuide/QuickStart/QuickStart.md            |   2 +-
 docs/UserGuide/Reference/Common-Config-Manual.md   |  12 +-
 docs/UserGuide/Reference/Keywords.md               |   1 +
 docs/UserGuide/Reference/Status-Codes.md           |   2 +
 .../UserGuide/Ecosystem-Integration/Spark-IoTDB.md | 261 ++++++++-------
 docs/zh/UserGuide/Operate-Metadata/Node.md         |   4 +-
 docs/zh/UserGuide/Operate-Metadata/Timeseries.md   |  84 ++++-
 docs/zh/UserGuide/QuickStart/QuickStart.md         |   3 +-
 .../zh/UserGuide/Reference/Common-Config-Manual.md |   8 +-
 docs/zh/UserGuide/Reference/Keywords.md            |   1 +
 docs/zh/UserGuide/Reference/Status-Codes.md        | 258 +++++++--------
 integration-test/pom.xml                           |  18 ++
 .../org/apache/iotdb/it/utils/TsFileGenerator.java |  42 +++
 .../org/apache/iotdb/db/it/IOTDBLoadTsFileIT.java  |  18 ++
 .../db/it/aligned/IoTDBAlignedDataDeletionIT.java  |  17 +
 .../db/it/last/IoTDBLastQueryLastCacheIT.java      |  17 +-
 .../apache/iotdb/db/it/orderBy/IoTDBOrderByIT.java |  26 ++
 .../db/it/schema/IoTDBDeactivateTemplateIT.java    |  22 ++
 .../iotdb/db/it/schema/IoTDBExtendTemplateIT.java  |   9 +
 .../iotdb/db/it/schema/IoTDBMetadataFetchIT.java   | 103 +++++-
 .../iotdb/db/it/schema/IoTDBSchemaTemplateIT.java  |  45 +++
 .../db/it/schema/IoTDBSortedShowTimeseriesIT.java  |   3 +-
 .../apache/iotdb/db/it/schema/IoTDBTagAlterIT.java |  10 +-
 .../org/apache/iotdb/db/it/schema/IoTDBTagIT.java  |  20 +-
 .../session/it/IoTDBSessionSchemaTemplateIT.java   |  92 ++++++
 .../org/apache/iotdb/spark/it/AbstractTest.java    |  55 ++++
 .../java/org/apache/iotdb/spark/it/ReadTest.java   | 145 +++++++++
 .../test/java/org/apache/iotdb/spark/it/Utils.java |  96 ++++++
 .../java/org/apache/iotdb/spark/it/WriteTest.java  | 116 +++++++
 .../resources/conf/iotdb-common.properties         |  19 +-
 .../iotdb/commons/concurrent/ThreadName.java       |   1 +
 .../commons/concurrent/dynamic/DynamicThread.java  |  10 +-
 .../apache/iotdb/commons/conf/CommonConfig.java    |   6 +-
 .../iotdb/commons/conf/CommonDescriptor.java       |   8 -
 .../org/apache/iotdb/commons/path/AlignedPath.java |  15 +-
 .../org/apache/iotdb/commons/path/PartialPath.java |  47 ++-
 .../apache/iotdb/commons/path/PathPatternNode.java |   2 +-
 .../apache/iotdb/commons/path/PathPatternTree.java |  34 +-
 .../apache/iotdb/commons/path/PathPatternUtil.java |  52 +++
 .../iotdb/commons/path/fa/nfa/SimpleNFA.java       |   3 +-
 .../pipe/plugin/builtin/BuiltinPipePlugin.java     |   6 +-
 .../{DefaultCollector.java => IoTDBCollector.java} |   2 +-
 .../IoTDBThriftConnector.java}                     |  48 ++-
 .../commons/pipe/task/meta/PipeMetaKeeper.java     |   4 +
 .../iotdb/commons/schema/filter/SchemaFilter.java  |  75 +++++
 .../commons/schema/filter/SchemaFilterType.java    |  32 +-
 .../commons/schema/filter/SchemaFilterVisitor.java |  59 ++++
 .../commons/schema/filter/impl/DataTypeFilter.java |  65 ++++
 .../schema/filter/impl/PathContainsFilter.java     |  64 ++++
 .../commons/schema/filter/impl/TagFilter.java      |  83 +++++
 .../apache/iotdb/commons/service/ServiceType.java  |   1 +
 .../iotdb/commons/path/PathPatternTreeTest.java    |  61 +++-
 .../org/apache/iotdb/pipe/api/PipeConnector.java   |   4 +
 pom.xml                                            |  35 +--
 .../apache/iotdb/db/client/ConfigNodeClient.java   |  17 -
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java |   6 +-
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |   3 +-
 .../org/apache/iotdb/db/conf/OperationType.java    |   3 +-
 .../org/apache/iotdb/db/engine/StorageEngine.java  |  41 +++
 .../iotdb/db/engine/cache/BloomFilterCache.java    |   2 +-
 .../db/engine/cache/CacheHitRatioMonitor.java      |   2 +-
 .../db/engine/cache/TimeSeriesMetadataCache.java   |  10 +-
 .../exception/CompactionExceptionHandler.java      |   2 +-
 .../execute/task/CrossSpaceCompactionTask.java     |  39 ++-
 .../execute/task/InnerSpaceCompactionTask.java     |   6 +-
 .../execute/utils/MultiTsFileDeviceIterator.java   |   3 +-
 .../impl/RewriteCrossSpaceCompactionSelector.java  |  26 +-
 .../impl/SizeTieredCompactionSelector.java         |   2 +-
 .../utils/CrossSpaceCompactionCandidate.java       |   6 +-
 .../memtable/AlignedWritableMemChunkGroup.java     |  10 +-
 .../db/engine/memtable/WritableMemChunkGroup.java  |  10 +-
 .../db/engine/settle/SettleRequestHandler.java     |   2 +-
 .../iotdb/db/engine/storagegroup/DataRegion.java   | 280 +++--------------
 .../db/engine/storagegroup/TsFileResource.java     |  10 +-
 .../engine/storagegroup/TsFileResourceStatus.java  |   3 +-
 .../db/exception/query/OutOfTTLException.java      |   4 +-
 .../db/metadata/cache/DataNodeSchemaCache.java     |   4 +
 .../cache/DeviceUsingTemplateSchemaCache.java      |  32 ++
 .../iotdb/db/metadata/mtree/ConfigMTree.java       |   8 +-
 .../db/metadata/mtree/MTreeBelowSGCachedImpl.java  |  12 +-
 .../db/metadata/mtree/MTreeBelowSGMemoryImpl.java  |  15 +-
 .../db/metadata/mtree/traverser/Traverser.java     |   7 +
 .../mtree/traverser/basic/EntityTraverser.java     |  31 +-
 .../traverser/basic/MeasurementTraverser.java      |  36 ++-
 .../impl/read/SchemaRegionReadPlanFactory.java     |  37 +--
 .../impl/read/ShowDevicesPlanImpl.java             |  15 +-
 .../impl/read/ShowTimeSeriesPlanImpl.java          |  37 +--
 .../plan/schemaregion/read/IShowDevicesPlan.java   |   4 +
 .../schemaregion/read/IShowTimeSeriesPlan.java     |   7 +-
 .../schemaregion/SchemaRegionMemoryImpl.java       |   5 +-
 .../schemaregion/SchemaRegionSchemaFileImpl.java   |   5 +-
 .../apache/iotdb/db/metadata/tag/TagManager.java   |  16 +-
 .../metadata/template/ClusterTemplateManager.java  |   4 +-
 .../template/alter/TemplateExtendInfo.java         |  78 +++++
 .../apache/iotdb/db/metadata/utils/MetaUtils.java  |   3 +-
 .../iotdb/db/mpp/execution/driver/Driver.java      |  15 +-
 .../execution/executor/RegionWriteExecutor.java    |  42 +--
 .../operator/schema/source/DeviceSchemaSource.java |  13 +-
 .../schema/source/SchemaSourceFactory.java         |  27 +-
 .../schema/source/TimeSeriesSchemaSource.java      |  17 +-
 .../mpp/metric/TimeSeriesMetadataCacheMetrics.java |   4 +-
 .../org/apache/iotdb/db/mpp/plan/Coordinator.java  |   2 +-
 .../apache/iotdb/db/mpp/plan/analyze/Analysis.java |  16 +-
 .../iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java  |  96 +++++-
 .../analyze/schema/AutoCreateSchemaExecutor.java   |  10 +-
 .../analyze/schema/ClusterSchemaFetchExecutor.java |   2 +-
 .../plan/analyze/schema/ClusterSchemaFetcher.java  |  50 ++-
 .../mpp/plan/analyze/schema/SchemaValidator.java   |  27 +-
 .../db/mpp/plan/execution/IQueryExecution.java     |   1 +
 .../db/mpp/plan/execution/QueryExecution.java      |  13 +-
 .../config/executor/ClusterConfigTaskExecutor.java |  21 ++
 .../iotdb/db/mpp/plan/parser/ASTVisitor.java       |  95 ++++--
 .../db/mpp/plan/planner/LogicalPlanBuilder.java    |  47 ++-
 .../db/mpp/plan/planner/LogicalPlanVisitor.java    |  85 ++---
 .../db/mpp/plan/planner/OperatorTreeGenerator.java |  21 +-
 .../plan/node/load/LoadSingleTsFileNode.java       |   4 +
 .../node/metedata/read/DevicesSchemaScanNode.java  |  23 +-
 .../metedata/read/LevelTimeSeriesCountNode.java    |  47 +--
 .../node/metedata/read/TimeSeriesCountNode.java    |  43 +--
 .../metedata/read/TimeSeriesSchemaScanNode.java    |  95 ++----
 .../plan/node/write/InsertMultiTabletsNode.java    |  22 +-
 .../plan/planner/plan/node/write/InsertNode.java   | 126 +-------
 .../planner/plan/node/write/InsertRowNode.java     | 171 ++--------
 .../planner/plan/node/write/InsertRowsNode.java    |  33 +-
 .../plan/node/write/InsertRowsOfOneDeviceNode.java |  32 +-
 .../planner/plan/node/write/InsertTabletNode.java  | 145 ++-------
 .../scheduler/FragmentInstanceDispatcherImpl.java  |   5 +-
 .../plan/scheduler/load/LoadTsFileScheduler.java   |   8 +-
 .../plan/statement/crud/InsertBaseStatement.java   | 157 ++++++++-
 .../crud/InsertMultiTabletsStatement.java          |  30 ++
 .../plan/statement/crud/InsertRowStatement.java    | 183 ++++++++++-
 .../crud/InsertRowsOfOneDeviceStatement.java       |  42 +++
 .../plan/statement/crud/InsertRowsStatement.java   |  41 +++
 .../plan/statement/crud/InsertTabletStatement.java | 155 ++++++++-
 .../db/mpp/plan/statement/crud/QueryStatement.java |  55 ++--
 .../metadata/CountLevelTimeSeriesStatement.java    |  30 +-
 .../metadata/CountTimeSeriesStatement.java         |  30 +-
 .../statement/metadata/ShowDevicesStatement.java   |  10 +
 .../metadata/ShowTimeSeriesStatement.java          |  30 +-
 .../org/apache/iotdb/db/pipe/agent/PipeAgent.java  |  12 +
 .../db/pipe/agent/plugin/PipePluginAgent.java      |   2 +-
 .../agent/receiver/IoTDBThriftReceiver.java}       |  21 +-
 .../db/pipe/agent/receiver/PipeReceiverAgent.java  |  90 ++++++
 .../db/pipe/agent/runtime/MetaSyncScheduler.java   |  22 --
 .../iotdb/db/pipe/agent/runtime/PipeLauncher.java  | 170 ++++++++++
 .../db/pipe/agent/runtime/PipeRuntimeAgent.java    |  42 ++-
 .../iotdb/db/pipe/agent/task/PipeTaskAgent.java    | 350 +++++++++++----------
 .../apache/iotdb/db/pipe/config/PipeConfig.java    |  16 +
 .../db/pipe/config/PipeConnectorConstant.java      |   3 +
 .../core/collector/IoTDBDataRegionCollector.java   |  39 ++-
 .../PipeHistoricalDataRegionTsFileCollector.java   |  13 +-
 .../PipeRealtimeDataRegionHybridCollector.java     |   6 +-
 .../realtime/assigner/PipeDataRegionAssigner.java  |   3 +-
 .../listener/PipeInsertionDataNodeListener.java    |   4 +-
 .../impl/iotdb/IoTDBThriftConnectorClient.java     |  70 +++++
 .../impl/iotdb/IoTDBThriftConnectorVersion.java}   |  16 +-
 .../impl/iotdb/v1/IoTDBThriftConnectorV1.java      | 231 ++++++++++++++
 .../impl/iotdb/v1/IoTDBThriftReceiverV1.java       | 275 ++++++++++++++++
 .../connector/impl/iotdb/v1/PipeRequestType.java}  |  38 ++-
 .../v1/reponse/PipeTransferFilePieceResp.java      |  80 +++++
 .../iotdb/v1/request/PipeTransferFilePieceReq.java |  88 ++++++
 .../iotdb/v1/request/PipeTransferFileSealReq.java  |  79 +++++
 .../iotdb/v1/request/PipeTransferHandshakeReq.java |  71 +++++
 .../v1/request/PipeTransferInsertNodeReq.java      | 102 ++++++
 .../PipeConnectorSubtaskLifeCycle.java             |   2 +-
 .../{ => manager}/PipeConnectorSubtaskManager.java |  18 +-
 .../core/event/impl/PipeTabletInsertionEvent.java  |   4 +
 .../core/event/impl/PipeTsFileInsertionEvent.java  |  37 ++-
 .../realtime/PipeRealtimeCollectEventFactory.java  |   6 +-
 .../event/view/collector/PipeEventCollector.java   |   3 +-
 .../execution/executor/PipeSubtaskExecutor.java    |  17 +-
 .../org/apache/iotdb/db/pipe/task/PipeBuilder.java |   8 +-
 .../db/pipe/task/stage/PipeTaskCollectorStage.java |  25 +-
 .../db/pipe/task/stage/PipeTaskConnectorStage.java |  11 +-
 .../db/pipe/task/stage/PipeTaskProcessorStage.java |  19 +-
 .../db/pipe/task/subtask/PipeConnectorSubtask.java |  29 +-
 .../db/pipe/task/subtask/PipeProcessorSubtask.java |  21 +-
 .../iotdb/db/pipe/task/subtask/PipeSubtask.java    |  28 +-
 .../java/org/apache/iotdb/db/service/DataNode.java | 102 +-----
 .../db/service/thrift/ProcessorWithMetrics.java    |   6 +-
 .../service/thrift/impl/ClientRPCServiceImpl.java  | 209 +++++++-----
 .../impl/DataNodeInternalRPCServiceImpl.java       |   6 +-
 .../db/sync/common/ClusterSyncInfoFetcher.java     |  11 +-
 .../apache/iotdb/db/tools/IoTDBDataDirViewer.java  |   4 +-
 .../iotdb/db/tools/TsFileResourcePrinter.java      |   4 +-
 .../iotdb/db/tools/TsFileSplitByPartitionTool.java |   2 +-
 .../org/apache/iotdb/db/tools/TsFileSplitTool.java |   2 +-
 .../db/tools/settle/TsFileAndModSettleTool.java    |   6 +-
 .../db/tools/validate/TsFileValidationTool.java    |  16 +-
 .../org/apache/iotdb/db/utils/FileLoaderUtils.java |   2 +-
 .../org/apache/iotdb/db/utils/UpgradeUtils.java    |   2 +-
 .../db/utils/datastructure/AlignedTVList.java      |   6 +-
 .../db/wal/recover/file/TsFilePlanRedoer.java      |   4 -
 .../iotdb/db/engine/cache/ChunkCacheTest.java      |   4 +-
 .../engine/compaction/AbstractCompactionTest.java  |   6 +-
 .../db/engine/compaction/MemoryControlTest.java    |  75 +++++
 .../cross/CrossSpaceCompactionExceptionTest.java   |   2 +-
 .../cross/CrossSpaceCompactionSelectorTest.java    | 171 ++++++++++
 .../CrossSpaceCompactionWithFastPerformerTest.java |   6 +-
 ...eCompactionWithFastPerformerValidationTest.java |   4 +-
 ...sSpaceCompactionWithReadPointPerformerTest.java |   6 +-
 .../db/engine/compaction/cross/MergeTest.java      |   6 +-
 .../cross/RewriteCompactionFileSelectorTest.java   |  46 +--
 .../inner/AbstractInnerSpaceCompactionTest.java    |   4 +-
 .../inner/InnerCompactionMoreDataTest.java         |   2 +-
 .../compaction/inner/InnerCompactionTest.java      |   4 +-
 .../ReadChunkCompactionPerformerAlignedTest.java   |  76 +++++
 .../inner/sizetiered/SizeTieredCompactionTest.java |  10 +-
 .../compaction/utils/CompactionCheckerUtils.java   |   4 +
 .../utils/MultiTsFileDeviceIteratorTest.java       |  12 +-
 .../db/engine/snapshot/IoTDBSnapshotTest.java      |   2 +-
 .../db/engine/storagegroup/DataRegionTest.java     |  16 +-
 .../engine/storagegroup/FakedTsFileResource.java   |   2 +-
 .../db/engine/storagegroup/TsFileResourceTest.java |   2 +-
 .../schemaRegion/SchemaRegionBasicTest.java        | 167 +++++++++-
 .../schemaRegion/SchemaRegionTestUtil.java         |   4 +-
 .../execution/operator/AlignedSeriesTestUtil.java  |   6 +-
 .../schema/SchemaQueryScanOperatorTest.java        |   4 +-
 .../db/mpp/plan/analyze/FakeSchemaFetcherImpl.java |   7 +-
 .../iotdb/db/mpp/plan/plan/LogicalPlannerTest.java | 120 ++++++-
 .../distribution/DistributionPlannerBasicTest.java |  10 +-
 .../read/DeviceSchemaScanNodeSerdeTest.java        |   3 +-
 .../metadata/read/SchemaCountNodeSerdeTest.java    |   8 +-
 .../read/TimeSeriesSchemaScanNodeSerdeTest.java    |   3 +-
 .../pipe/core/connector/PipeThriftRequestTest.java | 118 +++++++
 .../AlignedSeriesScanLimitOffsetPushDownTest.java  |  10 +-
 .../query/reader/series/SeriesReaderTestUtil.java  |   6 +-
 .../series/SeriesScanLimitOffsetPushDownTest.java  |   8 +-
 .../iotdb/db/rescon/ResourceManagerTest.java       |  12 +-
 .../db/utils/datastructure/VectorTVListTest.java   |  11 +
 .../org/apache/iotdb/db/wal/io/WALFileTest.java    |  25 +-
 .../iotdb/db/wal/node/ConsensusReqReaderTest.java  |  27 +-
 .../org/apache/iotdb/db/wal/node/WALNodeTest.java  |  26 +-
 .../db/wal/recover/file/TsFilePlanRedoerTest.java  |  32 +-
 .../file/UnsealedTsFileRecoverPerformerTest.java   |   5 +-
 .../java/org/apache/iotdb/rpc/TSStatusCode.java    |  12 +-
 .../org/apache/iotdb/session/pool/SessionPool.java | 319 ++++++++++++++++++-
 spark-iotdb-connector/pom.xml                      |  84 +----
 spark-iotdb-connector/{ => scala_2.11}/pom.xml     | 108 +++----
 spark-iotdb-connector/{ => scala_2.12}/pom.xml     | 103 +++---
 .../src/test/resources/iotdb-datanode.properties   |  23 --
 .../apache/iotdb/spark/db/EnvironmentUtils.java    | 263 ----------------
 .../org/apache/iotdb/spark/db/IoTDBTest.scala      | 150 ---------
 .../org/apache/iotdb/spark/db/IoTDBWriteTest.scala | 118 -------
 .../iotdb/spark/db/unit/DataFrameToolsTest.scala   |  96 ------
 spark-tsfile/pom.xml                               |  50 +--
 .../iotdb/spark/tsfile/qp/common/SQLConstant.java  | 118 +++----
 .../src/main/thrift/confignode.thrift              |   9 +-
 thrift/src/main/thrift/client.thrift               |  13 +
 .../java/org/apache/iotdb/tsfile/utils/Binary.java |  20 +-
 285 files changed, 7494 insertions(+), 3761 deletions(-)

diff --cc 
node-commons/src/main/java/org/apache/iotdb/commons/concurrent/dynamic/DynamicThread.java
index ddfc3b83f05,9726cad6fd3..0785f0df8e6
--- 
a/node-commons/src/main/java/org/apache/iotdb/commons/concurrent/dynamic/DynamicThread.java
+++ 
b/node-commons/src/main/java/org/apache/iotdb/commons/concurrent/dynamic/DynamicThread.java
@@@ -79,15 -79,12 +79,15 @@@ public abstract class DynamicThread imp
      }
  
      double idleRatio = idleRatio();
-     if (idleRatio < minimumIdleRatio && runningTimeSum > minimumRunningTime) {
+     if (idleRatio < minimumIdleRatio && runningTimeSum > 
minimumRunningTimeNS) {
        // Thread too busy, try adding a new thread
 -      logger.info("Thread too busy (idle ratio={}), try adding a new thread", 
idleRatio);
 -      threadGroup.addThread();
 +      if (threadGroup.addThread()) {
 +        logger.info("Thread too busy (idle ratio={}), try adding a new 
thread", idleRatio);
 +        runningTimeSum = 0;
 +        idleTimeSum = 0;
 +      }
        return false;
-     } else if (idleRatio > maximumIdleRatio && runningTimeSum > 
minimumRunningTime) {
+     } else if (idleRatio > maximumIdleRatio && runningTimeSum > 
minimumRunningTimeNS) {
        // Thread too idle, exit if there is still enough threads
        int afterCnt = threadGroup.getThreadCnt().decrementAndGet();
        if (afterCnt >= threadGroup.getMinThreadCnt()) {
diff --cc 
node-commons/src/main/java/org/apache/iotdb/commons/service/ServiceType.java
index c55386ed8a4,7bde2af3102..82fbe782780
--- 
a/node-commons/src/main/java/org/apache/iotdb/commons/service/ServiceType.java
+++ 
b/node-commons/src/main/java/org/apache/iotdb/commons/service/ServiceType.java
@@@ -75,9 -75,8 +75,10 @@@ public enum ServiceType 
    IOT_CONSENSUS_SERVICE("IoTConsensus Service", "IoTConsensusRPCService"),
    PIPE_PLUGIN_CLASSLOADER_MANAGER_SERVICE(
        "Pipe Plugin Classloader Manager Service", "PipePluginClassLoader"),
+   PIPE_RUNTIME_AGENT("Pipe Runtime Agent", "PipeRuntimeAgent"),
 -  MLNode_RPC_SERVICE("Rpc Service for MLNode", "MLNodeRPCService");
 +  MLNode_RPC_SERVICE("Rpc Service for MLNode", "MLNodeRPCService"),
 +  RAFT_CONSENSUS_SERVICE("Raft consensus Service", "RaftRPCService");
 +
    private final String name;
    private final String jmxName;
  
diff --cc 
server/src/main/java/org/apache/iotdb/db/mpp/execution/executor/RegionWriteExecutor.java
index 33691d9ee8c,059cfbc65b2..302cd7e3fc2
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/executor/RegionWriteExecutor.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/executor/RegionWriteExecutor.java
@@@ -265,11 -232,7 +234,9 @@@ public class RegionWriteExecutor 
          // TODO need consider more status
          if (writeResponse.getStatus() != null) {
            response.setAccepted(
-               !hasFailedMeasurement
-                   && (TSStatusCode.SUCCESS_STATUS.getStatusCode()
-                           == writeResponse.getStatus().getCode()
 -              TSStatusCode.SUCCESS_STATUS.getStatusCode() == 
writeResponse.getStatus().getCode());
++              TSStatusCode.SUCCESS_STATUS.getStatusCode() == 
writeResponse.getStatus().getCode()
 +                      || TSStatusCode.WEAKLY_ACCEPTED.getStatusCode()
-                           == writeResponse.getStatus().getCode()));
++                          == writeResponse.getStatus().getCode());
            if (TSStatusCode.SUCCESS_STATUS.getStatusCode() != 
writeResponse.getStatus().getCode()) {
              response.setMessage(writeResponse.getStatus().message);
              response.setStatus(writeResponse.getStatus());
diff --cc 
server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertTabletNode.java
index 5560affafa6,2501c535a0c..93dc5c1f1a2
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertTabletNode.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertTabletNode.java
@@@ -1129,92 -1068,4 +1075,47 @@@ public class InsertTabletNode extends I
      }
      return new TimeValuePair(times[lastIdx], value);
    }
 +
-   @Override
-   public TSEncoding getEncoding(int index) {
-     return null;
-   }
- 
-   @Override
-   public CompressionType getCompressionType(int index) {
-     return null;
-   }
- 
-   @Override
-   public void validateDeviceSchema(boolean isAligned) {
-     if (this.isAligned != isAligned) {
-       throw new SemanticException(
-           new AlignedTimeseriesException(
-               String.format(
-                   "timeseries under this device are%s aligned, " + "please 
use %s interface",
-                   isAligned ? "" : " not", isAligned ? "aligned" : 
"non-aligned"),
-               devicePath.getFullPath()));
-     }
-   }
- 
-   @Override
-   public ISchemaValidation getSchemaValidation() {
-     return this;
-   }
- 
-   @Override
-   public void validateMeasurementSchema(int index, IMeasurementSchemaInfo 
measurementSchemaInfo) {
-     if (measurementSchemas == null) {
-       measurementSchemas = new MeasurementSchema[measurements.length];
-     }
-     if (measurementSchemaInfo == null) {
-       measurementSchemas[index] = null;
-     } else {
-       measurementSchemas[index] = 
measurementSchemaInfo.getSchemaAsMeasurementSchema();
-     }
- 
-     try {
-       selfCheckDataTypes(index);
-     } catch (DataTypeMismatchException | PathNotExistException e) {
-       throw new SemanticException(e);
-     }
-   }
- 
 +  @Override
 +  public long estimateSize() {
 +    long size = super.estimateSize();
 +
 +    size += times.length * 8L;
 +
 +    for (int measurementIndex = 0; measurementIndex < columns.length; 
measurementIndex++) {
 +      switch (dataTypes[measurementIndex]) {
 +        case INT32:
 +          int[] intValues = (int[]) columns[measurementIndex];
 +          size += intValues.length * 4L;
 +          break;
 +        case INT64:
 +          long[] longValues = (long[]) columns[measurementIndex];
 +          size += longValues.length * 8L;
 +          break;
 +        case FLOAT:
 +          float[] floatValues = (float[]) columns[measurementIndex];
 +          size += floatValues.length * 4L;
 +          break;
 +        case DOUBLE:
 +          double[] doubleValues = (double[]) columns[measurementIndex];
 +          size += doubleValues.length * 8L;
 +          break;
 +        case BOOLEAN:
 +          boolean[] boolValues = (boolean[]) columns[measurementIndex];
 +          size += boolValues.length;
 +          break;
 +        case TEXT:
 +          Binary[] binaryValues = (Binary[]) columns[measurementIndex];
 +          for (Binary binaryValue : binaryValues) {
 +            size += binaryValue.getLength();
 +          }
 +          break;
 +        default:
 +          throw new UnSupportedDataTypeException(
 +              String.format(DATATYPE_UNSUPPORTED, 
dataTypes[measurementIndex]));
 +      }
 +    }
 +
 +    return size;
 +  }
  }

Reply via email to