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

Reply via email to