You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Karl Heinz Marbaise (JIRA)" <ji...@apache.org> on 2017/03/12 14:45:04 UTC
[jira] [Closed] (MNG-6170) NPE in cases using Multithreaded -T X
versions:set -DnewVersion=1.0-SNAPSHOT
[ https://issues.apache.org/jira/browse/MNG-6170?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Karl Heinz Marbaise closed MNG-6170.
------------------------------------
Resolution: Fixed
> NPE in cases using Multithreaded -T X versions:set -DnewVersion=1.0-SNAPSHOT
> ----------------------------------------------------------------------------
>
> Key: MNG-6170
> URL: https://issues.apache.org/jira/browse/MNG-6170
> Project: Maven
> Issue Type: Bug
> Components: core
> Affects Versions: 3.1.1, 3.2.5, 3.3.1, 3.3.9
> Reporter: Karl Heinz Marbaise
> Assignee: Karl Heinz Marbaise
> Fix For: 3.5.0-alpha-2
>
>
> Based on the [issue|https://github.com/mojohaus/versions-maven-plugin/issues/54] marked for the versions-maven-plugin investigation shows that the real cause of this problem is located in maven-core.
> The short description of the problem is calling Maven via: {{mvn -T 20 versions:set -DnewVersion=1.0-SNAPSHOT}} you will get an NPE.
> I identified the following point in code as culprit for the problem:
> MultiThreadedBuilder.java
> {code}
> // for each finished project
> for ( int i = 0; i < analyzer.getNumberOfBuilds(); i++ )
> {
> try
> {
> ProjectSegment projectBuild = service.take().get();
> if ( reactorContext.getReactorBuildStatus().isHalted() )
> {
> break;
> }
> final List<MavenProject> newItemsThatCanBeBuilt =
> analyzer.markAsFinished( projectBuild.getProject() );
> for ( MavenProject mavenProject : newItemsThatCanBeBuilt )
> {
> ProjectSegment scheduledDependent = projectBuildList.get( mavenProject );
> logger.debug( "Scheduling: " + scheduledDependent );
> Callable<ProjectSegment> cb =
> createBuildCallable( rootSession, scheduledDependent, reactorContext, taskSegment, muxer );
> service.submit( cb );
> }
> }
> catch ( InterruptedException e )
> {
> rootSession.getResult().addException( e );
> break;
> }
> catch ( ExecutionException e )
> {
> // TODO MNG-5766 changes likely made this redundant
> rootSession.getResult().addException( e );
> break;
> }
> }
> {code}
> And the problematic part is before the second debugging output line:
> {code}
> ProjectSegment scheduledDependent = projectBuildList.get( mavenProject );
> logger.debug( "Scheduling: " + scheduledDependent );
> Callable<ProjectSegment> cb =
> createBuildCallable( rootSession, scheduledDependent, reactorContext, taskSegment, muxer );
> service.submit( cb );
> {code}
> Cause it happens that the {{scheduledDependent}} could be null which will cause the issue.
> This -looks like- is a regression, cause in Maven 3.0.5 it works without any issue.
> Update:
> I have found other examples where the NPE occurs:
> * {{mvn -T20 javadoc:aggregate}}
> * {{mvn -T20 install:install-file ...}}
> This can cause confusion if you are using {{mvn.config}} and put thing like {{-T X}} into it.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)