[
https://issues.apache.org/jira/browse/MRESOLVER-38?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16342135#comment-16342135
]
Robert Scholte commented on MRESOLVER-38:
-----------------------------------------
My guess is that it has to do with the implementation of the
{{PathRecordingDependencyVisitor}}
{code}
private final Map<DependencyNode, Object> visited;
{code}
It looks like this is used to prevent circular references, since it is added on
the visitEnter, removed on the visitLeave.
However, it uses the
[IdentityHashMap|https://docs.oracle.com/javase/9/docs/api/index.html?java/util/IdentityHashMap.html]
but I wonder how these DependencyNodes are constructed. The
{{DefaultDepenendecyNode}} is missing the equals-method, so it looks like
there's no way to prevent invalid trees. Not sure if that's the issue here,
requires extra investigation.
> SOE/OOME in DefaultDependencyNode.accept
> ----------------------------------------
>
> Key: MRESOLVER-38
> URL: https://issues.apache.org/jira/browse/MRESOLVER-38
> Project: Maven Resolver
> Issue Type: Bug
> Components: resolver
> Affects Versions: Maven Artifact Resolver 1.1.0
> Reporter: Andreas Sewe
> Priority: Critical
> Attachments: maven-resolver-demos.patch
>
>
> I noticed a {{StackOverflowErrror}} when trying to build the classpath for
> {{org.webjars.npm:n3-charts:2.0.17}} using Maven Resolver 1.1.0.
> I’ve managed to produce a minimal example based on the
> {{maven-resolver-demos}} from the {{master-with-demos}} branch. To reproduce,
> just apply the attached patch to the branch (tried this with commit
> [{{84a32a86}}|https://github.com/apache/maven-resolver/commit/84a32a866ff27d4df75124074fd925588f4a574d])
> and run the {{GetDependencyTree}} example:
> {noformat}
> ------------------------------------------------------------
> GetDependencyTree
> SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
> SLF4J: Defaulting to no-operation (NOP) logger implementation
> SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further
> details.
> Resolving artifact org.webjars.npm:n3-charts:pom:2.0.17
> Resolved artifact org.webjars.npm:n3-charts:pom:2.0.17 from central
> (https://repo.maven.apache.org/maven2/, default, releases+snapshots)
> …
> Resolving metadata org.webjars.npm:uglifycss/maven-metadata.xml from central
> (https://repo.maven.apache.org/maven2/, default, releases+snapshots)
> Resolved metadata org.webjars.npm:uglifycss/maven-metadata.xml from central
> (https://repo.maven.apache.org/maven2/, default, releases+snapshots)
> Resolving artifact org.webjars.npm:uglifycss:pom:0.0.18
> Resolved artifact org.webjars.npm:uglifycss:pom:0.0.18 from central
> (https://repo.maven.apache.org/maven2/, default, releases+snapshots)
> Exception in thread "main" java.lang.StackOverflowError
> 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)
> {noformat}
> (Note: The patch changes the {{plexus-utils}} version as well, as I was
> getting a {{ClassNotFoundException}} for
> {{org.codehaus.plexus.util.xml.pull.EntityReplacementMap}} otherwise.)
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)