Skip to content

Instantly share code, notes, and snippets.

@suztomo
Last active May 27, 2020 18:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save suztomo/ccd77509d6bc083713c24b814e818f9c to your computer and use it in GitHub Desktop.
Save suztomo/ccd77509d6bc083713c24b814e818f9c to your computer and use it in GitHub Desktop.
PathRecordingDependencyVisitor slowness?

Aether's PathRecordingDependencyVisitor

suztomo@suztomo:~/cloud-opensource-java$ jstack 44406
2020-05-27 16:12:02

...

"main" #1 prio=5 os_prio=0 tid=0x00007fa43c00b000 nid=0xad87 runnable [0x00007fa44240e000]
   java.lang.Thread.State: RUNNABLE
	at (C/C++) 0x00007fa4433c8fae (Unknown Source)
	at (C/C++) 0x00007fa4428ffed5 (Unknown Source)
	at (C/C++) 0x00007fa4428e9eec (Unknown Source)
	at (C/C++) 0x00007fa442e17ab2 (Unknown Source)
	at (C/C++) 0x00007fa442e17eb3 (Unknown Source)
	at (C/C++) 0x00007fa43604709a (Unknown Source)
	at java.lang.StringBuilder.append(StringBuilder.java:136)
	at com.google.cloud.tools.opensource.dependencies.Artifacts.toCoordinates(Artifacts.java:34)
	at com.google.cloud.tools.opensource.dependencies.DependencyGraphBuilder.lambda$findArtifactPaths$0(DependencyGraphBuilder.java:235)
	at com.google.cloud.tools.opensource.dependencies.DependencyGraphBuilder$$Lambda$779/1385885735.accept(Unknown Source)
	at org.eclipse.aether.util.graph.visitor.PathRecordingDependencyVisitor.visitEnter(PathRecordingDependencyVisitor.java:102)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:341)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at com.google.cloud.tools.opensource.dependencies.DependencyGraphBuilder.findArtifactPaths(DependencyGraphBuilder.java:238)
	at com.google.cloud.tools.opensource.dependencies.DependencyGraphBuilder.createUnresolvableArtifactProblem(DependencyGraphBuilder.java:215)
	at com.google.cloud.tools.opensource.dependencies.DependencyGraphBuilder.buildDependencyGraph(DependencyGraphBuilder.java:200)
	at com.google.cloud.tools.opensource.dependencies.DependencyGraphBuilder.buildFullDependencyGraph(DependencyGraphBuilder.java:169)
	at com.google.cloud.tools.opensource.classpath.ClassPathBuilder.resolve(ClassPathBuilder.java:65)
	at com.google.cloud.tools.dependencies.enforcer.LinkageCheckerRule.findBomClasspath(LinkageCheckerRule.java:363)
	at com.google.cloud.tools.dependencies.enforcer.LinkageCheckerRule.execute(LinkageCheckerRule.java:181)
	at org.apache.maven.plugins.enforcer.EnforceMojo.execute(EnforceMojo.java:205)
	- locked <0x000000067fde2de8> (a com.google.cloud.tools.dependencies.enforcer.LinkageCheckerRule)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:954)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:192)
	at (C/C++) 0x00007fa4360004e7 (Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
	at (C/C++) 0x00007fa4360004e7 (Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.maven.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:39)
	at org.apache.maven.wrapper.WrapperExecutor.execute(WrapperExecutor.java:122)
	at org.apache.maven.wrapper.MavenWrapperMain.main(MavenWrapperMain.java:55)
...

1 hour later, still in the function

suztomo@suztomo:~/cloud-opensource-java$ jstack 44406
2020-05-27 17:22:55
...
"main" #1 prio=5 os_prio=0 tid=0x00007fa43c00b000 nid=0xad87 runnable [0x00007fa44240e000]
   java.lang.Thread.State: RUNNABLE
	at (C/C++) 0x00007fa4433c8fae (Unknown Source)
	at (C/C++) 0x00007fa4428ffed5 (Unknown Source)
	at (C/C++) 0x00007fa4428e9eec (Unknown Source)
	at (C/C++) 0x00007fa442e17ab2 (Unknown Source)
	at (C/C++) 0x00007fa442e17eb3 (Unknown Source)
	at (C/C++) 0x00007fa43604709a (Unknown Source)
	at java.lang.StringBuilder.append(StringBuilder.java:136)
	at com.google.cloud.tools.opensource.dependencies.Artifacts.toCoordinates(Artifacts.java:34)
	at com.google.cloud.tools.opensource.dependencies.DependencyGraphBuilder.lambda$findArtifactPaths$0(DependencyGraphBuilder.java:235)
	at com.google.cloud.tools.opensource.dependencies.DependencyGraphBuilder$$Lambda$779/1385885735.accept(Unknown Source)
	at org.eclipse.aether.util.graph.visitor.PathRecordingDependencyVisitor.visitEnter(PathRecordingDependencyVisitor.java:102)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:341)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at com.google.cloud.tools.opensource.dependencies.DependencyGraphBuilder.findArtifactPaths(DependencyGraphBuilder.java:238)
	at com.google.cloud.tools.opensource.dependencies.DependencyGraphBuilder.createUnresolvableArtifactProblem(DependencyGraphBuilder.java:215)
	at com.google.cloud.tools.opensource.dependencies.DependencyGraphBuilder.buildDependencyGraph(DependencyGraphBuilder.java:200)
	at com.google.cloud.tools.opensource.dependencies.DependencyGraphBuilder.buildFullDependencyGraph(DependencyGraphBuilder.java:169)
	at com.google.cloud.tools.opensource.classpath.ClassPathBuilder.resolve(ClassPathBuilder.java:65)
	at com.google.cloud.tools.dependencies.enforcer.LinkageCheckerRule.findBomClasspath(LinkageCheckerRule.java:363)
	at com.google.cloud.tools.dependencies.enforcer.LinkageCheckerRule.execute(LinkageCheckerRule.java:181)
	at org.apache.maven.plugins.enforcer.EnforceMojo.execute(EnforceMojo.java:205)
	- locked <0x000000067fde2de8> (a com.google.cloud.tools.dependencies.enforcer.LinkageCheckerRule)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:954)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:192)
	at (C/C++) 0x00007fa4360004e7 (Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
	at (C/C++) 0x00007fa4360004e7 (Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.maven.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:39)
	at org.apache.maven.wrapper.WrapperExecutor.execute(WrapperExecutor.java:122)
	at org.apache.maven.wrapper.MavenWrapperMain.main(MavenWrapperMain.java:55)

UniqueDependencyVisitor

2020-05-27 18:50:01
...

"main" #1 prio=5 os_prio=0 tid=0x00007f589000b000 nid=0x115d1 runnable [0x00007f5894b88000]
   java.lang.Thread.State: RUNNABLE
	at (C/C++) 0x00007f5895b42fae (Unknown Source)
	at (C/C++) 0x00007f5895079ed5 (Unknown Source)
	at (C/C++) 0x00007f5895063eec (Unknown Source)
	at (C/C++) 0x00007f5895591ab2 (Unknown Source)
	at (C/C++) 0x00007f5895591eb3 (Unknown Source)
	at (C/C++) 0x00007f588a04709a (Unknown Source)
	at com.google.cloud.tools.opensource.dependencies.Artifacts.toCoordinates(Artifacts.java:34)
	at com.google.cloud.tools.opensource.dependencies.DependencyGraphBuilder.lambda$findArtifactPaths$0(DependencyGraphBuilder.java:232)
	at com.google.cloud.tools.opensource.dependencies.DependencyGraphBuilder$$Lambda$779/1849120228.accept(Unknown Source)
	at com.google.cloud.tools.opensource.dependencies.UniquePathRecordingDependencyVisitor.visitEnter(UniquePathRecordingDependencyVisitor.java:91)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:341)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at org.eclipse.aether.graph.DefaultDependencyNode.accept(DefaultDependencyNode.java:345)
	at com.google.cloud.tools.opensource.dependencies.DependencyGraphBuilder.findArtifactPaths(DependencyGraphBuilder.java:234)
	at com.google.cloud.tools.opensource.dependencies.DependencyGraphBuilder.createUnresolvableArtifactProblem(DependencyGraphBuilder.java:213)
	at com.google.cloud.tools.opensource.dependencies.DependencyGraphBuilder.buildDependencyGraph(DependencyGraphBuilder.java:198)
	at com.google.cloud.tools.opensource.dependencies.DependencyGraphBuilder.buildFullDependencyGraph(DependencyGraphBuilder.java:167)
	at com.google.cloud.tools.opensource.classpath.ClassPathBuilder.resolve(ClassPathBuilder.java:65)
	at com.google.cloud.tools.dependencies.enforcer.LinkageCheckerRule.findBomClasspath(LinkageCheckerRule.java:363)
	at com.google.cloud.tools.dependencies.enforcer.LinkageCheckerRule.execute(LinkageCheckerRule.java:181)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment