The GitHub Actions job "Coverage" on 
grails-core.git/fix/bom-cli-afterEvaluate-ordering has failed.
Run started by GitHub user codeconsole (triggered by codeconsole).

Head commit for run:
7f5c8675bbe65b3aebe9bcf6d2472aeef505c703 / Scott Murphy Heiberg 
<[email protected]>
Fix afterEvaluate race between applyGrailsBom and GrailsCliGradlePlugin

applyGrailsBom() applied BomPropertyOverridesPlugin from inside its own
afterEvaluate callback. Because BomPropertyOverridesPlugin.apply() itself
registers a second, nested project.afterEvaluate{} for the actual
override-application logic, and Gradle appends newly-registered
afterEvaluate listeners to the end of the notification queue currently
being processed, that nested registration ended up running after every
afterEvaluate callback other plugins had registered synchronously during
apply() - including GrailsCliGradlePlugin's configureApplicationCommands,
which eagerly resolves the api/implementation/runtimeOnly buckets via the
grailsCliDetect probe and locks them against further mutation.

In multi-project builds this surfaces as:

  Cannot mutate the dependencies of configuration ':foo:api' after the
  configuration's child configuration ':foo:grailsCliDetect' was
  resolved. After a configuration has been observed, it should not be
  modified.

triggered whenever resolving one project's grailsCliDetect forces a
dependency project to fully configure mid-resolution, landing inside the
window between the CLI probe locking its buckets and the re-queued BOM
override callback trying to mutate them.

Fix: apply BomPropertyOverridesPlugin's extension eagerly and call
applyOverrides() directly from the existing (correctly-ordered)
afterEvaluate callback in applyGrailsBom, right after the platform is
injected, instead of re-deferring through project.plugins.apply().

Report URL: https://github.com/apache/grails-core/actions/runs/29669282440

With regards,
GitHub Actions via GitBox

Reply via email to