Maven
  1. Maven
  2. MNG-4137

NPE in DefaultLIfecycleExecutor when run from within Hudson builds

    Details

    • Type: Bug Bug
    • Status: Closed Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.1.0
    • Fix Version/s: 2.2.0
    • Component/s: Plugins and Lifecycle
    • Labels:
      None
    • Environment:
    • Complexity:
      Intermediate
    • Number of attachments :
      0

      Description

      Since upgrading from Maven 2.0.10 to 2.1.0 my Hudson midnight job that runs "clean site" fails with a NullPointerException at DefaultLifecycleExecutor.java:747 exception. See below.

      This is related, if not the same bug that was claimed fixed in 2.1.0 M1 - http://jira.codehaus.org/browse/MNG-3704

      I though its was an issue with the Cobertura plugin - See https://hudson.dev.java.net/issues/show_bug.cgi?id=3468 but once I remove Cobertura I now get the same stack trace after "[INFO] Preparing surefire-report:report":

      [INFO] Preparing surefire-report:report
      [HUDSON] Archiving [...omittted for this posting...]
      [INFO] ------------------------------------------------------------------------
      [ERROR] FATAL ERROR
      [INFO] ------------------------------------------------------------------------
      [INFO] null
      [INFO] ------------------------------------------------------------------------
      [INFO] Trace
      java.lang.NullPointerException
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.calculateConcreteConfiguration(DefaultLifecycleExecutor.java:747)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:578)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:540)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkProjectLifecycle(DefaultLifecycleExecutor.java:1168)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkLifecycle(DefaultLifecycleExecutor.java:1009)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:647)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:540)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:519)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:371)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:332)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:181)
      at org.apache.maven.lifecycle.LifecycleExecutorInterceptor.execute(LifecycleExecutorInterceptor.java:65)
      at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356)
      at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137)
      at org.apache.maven.cli.MavenCli.main(MavenCli.java:356)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
      at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
      at hudson.maven.agent.Main.launch(Main.java:158)
      at hudson.maven.MavenBuilder.call(MavenBuilder.java:162)
      at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:578)
      at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:524)
      at hudson.remoting.UserRequest.perform(UserRequest.java:97)
      at hudson.remoting.UserRequest.perform(UserRequest.java:46)
      at hudson.remoting.Request$2.run(Request.java:236)
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
      at java.util.concurrent.FutureTask.run(FutureTask.java:138)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:619)
      [INFO] ------------------------------------------------------------------------
      [INFO] Total time: 6 minutes 45 seconds
      [INFO] Finished at: Fri Apr 17 14:58:47 EDT 2009
      [INFO] Final Memory: 76M/271M
      [INFO] ------------------------------------------------------------------------

        Issue Links

          Activity

          Hide
          Brett Porter added a comment -

          I'm not sure what John did to "fix" this in the other issue, but it looks to me like a Hudson issue, per the commented issue on the other ticket.

          Show
          Brett Porter added a comment - I'm not sure what John did to "fix" this in the other issue, but it looks to me like a Hudson issue, per the commented issue on the other ticket.
          Hide
          Malachi de AElfweald added a comment -

          I am still getting it as well

          [INFO] Preparing surefire-report:report
          [HUDSON] Archiving /home/hudson/jobs/ambrosia-jdk6-standalone/workspace/kallisti/pom.xml to /home/hudson/jobs/ambrosia-jdk6-standalone/modules/org.eoti$kallisti/builds/2009-04-23_09-52-29/archive/org.eoti/kallisti/2.2-SNAPSHOT/pom.xml
          [HUDSON] Archiving /home/hudson/jobs/ambrosia-jdk6-standalone/workspace/kallisti/target/kallisti-2.2-SNAPSHOT.jar to /home/hudson/jobs/ambrosia-jdk6-standalone/modules/org.eoti$kallisti/builds/2009-04-23_09-52-29/archive/org.eoti/kallisti/2.2-20090423.165239-12/kallisti-2.2-SNAPSHOT.jar
          [INFO] ------------------------------------------------------------------------
          [ERROR] FATAL ERROR
          [INFO] ------------------------------------------------------------------------
          [INFO] null
          [INFO] ------------------------------------------------------------------------
          [DEBUG] Trace
          java.lang.NullPointerException
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.calculateConcreteConfiguration(DefaultLifecycleExecutor.java:747)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:578)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:540)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkProjectLifecycle(DefaultLifecycleExecutor.java:1168)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkLifecycle(DefaultLifecycleExecutor.java:1009)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:647)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:540)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:519)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:371)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:332)
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:181)
          at org.apache.maven.lifecycle.LifecycleExecutorInterceptor.execute(LifecycleExecutorInterceptor.java:65)
          at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356)
          at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137)
          at org.apache.maven.cli.MavenCli.main(MavenCli.java:356)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
          at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
          at hudson.maven.agent.Main.launch(Main.java:158)
          at hudson.maven.MavenBuilder.call(MavenBuilder.java:162)
          at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:578)
          at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:524)
          at hudson.remoting.UserRequest.perform(UserRequest.java:97)
          at hudson.remoting.UserRequest.perform(UserRequest.java:46)
          at hudson.remoting.Request$2.run(Request.java:236)
          at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
          at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
          at java.util.concurrent.FutureTask.run(FutureTask.java:138)
          at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
          at java.lang.Thread.run(Thread.java:619)
          [INFO] ------------------------------------------------------------------------
          [INFO] Total time: 39 seconds
          [INFO] Finished at: Thu Apr 23 09:53:10 PDT 2009
          [INFO] Final Memory: 71M/208M
          [INFO] ------------------------------------------------------------------------
          channel stopped
          Finished: FAILURE

          Hudson ver. 1.300 (private-04/17/2009 11:02-kohsuke)

          Show
          Malachi de AElfweald added a comment - I am still getting it as well [INFO] Preparing surefire-report:report [HUDSON] Archiving /home/hudson/jobs/ambrosia-jdk6-standalone/workspace/kallisti/pom.xml to /home/hudson/jobs/ambrosia-jdk6-standalone/modules/org.eoti$kallisti/builds/2009-04-23_09-52-29/archive/org.eoti/kallisti/2.2-SNAPSHOT/pom.xml [HUDSON] Archiving /home/hudson/jobs/ambrosia-jdk6-standalone/workspace/kallisti/target/kallisti-2.2-SNAPSHOT.jar to /home/hudson/jobs/ambrosia-jdk6-standalone/modules/org.eoti$kallisti/builds/2009-04-23_09-52-29/archive/org.eoti/kallisti/2.2-20090423.165239-12/kallisti-2.2-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [ERROR] FATAL ERROR [INFO] ------------------------------------------------------------------------ [INFO] null [INFO] ------------------------------------------------------------------------ [DEBUG] Trace java.lang.NullPointerException at org.apache.maven.lifecycle.DefaultLifecycleExecutor.calculateConcreteConfiguration(DefaultLifecycleExecutor.java:747) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:578) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:540) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkProjectLifecycle(DefaultLifecycleExecutor.java:1168) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkLifecycle(DefaultLifecycleExecutor.java:1009) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:647) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:540) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:519) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:371) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:332) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:181) at org.apache.maven.lifecycle.LifecycleExecutorInterceptor.execute(LifecycleExecutorInterceptor.java:65) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137) at org.apache.maven.cli.MavenCli.main(MavenCli.java:356) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at hudson.maven.agent.Main.launch(Main.java:158) at hudson.maven.MavenBuilder.call(MavenBuilder.java:162) at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:578) at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:524) at hudson.remoting.UserRequest.perform(UserRequest.java:97) at hudson.remoting.UserRequest.perform(UserRequest.java:46) at hudson.remoting.Request$2.run(Request.java:236) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) [INFO] ------------------------------------------------------------------------ [INFO] Total time: 39 seconds [INFO] Finished at: Thu Apr 23 09:53:10 PDT 2009 [INFO] Final Memory: 71M/208M [INFO] ------------------------------------------------------------------------ channel stopped Finished: FAILURE Hudson ver. 1.300 (private-04/17/2009 11:02-kohsuke)
          Hide
          Malachi de AElfweald added a comment -

          Looking at all the google hits everywhere, it seems to be a consistent pattern for this bug...

          [INFO] Preparing SOME_REPORT
          [HUDSON] Archiving SOMETHING
          [INFO] ------------------------------------------------------------------------
          [ERROR] FATAL ERROR
          [INFO] ------------------------------------------------------------------------
          [INFO] null
          [INFO] ------------------------------------------------------------------------
          [DEBUG] Trace
          java.lang.NullPointerException
          at org.apache.maven.lifecycle.DefaultLifecycleExecutor.calculateConcreteConfiguration(DefaultLifecycleExecutor.java:747)

          Show
          Malachi de AElfweald added a comment - Looking at all the google hits everywhere, it seems to be a consistent pattern for this bug... [INFO] Preparing SOME_REPORT [HUDSON] Archiving SOMETHING [INFO] ------------------------------------------------------------------------ [ERROR] FATAL ERROR [INFO] ------------------------------------------------------------------------ [INFO] null [INFO] ------------------------------------------------------------------------ [DEBUG] Trace java.lang.NullPointerException at org.apache.maven.lifecycle.DefaultLifecycleExecutor.calculateConcreteConfiguration(DefaultLifecycleExecutor.java:747)
          Hide
          Jonathan Johnson added a comment -

          Some people are tracking the same issue here.

          https://hudson.dev.java.net/issues/show_bug.cgi?id=2373

          Show
          Jonathan Johnson added a comment - Some people are tracking the same issue here. https://hudson.dev.java.net/issues/show_bug.cgi?id=2373
          Hide
          John Casey added a comment -

          The problem seems to be that Hudson provides its own version of the LifecycleExecutor, component descriptor; when the component descriptor or the class itself changes, there may be NPE's or CompositionExceptions that result, since the class and component descriptor may not match up anymore.

          This happened in the previous issue when we added a new field to the DefaultLifecycleExecutor. Since Hudson's version of the component descriptor hadn't changed accordingly, the new field was never populated, and a NPE was generated. The "solution" was to warn the user that the new part of the build couldn't be executed:

          From DefaultLifecycleExecutor.java, line 1962:

              private void warnOfIncompleteComponentConfiguration( String role )
              {
                  StringBuffer buffer = new StringBuffer();
                  buffer.append( "\n************ WARNING ************" );
                  buffer.append( "\n\nThis Maven runtime contains a LifecycleExecutor component with an incomplete configuration." );
                  buffer.append( "\n\nLifecycleExecutor class: " ).append( getClass().getName() );
                  buffer.append( "\nMissing component requirement: " ).append( role );
                  buffer.append( "\n" );
                  buffer.append( "\nNOTE: This seems to be a third-party Maven derivative you are using. If so, please" );
                  buffer.append( "\nnotify the developers for this derivative project of the problem. The Apache Maven team is not" );
                  buffer.append( "\nresponsible for maintaining the integrity of third-party component overrides." );
                  buffer.append( "\n\n" );
                  
                  getLogger().warn( buffer.toString() );
              }
          
          Show
          John Casey added a comment - The problem seems to be that Hudson provides its own version of the LifecycleExecutor, component descriptor; when the component descriptor or the class itself changes, there may be NPE's or CompositionExceptions that result, since the class and component descriptor may not match up anymore. This happened in the previous issue when we added a new field to the DefaultLifecycleExecutor. Since Hudson's version of the component descriptor hadn't changed accordingly, the new field was never populated, and a NPE was generated. The "solution" was to warn the user that the new part of the build couldn't be executed: From DefaultLifecycleExecutor.java, line 1962: private void warnOfIncompleteComponentConfiguration( String role ) { StringBuffer buffer = new StringBuffer (); buffer.append( "\n************ WARNING ************" ); buffer.append( "\n\nThis Maven runtime contains a LifecycleExecutor component with an incomplete configuration." ); buffer.append( "\n\nLifecycleExecutor class: " ).append( getClass().getName() ); buffer.append( "\nMissing component requirement: " ).append( role ); buffer.append( "\n" ); buffer.append( "\nNOTE: This seems to be a third-party Maven derivative you are using. If so, please" ); buffer.append( "\nnotify the developers for this derivative project of the problem. The Apache Maven team is not" ); buffer.append( "\nresponsible for maintaining the integrity of third-party component overrides." ); buffer.append( "\n\n" ); getLogger().warn( buffer.toString() ); }
          Hide
          John Casey added a comment -

          This is easy enough to take care of; I'll add similar code for the configInterpolator field as I did for the modelInterpolator field.

          Show
          John Casey added a comment - This is easy enough to take care of; I'll add similar code for the configInterpolator field as I did for the modelInterpolator field.
          Hide
          Jonathan Johnson added a comment -

          After upgrading to Hudson ver. 1.306 and sticking with Maven 2.1 my nightly site report is building again without the error. It also looks like issue 2373 on the Maven side has been addressed and will be available after Maven 2.1. Thank you!

          Show
          Jonathan Johnson added a comment - After upgrading to Hudson ver. 1.306 and sticking with Maven 2.1 my nightly site report is building again without the error. It also looks like issue 2373 on the Maven side has been addressed and will be available after Maven 2.1. Thank you!

            People

            • Assignee:
              John Casey
              Reporter:
              Jonathan Johnson
            • Votes:
              5 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: