Uploaded image for project: 'Maven'
  1. Maven
  2. MNG-5981

Plexus lifecycle could be activated too late during overlapping parallel requests

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 3.3.1, 3.3.3, 3.3.9
    • Fix Version/s: 3.5.0
    • Component/s: Plugins and Lifecycle
    • Labels:
      None

      Description

      A user reported seeing NPEs when running a particular project in parallel: http://www.mail-archive.com/users%40felix.apache.org/msg17072.html

      This was tracked down to the way we defer lifecycle activation for components (potentially) involved in dependency injection cycles (A->B->A). This bug is only triggered by specific lookup sequences when running parallel builds.

      The key fix was to move when we start cycle detection to the first scoped component in the lookup: https://bugs.eclipse.org/bugs/show_bug.cgi?id=487090 (since a cycle can only ever involve scoped components - unscoped/per-lookup components can never repeat)

      The accuracy was also improved by using Scopes.isCircularProxy to spot when we inject a circular dependency proxy (which is when when we need to defer activation until the end of the cycle to allow that proxy to be populated). Previously the code was overly pessimistic when considering what might end up as a cycle.

      Sisu 0.3.3 contains both these fixes: https://wiki.eclipse.org/Sisu/Changelog#Release_0.3.3

      Previous releases can be patched by replacing the old org.eclipse.sisu.inject and org.eclipse.sisu.plexus jars with the ones from the 0.3.3 release.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                schulte77 Christian Schulte
                Reporter:
                mcculls Stuart McCulloch
              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: