You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Federico Mariani (Jira)" <ji...@apache.org> on 2026/09/02 10:06:00 UTC
[jira] [Commented] (CAMEL-24587) CI: PR incremental build tests the whole project when a core module changes (Scalpel modules bypass the 50-module threshold)
[ https://issues.apache.org/jira/browse/CAMEL-24587?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18110586#comment-18110586 ]
Federico Mariani commented on CAMEL-24587:
------------------------------------------
Hi [~gnodet] please double check it
> CI: PR incremental build tests the whole project when a core module changes (Scalpel modules bypass the 50-module threshold)
> ----------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-24587
> URL: https://issues.apache.org/jira/browse/CAMEL-24587
> Project: Camel
> Issue Type: Bug
> Components: ci
> Reporter: Federico Mariani
> Assignee: Federico Mariani
> Priority: Major
> Labels: ci, github-actions
> Fix For: 4.23.0
>
>
> h3. Problem
> Since [PR #24368|https://github.com/apache/camel/pull/24368] (commit 71be477c97f5, 2026-07-02) the PR "Build and test" workflow runs Maveniverse Scalpel for *every* PR. The PR description and the comment in {{.github/actions/incremental-build/incremental-build.sh}} say Scalpel runs in "shadow mode" and "does not affect actual test execution".
> It does. The script unions {{scalpel_module_ids}} into {{dep_module_ids}}, which goes straight into the {{-pl}} list handed to Maven. The 50-module threshold ({{maxNumberOfTestableProjects}}) and the {{EXCLUSION_LIST}} only apply to the {{-amd}} expansion of file-path modules, so they never trigger for this path.
> Result: any PR that touches a module with many dependents (anything under {{core/}}) tests every downstream module, including {{camel-allcomponents}}, {{camel-itest}}, {{camel-jbang-it}} and the whole components tree, on both JDK matrix entries.
> h3. Evidence
> [PR #26024|https://github.com/apache/camel/pull/26024] changes 3 files ({{core/camel-support}}, {{components/camel-jetty}}, docs):
> * Scalpel report: 588 affected modules (3 DIRECT, 559 DOWNSTREAM tested, 26 DOWNSTREAM skipped)
> * Job log prints {{Too many dependent modules (588 > 50), testing only the affected modules}} and then runs {{mvnd install -pl <589 modules>}}
> * Test phase: 47 min (JDK 17, failed on unrelated infra), reactor of 589 modules
> Other recent PRs touching {{core/}} show the same pattern:
> ||PR||Modules tested||Test phase per JDK||
> |#26022|589|1h 51m|
> |#26018|~590|~2h|
> |#26011|~590|~2h|
> |#25731|~590|~2h|
> |#26007 (no core change)|9|~25 min|
> The PR comment contradicts itself: it says "Dependent modules were not tested because the total number of affected modules exceeded the threshold (50)" and then lists ~620 modules in the reactor section. The "Scalpel shadow comparison" reports "current: 561 all tested" and cannot detect the discrepancy because "current" already contains Scalpel's set.
> h3. Proposed fix
> Apply the dependent-module threshold to the dependency-detected set as well:
> * After merging grep and Scalpel results, count the modules. If the count exceeds {{maxNumberOfTestableProjects}} and the PR does not carry the {{incremental-test-dependents}} label, test only the changed modules.
> * Report the skipped count in the PR comment so the behaviour is visible.
> * Fix the "shadow mode" wording in the script and in {{.github/CI-ARCHITECTURE.md}}.
> Refinement to consider (keeps coverage for wide dependency bumps): exempt Scalpel's {{DIRECT}} modules from the cap and apply it only to {{DOWNSTREAM}} ones. Recent Dependabot bumps of {{parent/pom.xml}} affect 0-36 modules and are below the threshold either way; a Jackson or Spring bump would exceed it.
> Note: the {{incremental-test-dependents}} label has been used on exactly one PR (#22140, March 2026). The unmerged branch {{ci/scalpel-only-detection}} keeps the same behaviour unless the threshold is applied to Scalpel output.
> h3. Related
> * CAMEL-24290 (CI under heavy load)
> * CAMEL-23565 (skip Scalpel for root pom.xml changes)
> _Drafted by Claude Code on behalf of Croway_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)