JackieTien97 opened a new pull request, #17687: URL: https://github.com/apache/iotdb/pull/17687
## Description Speed up the **Cluster IT - 1C1D1A** CI pipeline (~52min → ~15-20min) via two optimizations: ### 1. Test consolidation (saves ~20min) Merge 5 AINode IT test classes into a single `AINodeSharedClusterIT` that shares one 1C1D1A cluster: - `AINodeDeviceManageIT` - `AINodeModelManageIT` - `AINodeCallInferenceIT` - `AINodeForecastIT` - `AINodeInstanceManagementIT` This reduces cluster startups from **8 to 3** (SharedCluster + ClusterConfig + ConcurrentForecast). Also converts `AINodeClusterConfigIT` from `@Before/@After` to `@BeforeClass/@AfterClass`, eliminating one redundant cluster restart by merging both dialect tests into a single method. The 1C1D1A cluster startup takes ~3.5min each time (ConfigNode + DataNode + AINode), so eliminating 5 restarts saves ~17.5min. The actual test execution time is only ~9min out of the original 52min total. ### 2. PyInstaller dist caching (saves ~11min) Added hash-based caching to `build_binary.py`: - Computes SHA256 of all AINode source files, `pyproject.toml`, `poetry.lock`, and `ainode.spec` - Caches the `dist/` output at `~/.cache/iotdb-ainode-build/dist-cache/` (outside project dir, survives `mvn clean`) - On cache hit, restores `dist/` directly and skips the entire PyInstaller analysis + packaging phase The PyInstaller phase scans thousands of hidden imports from torch/transformers/numpy and takes ~11min. When AINode source hasn't changed, this is entirely redundant. ### Testing All existing test logic is preserved — the tests are reorganized, not changed. `AINodeConcurrentForecastIT` remains separate (different data setup and LOAD/UNLOAD side effects). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
