Skip to content

Commit f4ebc94

Browse files
committed
Merge remote-tracking branch 'origin/master' into codex/ipv6-endpoint-support
2 parents 079405c + 350c6c7 commit f4ebc94

211 files changed

Lines changed: 8880 additions & 1927 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎RELEASE_NOTES.md‎

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,44 @@
1919
2020
-->
2121

22+
# Apache IoTDB 2.0.10
23+
24+
## Features & Improvements
25+
26+
- Data Query: Support schema-level and table-level storage space statistics
27+
- Data Query: Add DEBUG SQL capability and optimize the result set of Explain Analyze
28+
- Data Query: Support set operations (UNION/INTERSECT/EXCEPT) and Common Table Expressions (CTE) in the table model
29+
- Data Query: Add IF scalar function, binary functions and APPROX_PERCENTILE aggregate function for the table model
30+
- Data Query: Optimize display fields of the show queries command, add three new columns: client IP that initiates the query, timeout threshold, and total request waiting latency
31+
- Storage Management: Provide C-language driver SDK interfaces, including parameter binding, automatic failover for multi-node switching and other fault-tolerant capabilities
32+
- System Management: Add the capability to manually trigger node load balancing
33+
- System Management: Add progress query capability for the remove datanode operation
34+
- System Management: Introduce the show configuration statement to view cluster configuration information
35+
- System Management: Add statistics for the number of slow write requests
36+
- AI Management: Add two built-in models: Moirai2 and Toto
37+
- AI Management: Enable AINode to manage multiple models under the same model_type
38+
- AI Management: Support loading built-in models for CPU inference with isolated inference processes
39+
40+
## Bugs
41+
42+
- Fix the issue that partition tables get lost when leader switch happens on single-node ConfigNode
43+
- Fix the bug where configurations delivered via set configuration to a single DataNode take effect on all other DataNodes unexpectedly
44+
- Fix the occasional continuous accumulation of reservedSize for timeout-only queries across multiple devices in tree model, which triggers query errors after hitting the max capacity limit
45+
- Fix the parsing error in tree-model-to-table conversion logic when tree paths consist entirely of numeric characters
46+
- Correct abnormal output of show devices root.db.** when root.db itself is a device, making it display root.db properly
47+
- Fix the failure of kill query and query timeout mechanism when the client holds the connection open without fully consuming all result sets
48+
- Fix array index out-of-bounds error caused by null values in attribute fields on the receiver side, which blocks the data synchronization pipeline
49+
- Fix connection pool leakage exceptions in the C# client
50+
- Fix exceptions occurring in the C++ client when write redirection is enabled while dn_rpc_address is configured to 0.0.0.0 on DataNode server
51+
- Fix abnormal repeated broadcasting of deletion markers (Deletions) during the load operation
52+
- Fix the issue that rows with null inserted fields cannot be synchronized to the receiver in real-time data synchronization scenarios
53+
- Fix incorrect idempotency logic for out-of-order TTL-expired data on the synchronization receiver, which leads to repeated synchronization of expired data
54+
- Fix the problem that enable-send-tsfile-limit parameter cannot be manually configured for historical Pipes split from full-data Pipe tasks
55+
- Fix Pipe temporary stoppage triggered by insufficient memory of a single subtask within synchronization jobs
56+
- Fix the issue that modifying username/password of source or sink in write-back-sink model generates error logs and prevents data from being received on the sink side
57+
- Fix permission issue preventing non-root users from stopping the AINode process
58+
- Mitigate memory leaks that tend to occur during long-running continuous inference of models running on CPU
59+
2260
# Apache IoTDB 2.0.8
2361

2462
## Features & Improvements

‎integration-test/src/main/java/org/apache/iotdb/it/env/MultiEnvFactory.java‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,17 @@ public class MultiEnvFactory {
3333
private static final List<BaseEnv> envList = new ArrayList<>();
3434
private static final Logger logger = IoTDBTestLogger.logger;
3535
private static String currentMethodName;
36+
private static String currentClassName;
3637

3738
private MultiEnvFactory() {
3839
// Empty constructor
3940
}
4041

42+
public static void setTestClassName(final String testClassName) {
43+
currentClassName = testClassName;
44+
envList.forEach(baseEnv -> baseEnv.setTestClassName(testClassName));
45+
}
46+
4147
public static void setTestMethodName(final String testMethodName) {
4248
currentMethodName = testMethodName;
4349
envList.forEach(baseEnv -> baseEnv.setTestMethodName(testMethodName));
@@ -56,7 +62,7 @@ public static void createEnv(final int num) {
5662
for (int i = 0; i < num; ++i) {
5763
try {
5864
Class.forName(Config.JDBC_DRIVER_NAME);
59-
envList.add(new MultiClusterEnv(startTime, i, currentMethodName));
65+
envList.add(new MultiClusterEnv(startTime, i, currentClassName, currentMethodName));
6066
} catch (final ClassNotFoundException e) {
6167
logger.error("Create env error", e);
6268
System.exit(-1);

‎integration-test/src/main/java/org/apache/iotdb/it/env/cluster/config/MppCommonConfig.java‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,12 @@ public CommonConfig setMemtableSizeThreshold(long memtableSizeThreshold) {
8585
return this;
8686
}
8787

88+
@Override
89+
public CommonConfig setMetadataLeaseFenceMs(long metadataLeaseFenceMs) {
90+
setProperty("metadata_lease_fence_ms", String.valueOf(metadataLeaseFenceMs));
91+
return this;
92+
}
93+
8894
@Override
8995
public CommonConfig setPartitionInterval(long partitionInterval) {
9096
setProperty("time_partition_interval", String.valueOf(partitionInterval));

‎integration-test/src/main/java/org/apache/iotdb/it/env/cluster/config/MppSharedCommonConfig.java‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,13 @@ public CommonConfig setMemtableSizeThreshold(long memtableSizeThreshold) {
6161
return this;
6262
}
6363

64+
@Override
65+
public CommonConfig setMetadataLeaseFenceMs(long metadataLeaseFenceMs) {
66+
cnConfig.setMetadataLeaseFenceMs(metadataLeaseFenceMs);
67+
dnConfig.setMetadataLeaseFenceMs(metadataLeaseFenceMs);
68+
return this;
69+
}
70+
6471
@Override
6572
public CommonConfig setPartitionInterval(long partitionInterval) {
6673
cnConfig.setPartitionInterval(partitionInterval);

‎integration-test/src/main/java/org/apache/iotdb/it/env/cluster/env/AbstractEnv.java‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ public abstract class AbstractEnv implements BaseEnv {
105105
protected List<ConfigNodeWrapper> configNodeWrapperList = Collections.emptyList();
106106
protected List<DataNodeWrapper> dataNodeWrapperList = Collections.emptyList();
107107
protected List<AbstractNodeWrapper> extraNodeWrappers = Collections.emptyList();
108+
protected String testClassName = null;
108109
protected String testMethodName = null;
109110
protected int index = 0;
110111
protected long startTime;
@@ -331,6 +332,9 @@ private DataNodeWrapper newDataNode() {
331332
}
332333

333334
public String getTestClassName() {
335+
if (testClassName != null) {
336+
return testClassName;
337+
}
334338
final StackTraceElement[] stack = Thread.currentThread().getStackTrace();
335339
for (final StackTraceElement stackTraceElement : stack) {
336340
final String className = stackTraceElement.getClassName();
@@ -1228,6 +1232,17 @@ public String getTestMethodName() {
12281232
return testMethodName;
12291233
}
12301234

1235+
@Override
1236+
public void setTestClassName(final String testClassName) {
1237+
if (testClassName == null || testClassName.isEmpty()) {
1238+
this.testClassName = null;
1239+
return;
1240+
}
1241+
final int lastDotIndex = testClassName.lastIndexOf(".");
1242+
this.testClassName =
1243+
lastDotIndex >= 0 ? testClassName.substring(lastDotIndex + 1) : testClassName;
1244+
}
1245+
12311246
@Override
12321247
public void setTestMethodName(final String testMethodName) {
12331248
this.testMethodName = testMethodName;

‎integration-test/src/main/java/org/apache/iotdb/it/env/cluster/env/MultiClusterEnv.java‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,17 @@
2626
public class MultiClusterEnv extends AbstractEnv {
2727

2828
public MultiClusterEnv(final long startTime, final int index, final String currentMethodName) {
29+
this(startTime, index, null, currentMethodName);
30+
}
31+
32+
public MultiClusterEnv(
33+
final long startTime,
34+
final int index,
35+
final String currentClassName,
36+
final String currentMethodName) {
2937
super(startTime);
3038
this.index = index;
39+
setTestClassName(currentClassName);
3140
this.testMethodName = currentMethodName;
3241
}
3342

‎integration-test/src/main/java/org/apache/iotdb/it/env/remote/config/RemoteCommonConfig.java‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ public CommonConfig setMemtableSizeThreshold(long memtableSizeThreshold) {
4444
return this;
4545
}
4646

47+
@Override
48+
public CommonConfig setMetadataLeaseFenceMs(long metadataLeaseFenceMs) {
49+
return this;
50+
}
51+
4752
@Override
4853
public CommonConfig setPartitionInterval(long partitionInterval) {
4954
return this;

‎integration-test/src/main/java/org/apache/iotdb/itbase/env/BaseEnv.java‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,10 @@ default Connection getConnectionWithSpecifiedDataNode(DataNodeWrapper dataNode)
205205
Connection getConnectionWithSpecifiedDataNode(
206206
DataNodeWrapper dataNode, String username, String password) throws SQLException;
207207

208+
default void setTestClassName(String testClassName) {
209+
// Default no-op for env implementations that do not create local node log directories.
210+
}
211+
208212
void setTestMethodName(String testCaseName);
209213

210214
void dumpTestJVMSnapshot();

‎integration-test/src/main/java/org/apache/iotdb/itbase/env/CommonConfig.java‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ public interface CommonConfig {
3232

3333
CommonConfig setMemtableSizeThreshold(long memtableSizeThreshold);
3434

35+
CommonConfig setMetadataLeaseFenceMs(long metadataLeaseFenceMs);
36+
3537
CommonConfig setPartitionInterval(long partitionInterval);
3638

3739
CommonConfig setCompressor(String compressor);

0 commit comments

Comments
 (0)