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

rong pushed a commit to branch iotdb-1620
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit d116a218c4fa0a49e1e73b0133dccdfba1a0b38f
Merge: 23e505f a8d9e4b
Author: Steve Yurong Su <[email protected]>
AuthorDate: Tue Oct 26 10:08:13 2021 +0800

    merge master and fix conflits

 .asf.yaml                                          |    2 +-
 .github/dependabot.yml                             |   71 +
 .github/workflows/influxdb-protocol.yml            |   64 +
 .github/workflows/main-unix.yml                    |    3 +-
 .github/workflows/main-win.yml                     |   31 +-
 .github/workflows/sonar-coveralls.yml              |    2 +-
 .mvn/wrapper/MavenWrapperDownloader.java           |    2 +-
 .../org/apache/iotdb/db/qp/sql/IoTDBSqlLexer.g4    |  987 ++++++
 .../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4   |  856 +++++
 .../antlr4/org/apache/iotdb/db/qp/sql/SqlBase.g4   | 1532 ---------
 cli/pom.xml                                        |    2 +-
 .../java/org/apache/iotdb/cli/AbstractCli.java     |   67 +
 client-cpp/pom.xml                                 |    2 +-
 client-py/SessionExample.py                        |   13 +
 client-py/SessionTest.py                           |   63 +-
 client-py/iotdb/Session.py                         |    2 +-
 .asf.yaml => client-py/iotdb/utils/BitMap.py       |   26 +-
 client-py/iotdb/utils/Tablet.py                    |   87 +-
 .../cluster/client/sync/SyncClientAdaptor.java     |   10 +
 .../iotdb/cluster/log/StableEntryManager.java      |    6 +
 .../cluster/log/manage/CommittedEntryManager.java  |   12 +
 .../manage/FilePartitionedSnapshotLogManager.java  |   12 +-
 .../iotdb/cluster/log/manage/RaftLogManager.java   |    6 +-
 .../serializable/SyncLogDequeSerializer.java       |   25 +
 .../iotdb/cluster/log/snapshot/FileSnapshot.java   |   13 +-
 .../apache/iotdb/cluster/metadata/CMManager.java   |   85 +-
 .../iotdb/cluster/query/ClusterPlanExecutor.java   |  138 +
 .../iotdb/cluster/query/ClusterPlanRouter.java     |   60 +-
 .../iotdb/cluster/query/LocalQueryExecutor.java    |   59 +-
 .../iotdb/cluster/query/RemoteQueryContext.java    |    5 +-
 .../cluster/query/filter/SlotTsFileFilter.java     |    5 +-
 .../cluster/query/reader/ClusterReaderFactory.java |   24 +-
 .../apache/iotdb/cluster/server/ClientServer.java  |    6 +-
 .../iotdb/cluster/server/DataClusterServer.java    |   15 +
 .../cluster/server/member/DataGroupMember.java     |    2 +-
 .../cluster/server/service/DataAsyncService.java   |   12 +
 .../cluster/server/service/DataSyncService.java    |    9 +
 .../iotdb/cluster/utils/ClusterQueryUtils.java     |   43 +
 .../apache/iotdb/cluster/utils/PartitionUtils.java |    5 +-
 .../cluster/client/sync/SyncClientAdaptorTest.java |   14 +-
 .../org/apache/iotdb/cluster/common/TestUtils.java |    2 +-
 .../iotdb/cluster/integration/SingleNodeTest.java  |    2 +-
 .../cluster/log/snapshot/PullSnapshotTaskTest.java |   13 +-
 .../cluster/partition/SlotPartitionTableTest.java  |   37 -
 .../apache/iotdb/cluster/query/BaseQueryTest.java  |    9 +-
 .../cluster/server/member/DataGroupMemberTest.java |   11 +-
 compile-tools/thrift/pom.xml                       |    2 +-
 docker/ReadMe.md                                   |   44 +
 .../main/DockerCompose/docker-compose-grafana.yml  |   50 +
 docker/src/main/Dockerfile-0.12.2-grafana          |   41 +
 docs/SystemDesign/StorageEngine/MergeManager.md    |    6 +-
 docs/UserGuide/API/Programming-Java-Native-API.md  |   10 +
 .../Administration-Management/Administration.md    |    8 +-
 docs/UserGuide/Advanced-Features/Triggers.md       |   12 +-
 .../Advanced-Features/UDF-User-Defined-Function.md |    6 +-
 docs/UserGuide/Appendix/SQL-Reference.md           |   24 +-
 docs/UserGuide/Data-Concept/Data-Type.md           |   12 +-
 docs/UserGuide/Data-Concept/Encoding.md            |    4 +-
 .../UserGuide/Data-Concept/Measurement-Template.md |    2 +-
 .../UserGuide/Ecosystem Integration/Spark IoTDB.md |   18 +-
 .../DML-Data-Manipulation-Language.md              |   34 +-
 .../IoTDB-SQL-Language/Maintenance-Command.md      |    4 +-
 .../UserGuide/System-Tools/Load-External-Tsfile.md |   38 +-
 .../System-Tools/Monitor-and-Log-Tools.md          |    6 +-
 .../System-Tools/Performance-Tracing-Tool.md       |   56 +-
 docs/UserGuide/System-Tools/Watermark-Tool.md      |    2 +-
 docs/zh/SystemDesign/StorageEngine/MergeManager.md |    6 +-
 docs/zh/UserGuide/API/InfluxDB-Protocol.md         |  249 ++
 .../UserGuide/API/Programming-Java-Native-API.md   |   16 +-
 .../Administration-Management/Administration.md    |    8 +-
 docs/zh/UserGuide/Advanced-Features/Triggers.md    |   14 +-
 .../Advanced-Features/UDF-User-Defined-Function.md |    6 +-
 docs/zh/UserGuide/Appendix/Config-Manual.md        |   18 -
 docs/zh/UserGuide/Appendix/SQL-Reference.md        |   24 +-
 docs/zh/UserGuide/Cluster/Cluster-Setup.md         |    8 +-
 docs/zh/UserGuide/Data-Concept/Data-Type.md        |   14 +-
 docs/zh/UserGuide/Data-Concept/Encoding.md         |    4 +-
 .../UserGuide/Data-Concept/Measurement-Template.md |    2 +-
 .../UserGuide/Ecosystem Integration/Spark IoTDB.md |   18 +-
 .../DML-Data-Manipulation-Language.md              |   28 +-
 .../IoTDB-SQL-Language/Maintenance-Command.md      |    3 +-
 .../UserGuide/System-Tools/Load-External-Tsfile.md |   38 +-
 .../System-Tools/Monitor-and-Log-Tools.md          |    4 +-
 .../System-Tools/Performance-Tracing-Tool.md       |   58 +-
 docs/zh/UserGuide/System-Tools/Watermark-Tool.md   |    2 +-
 .../main/java/org/apache/iotdb/JDBCExample.java    |    6 +-
 .../org/apache/iotdb/PrepareStatementDemo.java     |    2 +-
 example/trigger/pom.xml                            |    2 +-
 example/udf/pom.xml                                |    2 +-
 .../flink/tsfile/RowTsFileInputFormatTest.java     |   14 +-
 hive-connector/pom.xml                             |    4 +-
 influxdb-protocol/pom.xml                          |  162 +
 .../org/apache/iotdb/influxdb/IoTDBInfluxDB.java   |  422 +++
 .../iotdb/influxdb/IoTDBInfluxDBFactory.java       |   70 +
 .../iotdb/influxdb/example/InfluxDBExample.java    |  102 +
 .../protocol/constant/InfluxDBConstant.java        |   14 +-
 .../iotdb/influxdb/protocol/dto/IoTDBPoint.java    |   55 +-
 .../iotdb/influxdb/protocol/dto/SessionPoint.java  |   47 +-
 .../protocol/impl/IoTDBInfluxDBService.java        |  148 +
 .../iotdb/influxdb/protocol/meta/MetaManager.java  |  181 +
 .../influxdb/protocol/meta/MetaManagerHolder.java  |   54 +
 .../influxdb/protocol/meta/TagInfoRecords.java     |   85 +
 .../influxdb/protocol/util/DataTypeUtils.java      |   86 +
 .../influxdb/protocol/util/ParameterUtils.java     |   28 +-
 .../influxdb/integration/IoTDBInfluxDBIT.java      |  244 ++
 .../iotdb/jdbc/AbstractIoTDBJDBCResultSet.java     |   22 +
 .../main/java/org/apache/iotdb/jdbc/Constant.java  |   12 +
 .../org/apache/iotdb/jdbc/IoTDBConnection.java     |    6 +-
 .../apache/iotdb/jdbc/IoTDBDatabaseMetadata.java   |   25 +
 .../org/apache/iotdb/jdbc/IoTDBJDBCResultSet.java  |   11 +
 .../iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java     |    6 +
 .../java/org/apache/iotdb/jdbc/IoTDBStatement.java |   16 +-
 .../org/apache/iotdb/jdbc/IoTDBTracingInfo.java    |  103 +
 jenkins.pom                                        |    2 +-
 pom.xml                                            |   78 +-
 server/pom.xml                                     |    3 +-
 .../resources/conf/iotdb-engine.properties         |   96 +-
 server/src/assembly/resources/conf/logback.xml     |   20 +
 .../resources/tools/tsfileToolSet/settle.bat       |   62 +
 .../resources/tools/tsfileToolSet/settle.sh        |   43 +-
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java |  285 +-
 .../org/apache/iotdb/db/conf/IoTDBConfigCheck.java |    6 +-
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |  102 +-
 .../iotdb/db/conf/adapter/CompressionRatio.java    |    2 +-
 .../db/cq/ContinuousQueryTaskPoolManager.java      |    2 +-
 .../org/apache/iotdb/db/engine/StorageEngine.java  |   85 +-
 .../apache/iotdb/db/engine/cache/ChunkCache.java   |    4 +-
 .../db/engine/cache/TimeSeriesMetadataCache.java   |   15 +-
 .../compaction/CompactionMergeTaskPoolManager.java |  195 --
 .../CompactionPriority.java}                       |   11 +-
 .../db/engine/compaction/CompactionScheduler.java  |  299 ++
 .../compaction/CompactionTaskComparator.java       |  109 +
 .../engine/compaction/CompactionTaskManager.java   |  265 ++
 .../db/engine/compaction/TsFileManagement.java     |  460 ---
 .../AbstractCrossSpaceCompactionRecoverTask.java   |   16 +-
 .../AbstractCrossSpaceCompactionSelector.java      |   51 +
 .../cross/AbstractCrossSpaceCompactionTask.java    |   96 +
 .../compaction/cross/CrossCompactionStrategy.java  |  117 +
 .../cross/CrossSpaceCompactionTaskFactory.java     |   58 +
 .../inplace/InplaceCompactionRecoverTask.java      |  109 +
 .../cross/inplace/InplaceCompactionSelector.java   |  152 +
 .../cross/inplace/InplaceCompactionTask.java       |  251 ++
 .../inplace/manage/CrossSpaceMergeContext.java}    |    6 +-
 .../inplace/manage/CrossSpaceMergeResource.java}   |   17 +-
 .../cross/inplace}/manage/MergeFuture.java         |   10 +-
 .../cross/inplace}/manage/MergeManager.java        |   66 +-
 .../cross/inplace}/manage/MergeManagerMBean.java   |    2 +-
 .../cross/inplace}/manage/MergeThreadPool.java     |   14 +-
 .../cross/inplace}/recover/LogAnalyzer.java        |   34 +-
 .../cross/inplace}/recover/MergeLogger.java        |   15 +-
 .../selector/ICrossSpaceMergeFileSelector.java}    |    4 +-
 .../selector/IFileQueryMemMeasurement.java         |    2 +-
 .../inplace}/selector/IMergePathSelector.java      |    2 +-
 .../selector/MaxFileMergeFileSelector.java         |   25 +-
 .../selector/MaxSeriesMergeFileSelector.java       |    6 +-
 .../cross/inplace}/selector/MergeFileStrategy.java |    2 +-
 .../cross/inplace}/selector/NaivePathSelector.java |    2 +-
 .../cross/inplace/task/CrossSpaceMergeTask.java}   |   40 +-
 .../cross/inplace}/task/MergeCallback.java         |    2 +-
 .../cross/inplace}/task/MergeFileTask.java         |   24 +-
 .../cross/inplace}/task/MergeMultiChunkTask.java   |   43 +-
 .../cross/inplace/task/RecoverCrossMergeTask.java} |   24 +-
 .../AbstractInnerSpaceCompactionSelector.java      |   52 +
 .../inner/AbstractInnerSpaceCompactionTask.java    |  131 +
 .../compaction/inner/InnerCompactionStrategy.java  |  108 +
 .../inner/InnerSpaceCompactionTaskFactory.java     |   51 +
 .../SizeTieredCompactionRecoverTask.java           |  151 +
 .../sizetiered/SizeTieredCompactionSelector.java   |  200 ++
 .../inner/sizetiered/SizeTieredCompactionTask.java |  239 ++
 .../utils/InnerSpaceCompactionUtils.java}          |  189 +-
 .../utils/SizeTieredCompactionLogAnalyzer.java}    |   40 +-
 .../utils/SizeTieredCompactionLogger.java}         |   19 +-
 .../level/LevelCompactionTsFileManagement.java     |  884 -----
 .../no/NoCompactionTsFileManagement.java           |  290 --
 .../task/AbstractCompactionSelector.java}          |   23 +-
 .../compaction/task/AbstractCompactionTask.java    |   89 +
 .../compaction/task/CompactionRecoverTask.java     |  101 +
 .../engine/flush/pool/FlushSubTaskPoolManager.java |    1 +
 .../db/engine/flush/pool/FlushTaskPoolManager.java |    1 +
 .../iotdb/db/engine/memtable/AbstractMemTable.java |   16 +-
 .../db/engine/modification/ModificationFile.java   |   11 +
 .../apache/iotdb/db/engine/settle/SettleLog.java   |  116 +
 .../apache/iotdb/db/engine/settle/SettleTask.java  |  108 +
 .../engine/storagegroup/StorageGroupProcessor.java |  661 ++--
 .../db/engine/storagegroup/TsFileManager.java      |  312 ++
 .../engine/storagegroup/TsFileNameGenerator.java   |  248 ++
 .../db/engine/storagegroup/TsFileProcessor.java    |    3 +
 .../db/engine/storagegroup/TsFileResource.java     |  248 +-
 .../db/engine/storagegroup/TsFileResourceList.java |  443 +++
 .../storagegroup/timeindex/DeviceTimeIndex.java    |   70 +-
 .../storagegroup/timeindex/FileTimeIndex.java      |   24 +-
 .../engine/storagegroup/timeindex/ITimeIndex.java  |   24 +
 .../virtualSg/HashVirtualPartitioner.java          |    6 -
 .../virtualSg/VirtualStorageGroupManager.java      |   33 +-
 .../WriteLockFailedException.java}                 |    9 +-
 .../metadata/DifferentTemplateException.java}      |   23 +-
 .../metadata/NoTemplateOnMNodeException.java}      |   15 +-
 .../metadata/TemplateIsInUseException.java}        |   15 +-
 .../query/QueryTimeoutRuntimeException.java        |    4 +-
 .../org/apache/iotdb/db/metadata/MManager.java     |  112 +-
 .../org/apache/iotdb/db/metadata/PartialPath.java  |   18 +-
 .../iotdb/db/metadata/logfile/MLogUpgrader.java    |  290 ++
 .../iotdb/db/metadata/logfile/MLogWriter.java      |  205 +-
 .../iotdb/db/metadata/mnode/IEntityMNode.java      |   19 -
 .../org/apache/iotdb/db/metadata/mnode/IMNode.java |    4 +-
 .../iotdb/db/metadata/mnode/InternalMNode.java     |   13 -
 .../org/apache/iotdb/db/metadata/mnode/MNode.java  |   10 +
 .../mnode/{IEntityMNode.java => MNodeUtils.java}   |   58 +-
 .../iotdb/db/metadata/mnode/MeasurementMNode.java  |    5 -
 .../org/apache/iotdb/db/metadata/mtree/MTree.java  |   96 +-
 .../apache/iotdb/db/metadata/utils/MetaUtils.java  |   11 -
 .../org/apache/iotdb/db/monitor/StatMonitor.java   |   27 +-
 .../iotdb/db/qp/constant/FilterConstant.java       |   20 +-
 .../apache/iotdb/db/qp/constant/SQLConstant.java   |    4 +
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  |  113 +-
 .../org/apache/iotdb/db/qp/logical/Operator.java   |    6 +-
 .../qp/logical/crud/AggregationQueryOperator.java  |   12 +-
 .../iotdb/db/qp/logical/crud/QueryOperator.java    |   37 +-
 .../db/qp/logical/crud/SpecialClauseComponent.java |   21 +-
 .../iotdb/db/qp/logical/sys/SettleOperator.java    |   71 +
 .../apache/iotdb/db/qp/physical/PhysicalPlan.java  |    3 +-
 .../iotdb/db/qp/physical/crud/AggregationPlan.java |   81 +-
 .../iotdb/db/qp/physical/crud/InsertPlan.java      |    3 +
 .../db/qp/physical/crud/InsertTabletPlan.java      |   10 +-
 .../iotdb/db/qp/physical/crud/QueryPlan.java       |   17 +-
 .../qp/physical/crud/UnsetSchemaTemplatePlan.java  |   96 +
 .../physical/sys/SettlePlan.java}                  |   56 +-
 .../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java    | 3523 ++++++++++----------
 .../iotdb/db/qp/strategy/LogicalGenerator.java     |   12 +-
 .../qp/strategy/optimizer/ConcatPathOptimizer.java |   20 +-
 .../iotdb/db/qp/utils/GroupByLevelController.java  |  150 +
 .../apache/iotdb/db/qp/utils/WildcardsRemover.java |    3 +-
 .../iotdb/db/query/context/QueryContext.java       |   79 +-
 .../iotdb/db/query/control/FileReaderManager.java  |    2 -
 .../db/query/control/QueryResourceManager.java     |   36 +-
 .../iotdb/db/query/control/QueryTimeManager.java   |  142 +-
 .../apache/iotdb/db/query/control/TracingInfo.java |   85 -
 .../iotdb/db/query/control/TracingManager.java     |  229 --
 .../control/tracing/TracingConstant.java}          |   22 +-
 .../db/query/control/tracing/TracingInfo.java      |  156 +
 .../db/query/control/tracing/TracingManager.java   |   82 +
 .../db/query/dataset/AlignByDeviceDataSet.java     |    4 +-
 .../dataset/RawQueryDataSetWithoutValueFilter.java |    9 +-
 .../dataset/groupby/GroupByEngineDataSet.java      |    6 +
 ...ByTimeDataSet.java => GroupByLevelDataSet.java} |   59 +-
 .../groupby/GroupByWithValueFilterDataSet.java     |   26 +-
 .../groupby/GroupByWithoutValueFilterDataSet.java  |   25 +-
 .../db/query/executor/AggregationExecutor.java     |   33 +-
 .../iotdb/db/query/executor/QueryRouter.java       |   21 +-
 .../db/query/executor/RawDataQueryExecutor.java    |    1 +
 .../query/expression/unary/FunctionExpression.java |    7 +
 .../iotdb/db/query/pool/QueryTaskPoolManager.java  |    2 +-
 .../resource/CachedUnseqResourceMergeReader.java   |    1 +
 .../iotdb/db/query/reader/series/SeriesReader.java |   36 +-
 .../reader/universal/PriorityMergeReader.java      |   13 +-
 .../iotdb/db/query/udf/core/layer/SafetyLine.java  |    3 +
 .../row/ElasticSerializableRowRecordList.java      |   33 +-
 .../row/SerializableRowRecordList.java             |    8 +
 .../flush/pool => rescon}/AbstractPoolManager.java |    2 +-
 .../iotdb/db/rescon/TsFileResourceManager.java     |  121 +
 .../java/org/apache/iotdb/db/service/IoTDB.java    |   11 +-
 .../org/apache/iotdb/db/service/ServiceType.java   |    1 +
 .../org/apache/iotdb/db/service/SettleService.java |  190 ++
 .../org/apache/iotdb/db/service/TSServiceImpl.java |  135 +-
 .../receiver/recover/SyncReceiverLogAnalyzer.java  |    2 +-
 .../db/sync/receiver/transfer/SyncServiceImpl.java |    2 +-
 .../db/sync/sender/manage/SyncFileManager.java     |    4 +-
 .../iotdb/db/sync/sender/transfer/SyncClient.java  |   34 +-
 .../apache/iotdb/db/tools/TsFileRewriteTool.java   |  117 +-
 .../db/tools/settle/TsFileAndModSettleTool.java    |  360 ++
 .../db/tools/upgrade/TsFileOnlineUpgradeTool.java  |   73 +-
 .../org/apache/iotdb/db/utils/FilePathUtils.java   |  261 --
 .../java/org/apache/iotdb/db/utils/MergeUtils.java |    8 +-
 .../runtime/WindowEvaluationTaskPoolManager.java   |    2 +-
 .../db/writelog/node/ExclusiveWriteLogNode.java    |    1 -
 .../db/conf/adapter/CompressionRatioTest.java      |    2 +-
 .../org/apache/iotdb/db/constant/TestConstant.java |   30 +
 .../MergeTest.java => cache/ChunkCacheTest.java}   |  193 +-
 .../engine/compaction/CompactionSchedulerTest.java | 2093 ++++++++++++
 .../compaction/CompactionTaskComparatorTest.java   |  313 ++
 .../compaction/LevelCompactionMergeTest.java       |  375 ---
 .../engine/compaction/LevelCompactionModsTest.java |  135 -
 .../compaction/LevelCompactionSelectorTest.java    |   76 -
 .../LevelCompactionTsFileManagementTest.java       |  228 --
 .../NoCompactionTsFileManagementTest.java          |  235 --
 .../compaction/cross/CrossSpaceCompactionTest.java |  720 ++++
 .../cross}/MaxFileMergeFileSelectorTest.java       |   45 +-
 .../cross}/MaxSeriesMergeFileSelectorTest.java     |   18 +-
 .../{merge => compaction/cross}/MergeLogTest.java  |   12 +-
 .../cross}/MergeManagerTest.java                   |   40 +-
 .../cross}/MergeOverLapTest.java                   |   67 +-
 .../{merge => compaction/cross}/MergePerfTest.java |   12 +-
 .../{merge => compaction/cross}/MergeTaskTest.java |  106 +-
 .../{merge => compaction/cross}/MergeTest.java     |   53 +-
 .../cross}/MergeUpgradeTest.java                   |    8 +-
 .../InnerCompactionCacheTest.java}                 |   71 +-
 .../InnerCompactionChunkTest.java}                 |   66 +-
 .../InnerCompactionLogTest.java}                   |   38 +-
 .../InnerCompactionMoreDataTest.java}              |   97 +-
 .../inner/InnerCompactionSchedulerTest.java        |  135 +
 .../InnerCompactionTest.java}                      |  124 +-
 .../compaction/inner/InnerSeqCompactionTest.java   |  934 ++++++
 .../inner/InnerSpaceCompactionUtilsTest.java       |  135 +
 .../compaction/inner/InnerUnseqCompactionTest.java |  780 +++++
 .../SizeTieredCompactionRecoverTest.java}          |  608 ++--
 .../sizetiered/SizeTieredCompactionTest.java}      |  103 +-
 .../task/FakedCrossSpaceCompactionTask.java        |   71 +
 .../task/FakedCrossSpaceCompactionTaskFactory.java |   56 +
 .../task/FakedInnerSpaceCompactionTask.java        |   90 +
 .../task/FakedInnerSpaceCompactionTaskFactory.java |   51 +
 .../compaction/utils/CompactionCheckerUtils.java   |  472 +++
 .../compaction/utils/CompactionClearUtils.java     |   59 +
 .../utils/CompactionFileGeneratorUtils.java        |  246 ++
 .../compaction/utils/CompactionOverlapType.java}   |   12 +-
 .../utils/CompactionTimeseriesType.java}           |   11 +-
 .../engine/modification/DeletionFileNodeTest.java  |   10 -
 .../db/engine/modification/DeletionQueryTest.java  |   12 -
 .../engine/storagegroup/FakedTsFileResource.java   |   76 +
 .../storagegroup/StorageGroupProcessorTest.java    |   49 +-
 .../iotdb/db/engine/storagegroup/TTLTest.java      |   12 -
 .../db/engine/storagegroup/TsFileManagerTest.java  |  240 ++
 .../engine/storagegroup/TsFileProcessorTest.java   |   15 +-
 .../storagegroup/TsFileResourceListTest.java       |  185 +
 .../iotdb/db/integration/IOTDBGroupByIT.java       |    7 -
 .../iotdb/db/integration/IoTDBAlignByDeviceIT.java |    8 -
 .../iotdb/db/integration/IoTDBCompleteIT.java      |    9 +-
 .../db/integration/IoTDBContinuousQueryIT.java     |   52 +-
 .../db/integration/IoTDBDeleteTimeseriesIT.java    |    7 -
 .../iotdb/db/integration/IoTDBFilePathUtilsIT.java |    8 +-
 .../apache/iotdb/db/integration/IoTDBFillIT.java   |    6 -
 .../iotdb/db/integration/IoTDBGroupByMonthIT.java  |    8 -
 .../iotdb/db/integration/IoTDBGroupByUnseqIT.java  |    4 -
 .../org/apache/iotdb/db/integration/IoTDBInIT.java |   24 +-
 .../iotdb/db/integration/IoTDBLargeDataIT.java     |    7 -
 ...IoTDBLoadExternalTsFileWithTimePartitionIT.java |   34 +-
 .../db/integration/IoTDBLoadExternalTsfileIT.java  |   72 +-
 .../integration/IoTDBManageTsFileResourceIT.java   |  292 ++
 .../apache/iotdb/db/integration/IoTDBMergeIT.java  |   89 +-
 .../iotdb/db/integration/IoTDBMultiDeviceIT.java   |    7 -
 .../IoTDBMultiOverlappedChunkInUnseqIT.java        |   11 +-
 .../db/integration/IoTDBMultiOverlappedPageIT.java |    7 -
 .../iotdb/db/integration/IoTDBMultiSeriesIT.java   |    7 -
 .../db/integration/IoTDBMultiStatementsIT.java     |    7 -
 .../iotdb/db/integration/IoTDBNestedQueryIT.java   |   28 +-
 .../db/integration/IoTDBNewTsFileCompactionIT.java |   51 +-
 .../db/integration/IoTDBOverlappedPageIT.java      |   11 -
 .../iotdb/db/integration/IoTDBQueryDemoIT.java     |   20 +-
 .../iotdb/db/integration/IoTDBQueryTimeoutIT.java  |    4 +-
 .../db/integration/IoTDBRemovePartitionIT.java     |    4 +-
 .../iotdb/db/integration/IoTDBRestartIT.java       |    4 +-
 .../iotdb/db/integration/IoTDBSelectIntoIT.java    |    2 -
 .../db/integration/IoTDBSequenceDataQueryIT.java   |   20 -
 .../iotdb/db/integration/IoTDBSeriesReaderIT.java  |   30 -
 .../IoTDBSetSystemReadOnlyWritableIT.java          |   20 +-
 .../apache/iotdb/db/integration/IoTDBSettleIT.java |   94 +
 .../iotdb/db/integration/IoTDBSimpleQueryIT.java   |   37 +
 ...ionIT.java => IoTDBSizeTieredCompactionIT.java} |  498 ++-
 .../iotdb/db/integration/IoTDBTracingIT.java       |   62 +-
 .../db/integration/IoTDBTriggerExecutionIT.java    |  178 +-
 .../db/integration/IoTDBTriggerManagementIT.java   |    8 +-
 .../iotdb/db/integration/IoTDBUDFManagementIT.java |   26 +-
 .../db/integration/IoTDBUDFWindowQueryIT.java      |   20 +-
 .../integration/IoTDBUDTFAlignByTimeQueryIT.java   |   18 +-
 .../db/integration/IoTDBUDTFHybridQueryIT.java     |   10 +-
 .../db/integration/IoTDBUDTFNonAlignQueryIT.java   |    6 +-
 .../aggregation/IoTDBAggregationByLevelIT.java     |  218 +-
 .../aggregation/IoTDBAggregationIT.java            |    7 -
 .../aggregation/IoTDBAggregationLargeDataIT.java   |    7 -
 .../aggregation/IoTDBAggregationSmallDataIT.java   |    8 -
 .../db/integration/auth/IoTDBAuthorizationIT.java  |  106 +-
 .../iotdb/db/metadata/MManagerAdvancedTest.java    |   12 +-
 .../iotdb/db/metadata/MManagerBasicTest.java       |  128 +-
 .../org/apache/iotdb/db/metadata/MTreeTest.java    |   18 +-
 .../apache/iotdb/db/metadata/PartialPathTest.java  |    7 +
 .../iotdb/db/metadata/mlog/MLogUpgraderTest.java   |  104 +
 .../iotdb/db/qp/logical/IndexLogicalPlanTest.java  |  156 -
 .../iotdb/db/qp/other/TSPlanContextAuthorTest.java |    8 +-
 .../physical/IndexSubMatchingPhysicalPlanTest.java |  163 -
 .../IndexWholeMatchingPhysicalPlanTest.java        |  168 -
 .../iotdb/db/qp/physical/PhysicalPlanTest.java     |   30 +-
 .../iotdb/db/qp/sql/IoTDBsqlVisitorTest.java       |   12 +-
 .../iotdb/db/query/control/TracingManagerTest.java |  115 -
 .../query/dataset/UDTFAlignByTimeDataSetTest.java  |    8 +-
 .../reader/series/SeriesAggregateReaderTest.java   |    9 +-
 .../reader/series/SeriesReaderByTimestampTest.java |    9 +-
 .../db/query/reader/series/SeriesReaderTest.java   |    8 +-
 .../query/reader/series/SeriesReaderTestUtil.java  |   47 +-
 .../iotdb/db/rescon/ResourceManagerTest.java       |  401 +++
 .../db/sync/receiver/load/FileLoaderTest.java      |    9 +-
 .../db/sync/sender/manage/SyncFileManagerTest.java |    2 +-
 .../sender/recover/SyncSenderLogAnalyzerTest.java  |    2 +-
 .../db/sync/sender/transfer/SyncClientTest.java    |    2 +-
 .../iotdb/db/tools/TsFileAndModSettleToolTest.java |  238 ++
 .../apache/iotdb/db/utils/EnvironmentUtils.java    |   18 +-
 .../iotdb/db/utils/TsFileRewriteToolTest.java      |   76 +-
 .../db/writelog/recover/SeqTsFileRecoverTest.java  |   10 +-
 .../java/org/apache/iotdb/rpc/TSStatusCode.java    |    3 +
 .../main/java/org/apache/iotdb/session/Config.java |    4 +
 .../org/apache/iotdb/session/InsertConsumer.java   |   21 +-
 .../java/org/apache/iotdb/session/Session.java     |  266 +-
 .../apache/iotdb/session/SessionConnection.java    |   21 +
 .../org/apache/iotdb/session/pool/SessionPool.java |   37 +-
 .../iotdb/session/{ => util}/SessionUtils.java     |    2 +-
 .../org/apache/iotdb/session/util/ThreadUtils.java |   45 +
 .../iotdb/session/IoTDBSessionComplexIT.java       |    4 +-
 .../apache/iotdb/session/IoTDBSessionSimpleIT.java |    3 +-
 .../session/IoTDBSessionVectorABDeviceIT.java      |    7 +-
 .../session/IoTDBSessionVectorAggregationIT.java   |    7 +-
 .../IoTDBSessionVectorAggregationWithUnSeqIT.java  |    7 +-
 .../java/org/apache/iotdb/session/SessionTest.java |   94 +
 .../apache/iotdb/session/pool/SessionPoolTest.java |   35 +-
 .../apache/iotdb/session/util/ThreadUtilsTest.java |   24 +-
 site/pom.xml                                       |   12 +-
 site/src/main/.vuepress/config.js                  |    3 +-
 spark-iotdb-connector/Readme.md                    |  168 -
 spark-tsfile/README.md                             |  335 --
 .../test/java/org/apache/iotdb/db/sql/Cases.java   |  242 +-
 thrift-cluster/src/main/thrift/cluster.thrift      |    8 +-
 thrift/rpc-changelist.md                           |   22 +
 thrift/src/main/thrift/rpc.thrift                  |   25 +-
 .../iotdb/tsfile/file/metadata/ChunkMetadata.java  |   17 +-
 .../read/controller/CachedChunkLoaderImpl.java     |    3 +-
 .../java/org/apache/iotdb/tsfile/utils/BitMap.java |   37 +-
 .../apache/iotdb/tsfile/utils/FilePathUtils.java   |  126 +
 .../tsfile/write/chunk/ChunkGroupWriterImpl.java   |    2 +-
 .../iotdb/tsfile/write/chunk/ChunkWriterImpl.java  |    2 +-
 .../iotdb/tsfile/write/chunk/IChunkWriter.java     |    2 +-
 .../tsfile/write/chunk/VectorChunkWriterImpl.java  |    3 +-
 .../write/writer/RestorableTsFileIOWriter.java     |   41 +
 .../iotdb/tsfile/write/writer/TsFileIOWriter.java  |    2 +-
 .../apache/iotdb/tsfile/constant/TestConstant.java |    4 +
 .../iotdb/tsfile/read/ReadOnlyTsFileTest.java      |    7 +-
 .../org/apache/iotdb/tsfile/read/ReadTest.java     |    3 +-
 .../iotdb/tsfile/read/TimePlainEncodeReadTest.java |    3 +-
 .../read/query/timegenerator/ReadWriteTest.java    |    8 +-
 .../timegenerator/TimeGeneratorReadEmptyTest.java  |    7 +-
 .../timegenerator/TimeGeneratorReadWriteTest.java  |    7 +-
 .../TsFileGeneratorForSeriesReaderByTimestamp.java |   21 +-
 .../apache/iotdb/tsfile/utils/FileGenerator.java   |   36 +-
 .../iotdb/tsfile}/utils/FilePathUtilsTest.java     |   36 +-
 .../iotdb/tsfile/utils/TsFileGeneratorForTest.java |   39 +-
 .../tsfile/write/DefaultSchemaTemplateTest.java    |    6 +-
 ...SameMeasurementsWithDifferentDataTypesTest.java |    7 +-
 .../iotdb/tsfile/write/TsFileIOWriterTest.java     |  142 +-
 .../iotdb/tsfile/write/TsFileReadWriteTest.java    |    7 +-
 .../iotdb/tsfile/write/TsFileWriterTest.java       |   17 +-
 .../write/writer/ForceAppendTsFileWriterTest.java  |    8 +-
 .../write/writer/RestorableTsFileIOWriterTest.java |   79 +-
 .../write/writer/VectorChunkWriterImplTest.java    |    4 +-
 zeppelin-interpreter/pom.xml                       |    2 +-
 450 files changed, 25967 insertions(+), 12690 deletions(-)

