[ 
https://issues.apache.org/jira/browse/MNG-5592?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15902194#comment-15902194
 ] 

Jon Harper commented on MNG-5592:
---------------------------------

Hi Christian, you are right. I created MNG-6184 for the StackOverflowException 
with cyclic dependencies.

However, I also mentioned the performance
{quote}
 This leads to quite a few artifacts beeing examined: in my real world project 
2million+ artifacts are examined; if I modify the code to never revist the 
children of an already visited artifiact, this goes down to 5000;

But I think that it is not needed to reexamine artifacts at all ? Maybe the 
code should always prune the tree when seeing an artifact for the second time ? 
the outputted conflict message is the same for my project
{quote}
Those numbers could be billions instead of millions in another project with 
more ranges, in which case you would have the "lock up" bug. Those numbers were 
from maven 3.3.9, so the performance problem is probably still there.

Cheers,
Jon


> Maven Dependency Resolution Locks up
> ------------------------------------
>
>                 Key: MNG-5592
>                 URL: https://issues.apache.org/jira/browse/MNG-5592
>             Project: Maven
>          Issue Type: Bug
>          Components: Artifacts and Repositories
>    Affects Versions: 3.1.1, 3.2.1
>         Environment: OS/X,  Java 7 and Java 8
>            Reporter: Mark Derricutt
>            Assignee: igorfie
>             Fix For: 3.2.5
>
>         Attachments: mng-5592-simplified.zip, MNG-5592_testcase.zip, 
> mng-5592.zip, MNG-5592.zip
>
>
> One one of my larger integration projects that involves A LOT of version 
> ranges across a broad range of dependencies I'm seeing that Maven locks up 
> resolving dependencies.
> I've recently seen this in 3.1.1 but it's happening more and more often under 
> 3.2.1.
> It appears that Eclipse Aether is falling into a circular loop somewhere and 
> locking up.
> {code}
> "main" #1 prio=5 os_prio=31 tid=0x00007f966b001000 nid=0x1903 runnable 
> [0x0000000103559000]
>    java.lang.Thread.State: RUNNABLE
>       at 
> org.eclipse.aether.util.graph.transformer.ConflictResolver$ConflictContext.isIncluded(ConflictResolver.java:1062)
>       at 
> org.eclipse.aether.util.graph.transformer.NearestVersionSelector$1.accept(NearestVersionSelector.java:145)
>       at 
> org.eclipse.aether.util.graph.visitor.PathRecordingDependencyVisitor.visitEnter(PathRecordingDependencyVisitor.java:88)
>       at 
> org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:324)
>       at 
> org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:329)
>       at 
> org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:329)
>       at 
> org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:329)
>       at 
> org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:329)
>       at 
> org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:329)
>       at 
> org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:329)
>       at 
> org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:329)
>       at 
> org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:329)
>       at 
> org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:329)
>       at 
> org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:329)
>       at 
> org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:329)
>       at 
> org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:329)
>       at 
> org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:329)
>       at 
> org.eclipse.aether.util.graph.transformer.NearestVersionSelector.newFailure(NearestVersionSelector.java:149)
>       at 
> org.eclipse.aether.util.graph.transformer.NearestVersionSelector.backtrack(NearestVersionSelector.java:111)
>       at 
> org.eclipse.aether.util.graph.transformer.NearestVersionSelector.selectVersion(NearestVersionSelector.java:84)
>       at 
> org.eclipse.aether.util.graph.transformer.ConflictResolver.transformGraph(ConflictResolver.java:187)
>       at 
> org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:275)
>       at 
> org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:317)
>       at 
> org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:159)
>       at 
> org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:195)
>       at 
> org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:127)
>       at 
> org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.java:257)
>       at 
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:200)
>       at 
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
>       at 
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
>       at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:108)
>       at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76)
>       at 
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
>       at 
> org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116)
>       at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361)
>       at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
>       at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
>       at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213)
>       at org.apache.maven.cli.MavenCli.main(MavenCli.java:157)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> {code}
> Running with {{-X -U}} I can see that Maven/Aether seems to be looking up A 
> LOT of external repositories:
> {code}
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for apache.snapshots 
> (http://repository.apache.org/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for apache.snapshots 
> (http://repository.apache.org/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for apache.snapshots 
> (http://repository.apache.org/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for apache.snapshots 
> (http://repository.apache.org/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for apache.snapshots 
> (http://repository.apache.org/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for apache.snapshots 
> (http://repository.apache.org/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for apache.snapshots 
> (http://repository.apache.org/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for apache.snapshots 
> (http://repository.apache.org/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for apache.snapshots 
> (http://repository.apache.org/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for apache.snapshots 
> (http://repository.apache.org/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for apache.snapshots 
> (http://repository.apache.org/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for apache.snapshots 
> (http://repository.apache.org/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for apache.snapshots 
> (http://repository.apache.org/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for apache.snapshots 
> (http://repository.apache.org/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for apache.snapshots 
> (http://repository.apache.org/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for apache.snapshots 
> (http://repository.apache.org/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for apache.snapshots 
> (http://repository.apache.org/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> [DEBUG] Could not find metadata 
> smx3:smx3.applicationmanager.api/maven-metadata.xml in local 
> (/Users/amrk/.m2/repository)
> [DEBUG] Using connector WagonRepositoryConnector with priority 0.0 for 
> http://nexus.smxemail.com/nexus/content/groups/public/
> Downloading: 
> http://nexus.smxemail.com/nexus/content/groups/public/smx3/smx3.applicationmanager.api/maven-metadata.xml
> Downloaded: 
> http://nexus.smxemail.com/nexus/content/groups/public/smx3/smx3.applicationmanager.api/maven-metadata.xml
>  (489 B at 0.1 KB/sec)
> [DEBUG] Writing tracking file 
> /Users/amrk/.m2/repository/smx3/smx3.applicationmanager.api/resolver-status.properties
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> [DEBUG] Using connector WagonRepositoryConnector with priority 0.0 for 
> http://nexus.smxemail.com/nexus/content/groups/public/
> Downloading: 
> http://nexus.smxemail.com/nexus/content/groups/public/smx3/smx3.applicationmanager/maven-metadata.xml
> Downloaded: 
> http://nexus.smxemail.com/nexus/content/groups/public/smx3/smx3.applicationmanager/maven-metadata.xml
>  (7 KB at 1.5 KB/sec)
> [DEBUG] Writing tracking file 
> /Users/amrk/.m2/repository/smx3/smx3.applicationmanager/resolver-status.properties
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> [DEBUG] Could not find metadata 
> smx3:smx3.applicationmanager.api/maven-metadata.xml in local 
> (/Users/amrk/.m2/repository)
> [DEBUG] Skipped remote update check for 
> smx3:smx3.applicationmanager.api/maven-metadata.xml, already updated during 
> this session.
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for 
> sonatype-nexus-snapshots 
> (https://oss.sonatype.org/content/repositories/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for 
> sonatype-nexus-snapshots 
> (https://oss.sonatype.org/content/repositories/snapshots).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for apache.snapshots 
> (http://people.apache.org/repo/m2-snapshot-repository).
> [DEBUG] Using mirror Nexus 
> (http://nexus.smxemail.com/nexus/content/groups/public/) for central 
> (http://repo.maven.apache.org/maven2).
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to