This is an automated email from the ASF dual-hosted git repository. yongzao pushed a commit to branch ban-region-daily-it in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 6ef83e04acf2b6e486f70f9c1324a2fee8873582 Author: Yongzao <[email protected]> AuthorDate: Fri Aug 22 17:54:02 2025 +0800 update region migration cli env & trigger CI --- .github/workflows/daily-it.yml | 22 +++++++++++-- .../iotdb/it/env/cluster/env/AbstractEnv.java | 37 ++++++++++++++++------ .../iotdb/it/env/remote/env/RemoteServerEnv.java | 6 ++++ .../java/org/apache/iotdb/itbase/env/BaseEnv.java | 13 ++++++++ ...IoTDBRegionOperationReliabilityITFramework.java | 2 +- 5 files changed, 67 insertions(+), 13 deletions(-) diff --git a/.github/workflows/daily-it.yml b/.github/workflows/daily-it.yml index c49ef772905..8d7af9a1544 100644 --- a/.github/workflows/daily-it.yml +++ b/.github/workflows/daily-it.yml @@ -1,9 +1,25 @@ name: Daily IT on: - schedule: - # Run at UTC 19:00 every day (CST 03:00 AM) - - cron: '0 19 * * *' + push: + branches: + - master + - 'rel/*' + - 'rc/*' + paths-ignore: + - 'docs/**' + - 'site/**' + pull_request: + branches: + - master + - 'rel/*' + - 'rc/*' + - 'force_ci/**' + paths-ignore: + - 'docs/**' + - 'site/**' + # allow manually run the action: + workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/env/AbstractEnv.java b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/env/AbstractEnv.java index 5cb7f2cd587..c207ca8ac4c 100644 --- a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/env/AbstractEnv.java +++ b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/env/AbstractEnv.java @@ -620,6 +620,14 @@ public abstract class AbstractEnv implements BaseEnv { getReadConnections(null, username, password, sqlDialect)); } + @Override + public Connection getAvailableConnection(String username, String password, String sqlDialect) + throws SQLException { + return new ClusterTestConnection( + getWriteConnection(null, username, password, sqlDialect), + getOneAvailableReadConnection(null, username, password, sqlDialect)); + } + @Override public Connection getConnection( final DataNodeWrapper dataNodeWrapper, @@ -820,15 +828,6 @@ public abstract class AbstractEnv implements BaseEnv { protected NodeConnection getWriteConnection( Constant.Version version, String username, String password, String sqlDialect) throws SQLException { - DataNodeWrapper dataNode; - - if (System.getProperty("RandomSelectWriteNode", "true").equalsIgnoreCase("true")) { - // Randomly choose a node for handling write requests - dataNode = this.dataNodeWrapperList.get(rand.nextInt(this.dataNodeWrapperList.size())); - } else { - dataNode = this.dataNodeWrapperList.get(0); - } - return getWriteConnectionFromDataNodeList( this.dataNodeWrapperList, version, username, password, sqlDialect); } @@ -908,6 +907,26 @@ public abstract class AbstractEnv implements BaseEnv { return readConnRequestDelegate.requestAll(); } + protected List<NodeConnection> getOneAvailableReadConnection( + final Constant.Version version, + final String username, + final String password, + final String sqlDialect) + throws SQLException { + final List<DataNodeWrapper> dataNodeWrapperListCopy = new ArrayList<>(dataNodeWrapperList); + Collections.shuffle(dataNodeWrapperListCopy); + SQLException lastException = null; + for (final DataNodeWrapper dataNode : dataNodeWrapperListCopy) { + try { + return getReadConnections(version, dataNode, username, password, sqlDialect); + } catch (final SQLException e) { + lastException = e; + } + } + logger.error("Failed to get connection from any DataNode, last exception is ", lastException); + throw lastException; + } + protected List<NodeConnection> getReadConnections( final Constant.Version version, final DataNodeWrapper dataNode, diff --git a/integration-test/src/main/java/org/apache/iotdb/it/env/remote/env/RemoteServerEnv.java b/integration-test/src/main/java/org/apache/iotdb/it/env/remote/env/RemoteServerEnv.java index 0cede5cf9d8..586eff60494 100644 --- a/integration-test/src/main/java/org/apache/iotdb/it/env/remote/env/RemoteServerEnv.java +++ b/integration-test/src/main/java/org/apache/iotdb/it/env/remote/env/RemoteServerEnv.java @@ -142,6 +142,12 @@ public class RemoteServerEnv implements BaseEnv { return connection; } + @Override + public Connection getAvailableConnection(String username, String password, String sqlDialect) + throws SQLException { + throw new UnsupportedOperationException(); + } + @Override public Connection getWriteOnlyConnectionWithSpecifiedDataNode( DataNodeWrapper dataNode, String username, String password, String sqlDialect) { diff --git a/integration-test/src/main/java/org/apache/iotdb/itbase/env/BaseEnv.java b/integration-test/src/main/java/org/apache/iotdb/itbase/env/BaseEnv.java index 19dcc77dfde..8b32deb3ea8 100644 --- a/integration-test/src/main/java/org/apache/iotdb/itbase/env/BaseEnv.java +++ b/integration-test/src/main/java/org/apache/iotdb/itbase/env/BaseEnv.java @@ -117,11 +117,21 @@ public interface BaseEnv { SessionConfig.DEFAULT_USER, SessionConfig.DEFAULT_PASSWORD, TREE_SQL_DIALECT); } + default Connection getAvailableConnection() throws SQLException { + return getAvailableConnection( + SessionConfig.DEFAULT_USER, SessionConfig.DEFAULT_PASSWORD, TREE_SQL_DIALECT); + } + default Connection getTableConnection() throws SQLException { return getConnection( SessionConfig.DEFAULT_USER, SessionConfig.DEFAULT_PASSWORD, TABLE_SQL_DIALECT); } + default Connection getAvailableTableConnection() throws SQLException { + return getAvailableConnection( + SessionConfig.DEFAULT_USER, SessionConfig.DEFAULT_PASSWORD, TABLE_SQL_DIALECT); + } + default Connection getConnection(String sqlDialect) throws SQLException { return getConnection(SessionConfig.DEFAULT_USER, SessionConfig.DEFAULT_PASSWORD, sqlDialect); } @@ -156,6 +166,9 @@ public interface BaseEnv { Connection getConnection(String username, String password, String sqlDialect) throws SQLException; + Connection getAvailableConnection(String username, String password, String sqlDialect) + throws SQLException; + default Connection getWriteOnlyConnectionWithSpecifiedDataNode(DataNodeWrapper dataNode) throws SQLException { return getWriteOnlyConnectionWithSpecifiedDataNode( diff --git a/integration-test/src/test/java/org/apache/iotdb/confignode/it/regionmigration/IoTDBRegionOperationReliabilityITFramework.java b/integration-test/src/test/java/org/apache/iotdb/confignode/it/regionmigration/IoTDBRegionOperationReliabilityITFramework.java index 25436bb103e..3769dd0e389 100644 --- a/integration-test/src/test/java/org/apache/iotdb/confignode/it/regionmigration/IoTDBRegionOperationReliabilityITFramework.java +++ b/integration-test/src/test/java/org/apache/iotdb/confignode/it/regionmigration/IoTDBRegionOperationReliabilityITFramework.java @@ -653,7 +653,7 @@ public class IoTDBRegionOperationReliabilityITFramework { } private void checkClusterStillWritable() { - try (Connection connection = EnvFactory.getEnv().getConnection(); + try (Connection connection = EnvFactory.getEnv().getAvailableConnection(); Statement statement = connection.createStatement()) { // check old data ResultSet resultSet = statement.executeQuery(COUNT_TIMESERIES);
