This is an automated email from the ASF dual-hosted git repository. Caideyipi pushed a commit to branch codex/fix-pipe-tsfile-mods-race in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit aaad6f2a59c75d57b5adfabaf4ef69ecf61e3f0c Author: Caideyipi <[email protected]> AuthorDate: Wed Sep 2 15:46:15 2026 +0800 Stabilize pipe TsFile decomposition mods IT --- .../IoTDBPipeTsFileDecompositionWithModsIT.java | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/integration-test/src/test/java/org/apache/iotdb/pipe/it/dual/tablemodel/manual/basic/IoTDBPipeTsFileDecompositionWithModsIT.java b/integration-test/src/test/java/org/apache/iotdb/pipe/it/dual/tablemodel/manual/basic/IoTDBPipeTsFileDecompositionWithModsIT.java index 04e3e38167a..d010513b481 100644 --- a/integration-test/src/test/java/org/apache/iotdb/pipe/it/dual/tablemodel/manual/basic/IoTDBPipeTsFileDecompositionWithModsIT.java +++ b/integration-test/src/test/java/org/apache/iotdb/pipe/it/dual/tablemodel/manual/basic/IoTDBPipeTsFileDecompositionWithModsIT.java @@ -21,6 +21,7 @@ package org.apache.iotdb.pipe.it.dual.tablemodel.manual.basic; import org.apache.iotdb.db.it.utils.TestUtils; import org.apache.iotdb.isession.SessionConfig; +import org.apache.iotdb.it.env.cluster.node.DataNodeWrapper; import org.apache.iotdb.it.framework.IoTDBTestRunner; import org.apache.iotdb.itbase.category.MultiClusterIT2DualTableManualBasic; import org.apache.iotdb.itbase.env.BaseEnv; @@ -148,6 +149,50 @@ public class IoTDBPipeTsFileDecompositionWithModsIT extends AbstractPipeTableMod Collections.emptySet(), "sg1"); + // Wait until the deletion mods are visible through every sender endpoint before creating the + // pipe. Historical extraction may otherwise read a source TsFile from a stale region leader. + for (DataNodeWrapper dataNode : senderEnv.getDataNodeWrapperList()) { + TestUtils.assertDataEventuallyOnEnv( + senderEnv, + dataNode, + "SELECT COUNT(*) as count FROM table1 WHERE s0 ='t10' AND s1='t10' AND s2='t10' AND s3='t10'", + "count,", + Collections.singleton("1000,"), + "sg2"); + + TestUtils.assertDataEventuallyOnEnv( + senderEnv, + dataNode, + "SELECT COUNT(*) as count FROM table1 WHERE s0 ='t11' AND s1='t11' AND s2='t11' AND s3='t11'", + "count,", + Collections.singleton("0,"), + "sg2"); + + TestUtils.assertDataEventuallyOnEnv( + senderEnv, + dataNode, + "SELECT COUNT(*) as count FROM table1 WHERE s0 ='t12' AND s1='t12' AND s2='t12' AND s3='t12'", + "count,", + Collections.singleton("5900,"), + "sg2"); + + TestUtils.assertDataEventuallyOnEnv( + senderEnv, + dataNode, + "SELECT COUNT(*) as count FROM table1 WHERE s0 ='t13' AND s1='t13' AND s2='t13' AND s3='t13'", + "count,", + Collections.singleton("1000,"), + "sg2"); + + TestUtils.assertDataEventuallyOnEnv( + senderEnv, + dataNode, + "SELECT COUNT(*) as count FROM table1 WHERE s0 ='t14' AND s1='t14' AND s2='t14' AND s3='t14'", + "count,", + Collections.singleton("10000,"), + "sg2"); + } + executeNonQueryWithRetry( senderEnv, String.format(
