maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jon Harper (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (MNG-5592) Maven Dependency Resolution Locks up
Date Fri, 10 Mar 2017 16:18:04 GMT

     [ https://issues.apache.org/jira/browse/MNG-5592?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Jon Harper updated MNG-5592:
----------------------------
    Attachment: MNG-5592_testcase_locked_nocyclic.zip

Hi, this testcase shows that you can "easily" have the incompatible version error message
"locked up", taking 100% cpu visiting a graph of billions of dependencies, never ending, with
10 artifacts and 10 versions.

This one has no cyclic dependency at all.

With the proof of concept patch I provided where artifacts are never revisited, the process
finishes in an instant, with the correct error message:
{noformat}
[ERROR] Failed to execute goal on project top: Could not resolve dependencies for project
top:top:jar:1.0: Failed to collect dependencies for top:top:jar:1.0: Could not resolve version
conflict among [conflictparentA:conflictparentA:jar:1.0 -> conflict:conflict:jar:[1.0,1.0],
conflictparentB:conflictparentB:jar:1.0 -> conflict:conflict:jar:[2.0,2.0]] -> [Help
1]
{noformat}


> 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_locked_nocyclic.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)

Mime
View raw message