[ http://jira.codehaus.org/browse/MNG-4785?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=233716#action_233716 ]
Stuart McCulloch commented on MNG-4785: --------------------------------------- Looks like the DsoSurefireMojo spawns a child thread that uses the legacy Maven resolution API. The new beta uses a threadlocal (see org.apache.maven.plugin.internal.DefaultLegacySupport) to provide access to the Maven session from legacy components, but of course this threadlocal is only valid for the executing mojo thread - not the spawned child thread. Changing DefaultLegacySupport to use an InheritableThreadLocal should solve this NPE, but I'm not sure what impact this would have wrt. cleanup of the Maven session given that Maven has no knowledge of the child thread... > NPE in dependency resolution code for TC plugin > ----------------------------------------------- > > Key: MNG-4785 > URL: http://jira.codehaus.org/browse/MNG-4785 > Project: Maven 2 & 3 > Issue Type: Bug > Components: Artifacts and Repositories, Dependencies > Affects Versions: 3.0-beta-3 > Environment: OS X 10.6 > Reporter: Oleg Gusakov > Attachments: m3tctest.tgz > > > Terracotta Maven plugin 1.4.0 test produces NPE in 3.0-beta-3, but works fine > in 3.0-beta-2 > {code} > [ERROR] [node0] > java.lang.NullPointerException > at > org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:149) > at > org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:139) > at > org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:237) > at > org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:219) > at > org.apache.maven.project.artifact.MavenMetadataSource.retrieveRelocatedProject(MavenMetadataSource.java:584) > at > org.apache.maven.project.artifact.MavenMetadataSource.retrieve(MavenMetadataSource.java:192) > at > org.apache.maven.repository.legacy.resolver.DefaultLegacyArtifactCollector.recurse(DefaultLegacyArtifactCollector.java:532) > at > org.apache.maven.repository.legacy.resolver.DefaultLegacyArtifactCollector.collect(DefaultLegacyArtifactCollector.java:144) > at > org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:451) > at > org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolveWithExceptions(DefaultArtifactResolver.java:307) > at > org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolveTransitively(DefaultArtifactResolver.java:301) > at > org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolveTransitively(DefaultArtifactResolver.java:280) > at > org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolveTransitively(DefaultArtifactResolver.java:258) > at > org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolveTransitively(DefaultArtifactResolver.java:243) > at > org.terracotta.maven.plugins.tc.DsoArtifactResolverImpl.resolveArtifact(DsoArtifactResolverImpl.java:145) > at > org.terracotta.maven.plugins.tc.DsoSurefireMojo.addArtifact(DsoSurefireMojo.java:775) > at > org.terracotta.maven.plugins.tc.DsoSurefireMojo.constructSurefireBooter(DsoSurefireMojo.java:548) > at > org.terracotta.maven.plugins.tc.DsoSurefireMojo$SurefireThread.runSurefire(DsoSurefireMojo.java:434) > at > org.terracotta.maven.plugins.tc.DsoSurefireMojo$SurefireThread.run(DsoSurefireMojo.java:417) > at java.lang.Thread.run(Thread.java:637) > [INFO] All nodes completed > [INFO] > ------------------------------------------------------------------------ > [INFO] Stopping DSO Server > [INFO] [dso stop] 2010-08-30 11:10:42,625 INFO - Terracotta 3.1.0, as of > 20090821-080813 (Revision 13442 by cru...@su10mo5 from 3.1) > [INFO] OK > [{code} > Test project - attached -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira