[ https://issues.apache.org/jira/browse/MNG-8148?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17853391#comment-17853391 ]
Sergey Nuyanzin commented on MNG-8148: -------------------------------------- After playing more and looking into code of maven and maven-resolver I realised that there is a problem with dependencies, e.g. we have something like this {code:xml} <project1.version>[1.0.0-0, 3.0.0-0)</project1.version> <project2.version>[1.0.0-0, 3.0.0-0)</project2.version> <project3.registry.version>[1.0.0-0, 3.0.0-0)</project3.version> {code} so there are several deps with very wide range (in each range there are hundreds of internal versions). It looks like with such ranges it tries to add all in conflict DAG and them remove at some point of time, so first there is time consumption to grow maps and then for GC... I tried to shorter the range and it becomes much faster, so I guess this is the root cause I wonder if there is a way to say maven: pick only one the latest available version from the range ? > DefaultProjectDependenciesResolver takes up to several minutes for some > modules of the project > ---------------------------------------------------------------------------------------------- > > Key: MNG-8148 > URL: https://issues.apache.org/jira/browse/MNG-8148 > Project: Maven > Issue Type: Bug > Reporter: Sergey Nuyanzin > Priority: Major > > The project is relatively small (5 modules and maybe about 1k classes in > total) > unfortunately it is private so I couldn't share the source > 1 thing that may be makes sense to mention is that some modules generates > code for protobuf integration. > also I was able to take thread dump of maven build > and this is the thing which I faced. most of the times when the build was > hanging > {noformat} > "main" #1 prio=5 os_prio=31 cpu=394695.18ms elapsed=448.93s > tid=0x000000015d80a800 nid=0x2403 runnable [0x000000016dec4000] > java.lang.Thread.State: RUNNABLE > at > org.eclipse.aether.util.graph.transformer.ConflictMarker.analyze(ConflictMarker.java:133) > at > org.eclipse.aether.util.graph.transformer.ConflictMarker.analyze(ConflictMarker.java:133) > at > org.eclipse.aether.util.graph.transformer.ConflictMarker.analyze(ConflictMarker.java:133) > at > org.eclipse.aether.util.graph.transformer.ConflictMarker.analyze(ConflictMarker.java:133) > at > org.eclipse.aether.util.graph.transformer.ConflictMarker.analyze(ConflictMarker.java:133) > at > org.eclipse.aether.util.graph.transformer.ConflictMarker.transformGraph(ConflictMarker.java:63) > at > org.eclipse.aether.util.graph.transformer.ConflictIdSorter.transformGraph(ConflictIdSorter.java:58) > at > org.eclipse.aether.util.graph.transformer.ConflictResolver.transformGraph(ConflictResolver.java:172) > at > org.eclipse.aether.util.graph.transformer.ChainedDependencyGraphTransformer.transformGraph(ChainedDependencyGraphTransformer.java:71) > at > org.eclipse.aether.internal.impl.collect.DependencyCollectorDelegate.collectDependencies(DependencyCollectorDelegate.java:246) > at > org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:87) > at > org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:306) > at > org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:151) > at > org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:224) > at > org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:136) > at > org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.java:355) > at > org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:313) > {noformat} > and > {noformat} > "main" #1 prio=5 os_prio=31 cpu=456718.35ms elapsed=518.34s > tid=0x0000000127811000 nid=0x2403 runnable [0x000000016b3ac000] > java.lang.Thread.State: RUNNABLE > at java.util.HashMap.hash(java.base@11.0.23/HashMap.java:340) > at java.util.LinkedHashMap.get(java.base@11.0.23/LinkedHashMap.java:440) > at > org.eclipse.aether.util.graph.transformer.ConflictIdSorter.buildConflitIdDAG(ConflictIdSorter.java:110) > at > org.eclipse.aether.util.graph.transformer.ConflictIdSorter.buildConflitIdDAG(ConflictIdSorter.java:122) > at > org.eclipse.aether.util.graph.transformer.ConflictIdSorter.buildConflitIdDAG(ConflictIdSorter.java:122) > at > org.eclipse.aether.util.graph.transformer.ConflictIdSorter.buildConflitIdDAG(ConflictIdSorter.java:122) > at > org.eclipse.aether.util.graph.transformer.ConflictIdSorter.transformGraph(ConflictIdSorter.java:78) > at > org.eclipse.aether.util.graph.transformer.ConflictResolver.transformGraph(ConflictResolver.java:172) > at > org.eclipse.aether.util.graph.transformer.ChainedDependencyGraphTransformer.transformGraph(ChainedDependencyGraphTransformer.java:71) > at > org.eclipse.aether.internal.impl.collect.DependencyCollectorDelegate.collectDependencies(DependencyCollectorDelegate.java:246) > at > org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:87) > at > org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:306) > at > org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:151) > at > org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:224) > at > org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:136) > at > org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.java:355) > at > org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:313) > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212) > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:174) > at > org.apache.maven.lifecycle.internal.MojoExecutor.access$000(MojoExecutor.java:75) > at > org.apache.maven.lifecycle.internal.MojoExecutor$1.run(MojoExecutor.java:162) > at > org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute(DefaultMojosExecutionStrategy.java:39) > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:159) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:105) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:73) > at > org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:53) > at > org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:118) > at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:261) > at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:173) > at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:101) > at org.apache.maven.cli.MavenCli.execute(MavenCli.java:906) > at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:283) > at org.apache.maven.cli.MavenCli.main(MavenCli.java:206) > at > jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@11.0.23/Native > Method) > at > jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@11.0.23/NativeMethodAccessorImpl.java:62) > at > jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@11.0.23/DelegatingMethodAccessorImpl.java:43) > {noformat} > any hints what to do to find the root cause would be welcome -- This message was sent by Atlassian Jira (v8.20.10#820010)