diff --cc 
server/src/test/java/org/apache/iotdb/db/integration/IoTDBTriggerExecutionIT.java
index 7492f62,18fcb95..de4d66f
--- 
a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBTriggerExecutionIT.java
+++ 
b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBTriggerExecutionIT.java
@@@ -31,12 -31,12 +31,6 @@@ import org.apache.iotdb.tsfile.file.met
  import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
  import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
  
--import org.junit.After;
--import org.junit.Before;
--import org.junit.Test;
--import org.slf4j.Logger;
--import org.slf4j.LoggerFactory;
--
  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.SQLException;
@@@ -44,6 -44,6 +38,12 @@@ import java.sql.Statement
  import java.util.Arrays;
  import java.util.Collections;
  
++import org.junit.After;
++import org.junit.Before;
++import org.junit.Test;
++import org.slf4j.Logger;
++import org.slf4j.LoggerFactory;
++
  import static org.junit.Assert.assertEquals;
  import static org.junit.Assert.assertTrue;
  import static org.junit.Assert.fail;
@@@ -205,32 -202,41 +202,41 @@@ public class IoTDBTriggerExecutionIT 
              DriverManager.getConnection(
                  Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
          Statement statement = connection.createStatement()) {
-       Thread.sleep(500);
+       waitCountIncreaseBy(500);
  
        statement.execute(
 -          "create trigger trigger-1 before insert on root.vehicle.d1.s1 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_1 before insert on root.vehicle.d1.s1 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-2 after insert on root.vehicle.d1.s2 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_2 after insert on root.vehicle.d1.s2 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-3 before insert on root.vehicle.d1.s3 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_3 before insert on root.vehicle.d1.s3 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
  
-       Thread.sleep(500);
+       waitCountIncreaseBy(500);
  
+       // IOTDB-1825: if the background data generator's connection is closed, 
the following checks
+       // will be meaningless, in which case we ignore the checks
+       if (exception != null) {
+         return;
+       }
        int[] counters1 = getCounters(3);
-       LOGGER.info(Arrays.toString(counters1));
        for (int i = 0; i < 3; ++i) {
          assertTrue(Counter.BASE < counters1[i]);
        }
  
-       Thread.sleep(500);
+       waitCountIncreaseBy(500);
  
        statement.execute(
 -          "create trigger trigger-4 after insert on root.vehicle.d1.s4 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_4 after insert on root.vehicle.d1.s4 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-5 before insert on root.vehicle.d1.s5 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_5 before insert on root.vehicle.d1.s5 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-6 after insert on root.vehicle.d1.s6 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_6 after insert on root.vehicle.d1.s6 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
  
+       // IOTDB-1825: if the background data generator's connection is closed, 
the following checks
+       // will be meaningless, in which case we ignore the checks
+       if (exception != null) {
+         return;
+       }
        int[] counters2 = getCounters(3);
        LOGGER.info(Arrays.toString(counters2));
        for (int i = 0; i < 3; ++i) {
@@@ -251,48 -257,58 +257,58 @@@
              DriverManager.getConnection(
                  Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
          Statement statement = connection.createStatement()) {
-       Thread.sleep(500);
+       waitCountIncreaseBy(500);
  
        statement.execute(
 -          "create trigger trigger-1 before insert on root.vehicle.d1.s1 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_1 before insert on root.vehicle.d1.s1 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-2 after insert on root.vehicle.d1.s2 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_2 after insert on root.vehicle.d1.s2 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-3 before insert on root.vehicle.d1.s3 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_3 before insert on root.vehicle.d1.s3 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
  
-       Thread.sleep(500);
+       waitCountIncreaseBy(500);
  
+       // IOTDB-1825: if the background data generator's connection is closed, 
the following checks
+       // will be meaningless, in which case we ignore the checks
+       if (exception != null) {
+         return;
+       }
        int[] counters1 = getCounters(3);
        LOGGER.info(Arrays.toString(counters1));
        for (int i = 0; i < 3; ++i) {
          assertTrue(Counter.BASE < counters1[i]);
        }
  
-       Thread.sleep(100);
+       waitCountIncreaseBy(100);
 -      statement.execute("drop trigger trigger-1");
 -      statement.execute("drop trigger trigger-2");
 -      statement.execute("drop trigger trigger-3");
 +      statement.execute("drop trigger trigger_1");
 +      statement.execute("drop trigger trigger_2");
 +      statement.execute("drop trigger trigger_3");
-       Thread.sleep(100);
+       waitCountIncreaseBy(100);
        statement.execute(
-           "create trigger trigger_1 before insert on root.vehicle.d1.s1 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
 -          "create trigger trigger-1 before insert on root.vehicle.d1.s1 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
++          "create trigger trigger_1 before insert on root.vehicle.d1.s1 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
        statement.execute(
-           "create trigger trigger_2 after insert on root.vehicle.d1.s2 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
 -          "create trigger trigger-2 after insert on root.vehicle.d1.s2 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
++          "create trigger trigger_2 after insert on root.vehicle.d1.s2 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
        statement.execute(
-           "create trigger trigger_3 before insert on root.vehicle.d1.s3 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
-       Thread.sleep(100);
 -          "create trigger trigger-3 before insert on root.vehicle.d1.s3 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
++          "create trigger trigger_3 before insert on root.vehicle.d1.s3 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
+       waitCountIncreaseBy(100);
 -      statement.execute("drop trigger trigger-1");
 -      statement.execute("drop trigger trigger-2");
 -      statement.execute("drop trigger trigger-3");
 +      statement.execute("drop trigger trigger_1");
 +      statement.execute("drop trigger trigger_2");
 +      statement.execute("drop trigger trigger_3");
-       Thread.sleep(100);
+       waitCountIncreaseBy(100);
        statement.execute(
-           "create trigger trigger_1 before insert on root.vehicle.d1.s1 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
 -          "create trigger trigger-1 before insert on root.vehicle.d1.s1 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
++          "create trigger trigger_1 before insert on root.vehicle.d1.s1 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
        statement.execute(
-           "create trigger trigger_2 after insert on root.vehicle.d1.s2 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
 -          "create trigger trigger-2 after insert on root.vehicle.d1.s2 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
++          "create trigger trigger_2 after insert on root.vehicle.d1.s2 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
        statement.execute(
-           "create trigger trigger_3 before insert on root.vehicle.d1.s3 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
 -          "create trigger trigger-3 before insert on root.vehicle.d1.s3 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
++          "create trigger trigger_3 before insert on root.vehicle.d1.s3 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
  
-       Thread.sleep(500);
+       waitCountIncreaseBy(500);
  
+       // IOTDB-1825: if the background data generator's connection is closed, 
the following checks
+       // will be meaningless, in which case we ignore the checks
+       if (exception != null) {
+         return;
+       }
        int[] counters2 = getCounters(3);
        LOGGER.info(Arrays.toString(counters2));
        for (int i = 0; i < 3; ++i) {
@@@ -313,35 -329,35 +329,35 @@@
              DriverManager.getConnection(
                  Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
          Statement statement = connection.createStatement()) {
-       Thread.sleep(500);
+       waitCountIncreaseBy(500);
  
        statement.execute(
 -          "create trigger trigger-1 before insert on root.vehicle.d1.s1 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_1 before insert on root.vehicle.d1.s1 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-2 after insert on root.vehicle.d1.s2 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_2 after insert on root.vehicle.d1.s2 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-3 before insert on root.vehicle.d1.s3 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_3 before insert on root.vehicle.d1.s3 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-4 after insert on root.vehicle.d1.s4 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_4 after insert on root.vehicle.d1.s4 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-5 before insert on root.vehicle.d1.s5 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_5 before insert on root.vehicle.d1.s5 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-6 after insert on root.vehicle.d1.s6 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_6 after insert on root.vehicle.d1.s6 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
  
-       Thread.sleep(500);
+       waitCountIncreaseBy(500);
  
 -      statement.execute("stop trigger trigger-1");
 -      statement.execute("stop trigger trigger-2");
 -      statement.execute("stop trigger trigger-3");
 +      statement.execute("stop trigger trigger_1");
 +      statement.execute("stop trigger trigger_2");
 +      statement.execute("stop trigger trigger_3");
  
        int[] counters1 = getCounters(6);
        LOGGER.info(Arrays.toString(counters1));
  
-       Thread.sleep(500);
+       waitCountIncreaseBy(500);
  
 -      statement.execute("stop trigger trigger-4");
 -      statement.execute("stop trigger trigger-5");
 -      statement.execute("stop trigger trigger-6");
 +      statement.execute("stop trigger trigger_4");
 +      statement.execute("stop trigger trigger_5");
 +      statement.execute("stop trigger trigger_6");
  
        int[] counters2 = getCounters(6);
        LOGGER.info(Arrays.toString(counters2));
@@@ -352,12 -374,17 +374,17 @@@
          assertTrue(counters1[i] < counters2[i]);
        }
  
 -      statement.execute("start trigger trigger-1");
 -      statement.execute("start trigger trigger-2");
 -      statement.execute("start trigger trigger-3");
 +      statement.execute("start trigger trigger_1");
 +      statement.execute("start trigger trigger_2");
 +      statement.execute("start trigger trigger_3");
  
-       Thread.sleep(500);
+       waitCountIncreaseBy(500);
  
+       // IOTDB-1825: if the background data generator's connection is closed, 
the following checks
+       // will be meaningless, in which case we ignore the checks
+       if (exception != null) {
+         return;
+       }
        int[] counters3 = getCounters(6);
        LOGGER.info(Arrays.toString(counters3));
        for (int i = 0; i < 3; ++i) {
@@@ -367,29 -394,39 +394,39 @@@
          assertEquals(counters2[i], counters3[i]);
        }
  
 -      statement.execute("start trigger trigger-4");
 -      statement.execute("start trigger trigger-5");
 -      statement.execute("start trigger trigger-6");
 +      statement.execute("start trigger trigger_4");
 +      statement.execute("start trigger trigger_5");
 +      statement.execute("start trigger trigger_6");
  
-       Thread.sleep(500);
+       waitCountIncreaseBy(500);
  
+       // IOTDB-1825: if the background data generator's connection is closed, 
the following checks
+       // will be meaningless, in which case we ignore the checks
+       if (exception != null) {
+         return;
+       }
        int[] counters4 = getCounters(6);
        LOGGER.info(Arrays.toString(counters4));
        for (int i = 0; i < 6; ++i) {
          assertTrue(counters3[i] < counters4[i]);
        }
  
 -      statement.execute("stop trigger trigger-1");
 -      statement.execute("stop trigger trigger-2");
 -      statement.execute("stop trigger trigger-3");
 -      statement.execute("stop trigger trigger-4");
 -      statement.execute("stop trigger trigger-5");
 -      statement.execute("stop trigger trigger-6");
 +      statement.execute("stop trigger trigger_1");
 +      statement.execute("stop trigger trigger_2");
 +      statement.execute("stop trigger trigger_3");
 +      statement.execute("stop trigger trigger_4");
 +      statement.execute("stop trigger trigger_5");
 +      statement.execute("stop trigger trigger_6");
  
-       Thread.sleep(500);
+       waitCountIncreaseBy(500);
        int[] counters5 = getCounters(6);
-       Thread.sleep(500);
+       waitCountIncreaseBy(500);
        int[] counters6 = getCounters(6);
+       // IOTDB-1825: if the background data generator's connection is closed, 
the following checks
+       // will be meaningless, in which case we ignore the checks
+       if (exception != null) {
+         return;
+       }
        assertEquals(Arrays.toString(counters5), Arrays.toString(counters6));
      } catch (SQLException | TriggerManagementException e) {
        fail(e.getMessage());
@@@ -416,23 -453,28 +453,28 @@@
              DriverManager.getConnection(
                  Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
          Statement statement = connection.createStatement()) {
-       Thread.sleep(500);
+       waitCountIncreaseBy(500);
  
        statement.execute(
 -          "create trigger trigger-1 before insert on root.vehicle.d1.s1 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_1 before insert on root.vehicle.d1.s1 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-2 after insert on root.vehicle.d1.s2 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_2 after insert on root.vehicle.d1.s2 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-3 before insert on root.vehicle.d1.s3 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_3 before insert on root.vehicle.d1.s3 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-4 after insert on root.vehicle.d1.s4 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_4 after insert on root.vehicle.d1.s4 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-5 before insert on root.vehicle.d1.s5 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_5 before insert on root.vehicle.d1.s5 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-6 after insert on root.vehicle.d1.s6 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_6 after insert on root.vehicle.d1.s6 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
  
-       Thread.sleep(500);
+       waitCountIncreaseBy(500);
  
+       // IOTDB-1825: if the background data generator's connection is closed, 
the following checks
+       // will be meaningless, in which case we ignore the checks
+       if (exception != null) {
+         return;
+       }
        int[] counters1 = getCounters(6);
        LOGGER.info(Arrays.toString(counters1));
        for (int i = 0; i < 6; ++i) {
@@@ -502,19 -546,19 +546,19 @@@
                  Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
          Statement statement = connection.createStatement()) {
        statement.execute(
 -          "create trigger trigger-1 before insert on root.vehicle.d1.s1 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_1 before insert on root.vehicle.d1.s1 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-2 after insert on root.vehicle.d1.s2 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_2 after insert on root.vehicle.d1.s2 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-3 before insert on root.vehicle.d1.s3 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_3 before insert on root.vehicle.d1.s3 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-4 after insert on root.vehicle.d1.s4 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_4 after insert on root.vehicle.d1.s4 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-5 before insert on root.vehicle.d1.s5 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_5 before insert on root.vehicle.d1.s5 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
        statement.execute(
 -          "create trigger trigger-6 after insert on root.vehicle.d1.s6 as 
'org.apache.iotdb.db.engine.trigger.example.Counter'");
 +          "create trigger trigger_6 after insert on root.vehicle.d1.s6 as 
\'org.apache.iotdb.db.engine.trigger.example.Counter\'");
  
-       Thread.sleep(500);
+       waitCountIncreaseBy(500);
  
        stopDataGenerator();
  
diff --cc 
server/src/test/java/org/apache/iotdb/db/integration/IoTDBTriggerManagementIT.java
index 373b47c,ec9a238..f0c3d65
--- 
a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBTriggerManagementIT.java
+++ 
b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBTriggerManagementIT.java
@@@ -33,16 -33,16 +33,16 @@@ import org.apache.iotdb.tsfile.file.met
  import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
  import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
  
--import org.junit.After;
--import org.junit.Before;
--import org.junit.Test;
--
  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.ResultSet;
  import java.sql.SQLException;
  import java.sql.Statement;
  
++import org.junit.After;
++import org.junit.Before;
++import org.junit.Test;
++
  import static org.junit.Assert.assertEquals;
  import static org.junit.Assert.assertFalse;
  import static org.junit.Assert.assertTrue;

Reply via email to