jbi-service-unit causes infinite loop when dependency graph is not cycle-free
-----------------------------------------------------------------------------

                 Key: SM-1161
                 URL: https://issues.apache.org/activemq/browse/SM-1161
             Project: ServiceMix
          Issue Type: Bug
          Components: tooling
    Affects Versions: 3.2.1, 3.2
         Environment: mvn 2.0.6, win xp pro
            Reporter: Tammo van Lessen
            Priority: Critical
         Attachments: infinite-loop-patch.txt

Hi,

when building a JSR181 SU, maven dies in a StackOverflowException, caused by an 
infinite loop in AbstractJBIMojo.getArtifacts(). My guess is that one of the 
used libraries draws some
transitive dependencies, which have have a cycle.

[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] null
[INFO] ------------------------------------------------------------------------
[INFO] Trace
java.lang.StackOverflowError
        at 
org.apache.maven.artifact.DefaultArtifact.hashCode(DefaultArtifact.java:305)
        at java.util.HashMap.put(HashMap.java:372)
        at java.util.HashSet.add(HashSet.java:200)
        at 
org.apache.servicemix.maven.plugin.jbi.AbstractJbiMojo.getArtifacts(AbstractJbiMojo.java:
144)
        at 
org.apache.servicemix.maven.plugin.jbi.AbstractJbiMojo.getArtifacts(AbstractJbiMojo.java:
147)
        at 
org.apache.servicemix.maven.plugin.jbi.AbstractJbiMojo.getArtifacts(AbstractJbiMojo.java:
147)
        at 
org.apache.servicemix.maven.plugin.jbi.AbstractJbiMojo.getArtifacts(AbstractJbiMojo.java:
147)
...

I had a look at the code and are wondering whether the exit condition of the 
recursive getArtifacts() methods should also check if the artifact has already 
been processed.
The same applies to the debug method "print".

Please find attached a patch against SM 3.2.1 which fixes that (unless I did 
not get the original intention of getArtifacts() wrong).

Thanks,
  Tammo



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to