This is an automated email from the ASF dual-hosted git repository.
jt2594838 pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/dev/1.3 by this push:
new bfb538a15c9 Fix tree schema snapshot database creation on master
(#17964) (#17979)
bfb538a15c9 is described below
commit bfb538a15c9774252ef1a672c84c7d2ebf7a4977
Author: Caideyipi <[email protected]>
AuthorDate: Thu Jun 18 18:41:18 2026 +0800
Fix tree schema snapshot database creation on master (#17964) (#17979)
(cherry picked from commit dd3153e4038aabfe7e07bfe2e50fc4209b472f10)
---
.../protocol/thrift/IoTDBDataNodeReceiver.java | 23 ++++++++++++++--------
.../protocol/thrift/IoTDBDataNodeReceiverTest.java | 11 +++++++----
2 files changed, 22 insertions(+), 12 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java
index 4c1ed974811..23f537fa2ae 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java
@@ -539,14 +539,13 @@ public class IoTDBDataNodeReceiver extends
IoTDBFileReceiver {
throws IllegalPathException, IOException {
final String databaseName = parameters.get(ColumnHeaderConstant.DATABASE);
final PartialPath databasePath = new PartialPath(databaseName);
-
final String pathPattern =
parameters.get(ColumnHeaderConstant.PATH_PATTERN);
- if (!shouldLoadSchemaSnapshotDatabase(pathPattern, databaseName)) {
- return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
- }
final PipePattern pipePattern =
PipePattern.parsePatternFromString(pathPattern, IoTDBPipePattern::new);
+ if (!shouldLoadTreeSchemaSnapshotDatabase(pipePattern, databaseName)) {
+ return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
+ }
final TSStatus createDatabaseStatus =
createSchemaSnapshotDatabaseIfNecessary(databasePath);
if (createDatabaseStatus.getCode() !=
TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
return createDatabaseStatus;
@@ -584,10 +583,18 @@ public class IoTDBDataNodeReceiver extends
IoTDBFileReceiver {
return PipeReceiverStatusHandler.getPriorStatus(results);
}
- static boolean shouldLoadSchemaSnapshotDatabase(
- final String pathPattern, final String databaseName) {
- return PipePattern.parsePatternFromString(pathPattern,
IoTDBPipePattern::new)
- .mayOverlapWithDb(databaseName);
+ static boolean shouldLoadTreeSchemaSnapshotDatabase(
+ final String pathPattern,
+ final boolean isTreeModelDataAllowedToBeCaptured,
+ final String databaseName) {
+ return isTreeModelDataAllowedToBeCaptured
+ && shouldLoadTreeSchemaSnapshotDatabase(
+ PipePattern.parsePatternFromString(pathPattern,
IoTDBPipePattern::new), databaseName);
+ }
+
+ private static boolean shouldLoadTreeSchemaSnapshotDatabase(
+ final PipePattern pipePattern, final String databaseName) {
+ return pipePattern.mayOverlapWithDb(databaseName);
}
private TSStatus createSchemaSnapshotDatabaseIfNecessary(final PartialPath
databasePath) {
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiverTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiverTest.java
index 9eac46c8351..864d0493979 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiverTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiverTest.java
@@ -111,12 +111,15 @@ public class IoTDBDataNodeReceiverTest {
}
@Test
- public void testSchemaSnapshotDatabaseIsFilteredByPattern() {
+ public void testTreeSchemaSnapshotDatabaseIsFilteredByPattern() {
Assert.assertTrue(
- IoTDBDataNodeReceiver.shouldLoadSchemaSnapshotDatabase("root.ln.**",
"root.ln"));
-
Assert.assertTrue(IoTDBDataNodeReceiver.shouldLoadSchemaSnapshotDatabase("root.**",
"root.db"));
+
IoTDBDataNodeReceiver.shouldLoadTreeSchemaSnapshotDatabase("root.ln.**", true,
"root.ln"));
+ Assert.assertTrue(
+ IoTDBDataNodeReceiver.shouldLoadTreeSchemaSnapshotDatabase("root.**",
true, "root.db"));
+ Assert.assertFalse(
+
IoTDBDataNodeReceiver.shouldLoadTreeSchemaSnapshotDatabase("root.ln.**", true,
"root.db"));
Assert.assertFalse(
- IoTDBDataNodeReceiver.shouldLoadSchemaSnapshotDatabase("root.ln.**",
"root.db"));
+
IoTDBDataNodeReceiver.shouldLoadTreeSchemaSnapshotDatabase("root.ln.**", false,
"root.ln"));
}
@Test