Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-5658

NullPointerException when archiving JUnit test results and/or violations

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Critical Critical
    • remoting
    • None

      One of our builds was hung for over 10hours, although the build was finished after 35 minutes.
      It seems as if the JUnit artefacts publisher had an issue reading the JUnit test-results. The console log was only showing the following lines:

      Build #200508 (Feb 16, 2010 8:28:54 PM)
      Started by upstream project "ppg-dev-quick" build number 200703
      Building remotely on srv085
      ...
      BUILD SUCCESSFUL
      Total time: 35 minutes 41 seconds
      Publishing Javadoc
      Archiving artifacts
      
      (hourglass)
      
      

      After forcibly stopping the build, the log showed the following exceptions:

      ERROR: Failed to archive artifacts: ppg-build/build/dist/,ppg-build/build/junit/report/,ppg-build/build/server/,ppg-build/build/emma/,ppg-build/build/doc,ppg-build/build/server
      hudson.util.IOException2: hudson.util.IOException2: Failed to extract /home/hudson/hudson/workspace/ppg-dev/ppg-build/build/dist/,ppg-build/build/junit/report/,ppg-build/build/server/,ppg-build/build/emma/,ppg-build/build/doc,ppg-build/build/server
      	at hudson.FilePath.readFromTar(FilePath.java:1640)
      	at hudson.FilePath.copyRecursiveTo(FilePath.java:1431)
      	at hudson.tasks.ArtifactArchiver.perform(ArtifactArchiver.java:117)
      	at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
      	at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:582)
      	at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:563)
      	at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:550)
      	at hudson.model.Build$RunnerImpl.post2(Build.java:152)
      	at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:528)
      	at hudson.model.Run.run(Run.java:1221)
      	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
      	at hudson.model.ResourceController.execute(ResourceController.java:88)
      	at hudson.model.Executor.run(Executor.java:122)
      Caused by: java.io.IOException
      	at hudson.remoting.FastPipedInputStream.read(FastPipedInputStream.java:164)
      	at hudson.util.HeadBufferingStream.read(HeadBufferingStream.java:61)
      	at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:221)
      	at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:141)
      	at java.util.zip.GZIPInputStream.read(GZIPInputStream.java:92)
      	at org.apache.tools.tar.TarBuffer.readBlock(TarBuffer.java:257)
      	at org.apache.tools.tar.TarBuffer.readRecord(TarBuffer.java:223)
      	at hudson.org.apache.tools.tar.TarInputStream.read(TarInputStream.java:345)
      	at java.io.FilterInputStream.read(FilterInputStream.java:90)
      	at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1025)
      	at org.apache.commons.io.IOUtils.copy(IOUtils.java:999)
      	at hudson.util.IOUtils.copy(IOUtils.java:29)
      	at hudson.FilePath.readFromTar(FilePath.java:1628)
      	... 12 more
      
      	at hudson.FilePath.copyRecursiveTo(FilePath.java:1438)
      	at hudson.tasks.ArtifactArchiver.perform(ArtifactArchiver.java:117)
      	at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
      	at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:582)
      	at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:563)
      	at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:550)
      	at hudson.model.Build$RunnerImpl.post2(Build.java:152)
      	at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:528)
      	at hudson.model.Run.run(Run.java:1221)
      	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
      	at hudson.model.ResourceController.execute(ResourceController.java:88)
      	at hudson.model.Executor.run(Executor.java:122)
      Caused by: java.util.concurrent.ExecutionException: hudson.remoting.RequestAbortedException: java.io.EOFException
      	at hudson.remoting.Request$1.get(Request.java:236)
      	at hudson.remoting.Request$1.get(Request.java:172)
      	at hudson.remoting.FutureAdapter.get(FutureAdapter.java:59)
      	at hudson.FilePath.copyRecursiveTo(FilePath.java:1434)
      	... 11 more
      Caused by: hudson.remoting.RequestAbortedException: java.io.EOFException
      	at hudson.remoting.Request.abort(Request.java:257)
      	at hudson.remoting.Channel.terminate(Channel.java:598)
      	at hudson.remoting.Channel$ReaderThread.run(Channel.java:876)
      Caused by: java.io.EOFException
      	at java.io.ObjectInputStream$BlockDataInputStream.readFully(ObjectInputStream.java:2700)
      	at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1648)
      	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
      	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
      	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
      	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
      	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
      	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
      	at hudson.remoting.Channel$ReaderThread.run(Channel.java:856)
      Recording test results
      ERROR: Publisher hudson.tasks.junit.JUnitResultArchiver aborted due to exception
      java.lang.NullPointerException
      	at hudson.tasks.junit.JUnitParser.parse(JUnitParser.java:66)
      	at hudson.tasks.junit.JUnitResultArchiver.parse(JUnitResultArchiver.java:108)
      	at hudson.tasks.junit.JUnitResultArchiver.perform(JUnitResultArchiver.java:120)
      	at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
      	at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:582)
      	at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:563)
      	at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:550)
      	at hudson.model.Build$RunnerImpl.post2(Build.java:152)
      	at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:528)
      	at hudson.model.Run.run(Run.java:1221)
      	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
      	at hudson.model.ResourceController.execute(ResourceController.java:88)
      	at hudson.model.Executor.run(Executor.java:122)
      ERROR: Publisher hudson.plugins.violations.ViolationsPublisher aborted due to exception
      java.lang.NullPointerException
      	at hudson.plugins.violations.ViolationsPublisher.perform(ViolationsPublisher.java:74)
      	at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:36)
      	at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:582)
      	at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:563)
      	at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:550)
      	at hudson.model.Build$RunnerImpl.post2(Build.java:152)
      	at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:528)
      	at hudson.model.Run.run(Run.java:1221)
      	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
      	at hudson.model.ResourceController.execute(ResourceController.java:88)
      	at hudson.model.Executor.run(Executor.java:122)
      Triggering a new build of ppg-rcp #200494
      Finished: SUCCESS
      

      There is a NPE in the JUnitParser (line 66) and one in the ViolationsPublisher (line 74).

          public TestResult parse(String testResultLocations,
                                             AbstractBuild build, Launcher launcher,
                                             TaskListener listener)
                  throws InterruptedException, IOException
          {
              final long buildTime = build.getTimestamp().getTimeInMillis();
              final long timeOnMaster = System.currentTimeMillis();
      
              // [BUG 3123310] TODO - Test Result Refactor: review and fix TestDataPublisher/TestAction subsystem]
              // also get code that deals with testDataPublishers from JUnitResultArchiver.perform
              
      66:        TestResult testResult = build.getWorkspace().act( new ParseResultCallable(testResultLocations, buildTime, timeOnMaster));
              return testResult;        
          }
      
          public boolean perform(
              AbstractBuild<?, ?> build, Launcher launcher,
              BuildListener listener) throws InterruptedException, IOException {
      
              FilePath htmlPath   = new FilePath(
                  new File(build.getProject().getRootDir(), VIOLATIONS));
              FilePath targetPath = new FilePath(
                  new File(build.getRootDir(), VIOLATIONS));
      
      74:        ViolationsReport report = build.getWorkspace().act(
                  new ViolationsCollector(false, targetPath, htmlPath, config));
              report.setConfig(config);
              report.setBuild(build);
              report.setBuildResult();
              build.getActions().add(
                  new ViolationsBuildAction(build, report));
              return true;
          }
      

      It seems in both cases as if either the variable "build" or the result of "build.getWorkspace()" is null. But I assume that this could also be due to the focibly stop of the build or the channel close, see below. In the System Log of Hudson I found the following exceptions:

      Feb 16, 2010 9:08:21 PM hudson.model.AbstractBuild$AbstractRunner performAllBuildStep
      WARNING: Publisher hudson.tasks.junit.JUnitResultArchiver aborted due to exception
      java.lang.NullPointerException
      	at hudson.tasks.junit.JUnitParser.parse(JUnitParser.java:66)
      	at hudson.tasks.junit.JUnitResultArchiver.parse(JUnitResultArchiver.java:108)
      	at hudson.tasks.junit.JUnitResultArchiver.perform(JUnitResultArchiver.java:120)
      	at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
      	at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:582)
      	at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:563)
      	at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:550)
      	at hudson.model.Build$RunnerImpl.post2(Build.java:152)
      	at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:528)
      	at hudson.model.Run.run(Run.java:1221)
      	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
      	at hudson.model.ResourceController.execute(ResourceController.java:88)
      	at hudson.model.Executor.run(Executor.java:122)
      
      Feb 16, 2010 9:08:21 PM hudson.remoting.Channel$ReaderThread run
      SEVERE: I/O error in channel srv085
      java.io.EOFException
      	at java.io.ObjectInputStream$BlockDataInputStream.readFully(ObjectInputStream.java:2700)
      	at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1648)
      	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
      	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
      	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
      	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
      	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
      	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
      	at hudson.remoting.Channel$ReaderThread.run(Channel.java:856)
      
      Feb 16, 2010 9:08:19 PM hudson.remoting.Request$2 run
      SEVERE: Failed to send back a reply
      java.io.IOException: SSH channel is closed. (Close requested by remote)
      	at com.trilead.ssh2.channel.ChannelManager.sendData(ChannelManager.java:383)
      	at com.trilead.ssh2.channel.ChannelOutputStream.write(ChannelOutputStream.java:63)
      	at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1838)
      	at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1747)
      	at java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1249)
      	at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1203)
      	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1387)
      	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
      	at java.io.ObjectOutputStream.writeFatalException(ObjectOutputStream.java:1538)
      	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:329)
      	at hudson.remoting.Channel.send(Channel.java:417)
      	at hudson.remoting.Request$2.run(Request.java:282)
      	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)
      

      The exceptions in the System log indicate that there was an issue with the SSH channel, trying to move the artifacts from the build node to the Hudson server.

            Unassigned Unassigned
            mirumpf Michael Rumpf
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated: