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

xUnit NoClassDefFoundError when converting CTest output on Windows slave

      We recently converted our Windows slaves from using JNLP service to being logged in via ssh. At that time, several of our CTest-running jobs started failing with the stack trace attached. Note the reference to "/var/lib/jenkins/userContent/xunit/CTest" in the output - that path clearly doesn't exist on our Windows slaves. I don't know that that is the cause of the problem, of course, but it seems potentially relevant. Perhaps the xUnit plugin is somehow assuming that the remote side is Unix since it is logged into via ssh?

      [xUnit] [INFO] - Starting to record.
      [xUnit] [INFO] - Processing CTest-Version N/A (default)
      [xUnit] [INFO] - [CTest-Version N/A (default)] - 1 test report file(s) were found with the pattern 'build/memcached/Testing/**/Test.xml' relative to 'C:\Jenkins\workspace\memcached-gerrit-master\label_exp\watson-windows' for the testing framework 'CTest-Version N/A (default)'.
      [xUnit] [INFO] - Converting 'C:\Jenkins\workspace\memcached-gerrit-master\label_exp\watson-windows\build\memcached\Testing\20160112-0155\Test.xml' .
      [xUnit] [ERROR] - Conversion error remote file operation failed: /var/lib/jenkins/userContent/xunit/CTest at hudson.remoting.Channel@b07fd3:channel
      ERROR: Publisher org.jenkinsci.plugins.xunit.XUnitPublisher aborted due to exception
      java.io.IOException: remote file operation failed: C:\Jenkins\workspace\memcached-gerrit-master\label_exp\watson-windows at hudson.remoting.Channel@34a40002:watson-windows-01
      at hudson.FilePath.act(FilePath.java:910)
      at hudson.FilePath.act(FilePath.java:887)
      at org.jenkinsci.plugins.xunit.XUnitProcessor.performTests(XUnitProcessor.java:138)
      at org.jenkinsci.plugins.xunit.XUnitProcessor.performXUnit(XUnitProcessor.java:81)
      at org.jenkinsci.plugins.xunit.XUnitPublisher.perform(XUnitPublisher.java:112)
      at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
      at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:804)
      at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:776)
      at hudson.model.Build$BuildExecution.post2(Build.java:183)
      at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:725)
      at hudson.model.Run.execute(Run.java:1701)
      at hudson.matrix.MatrixRun.run(MatrixRun.java:146)
      at hudson.model.ResourceController.execute(ResourceController.java:88)
      at hudson.model.Executor.run(Executor.java:231)
      Caused by: hudson.util.IOException2: There are some problems during the conversion into JUnit reports:
      at org.jenkinsci.plugins.xunit.service.XUnitTransformer.invoke(XUnitTransformer.java:181)
      at org.jenkinsci.plugins.xunit.service.XUnitTransformer.invoke(XUnitTransformer.java:42)
      at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
      at hudson.remoting.UserRequest.perform(UserRequest.java:118)
      at hudson.remoting.UserRequest.perform(UserRequest.java:48)
      at hudson.remoting.Request$2.run(Request.java:328)
      at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
      at java.util.concurrent.FutureTask.run(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)
      Caused by: org.jenkinsci.plugins.xunit.exception.XUnitException: Conversion error remote file operation failed: /var/lib/jenkins/userContent/xunit/CTest at hudson.remoting.Channel@b07fd3:channel
      at org.jenkinsci.plugins.xunit.service.XUnitConversionService.convert(XUnitConversionService.java:91)
      at org.jenkinsci.plugins.xunit.service.XUnitTransformer.invoke(XUnitTransformer.java:144)
      ... 10 more
      Caused by: java.io.IOException: remote file operation failed: /var/lib/jenkins/userContent/xunit/CTest at hudson.remoting.Channel@b07fd3:channel
      at hudson.FilePath.act(FilePath.java:910)
      at hudson.FilePath.act(FilePath.java:887)
      at hudson.FilePath.exists(FilePath.java:1319)
      at org.jenkinsci.plugins.xunit.service.XUnitConversionService.convertInputMetricXSL(XUnitConversionService.java:106)
      at org.jenkinsci.plugins.xunit.service.XUnitConversionService.convert(XUnitConversionService.java:80)
      ... 11 more
      Caused by: java.io.IOException: Remote call on channel failed
      at hudson.remoting.Channel.call(Channel.java:731)
      at hudson.FilePath.act(FilePath.java:903)
      ... 15 more
      Caused by: java.lang.NoClassDefFoundError: hudson/remoting/RemoteClassLoader$RemoteIClassLoader
      at hudson.remoting.RemoteClassLoader.export(RemoteClassLoader.java:656)
      at hudson.remoting.UserRequest.<init>(UserRequest.java:69)
      at hudson.remoting.Channel.call(Channel.java:721)
      ... 16 more

          [JENKINS-32403] xUnit NoClassDefFoundError when converting CTest output on Windows slave

          Chris Hillery added a comment -

          Our slaves are configured as "Launch slave agents on Unix machines via SSH", but Jenkins itself at least recognizes that it is a Windows slave in the connect log:

          <===[JENKINS REMOTING CAPACITY]===>channel started
          Slave.jar version: 2.33
          This is a Windows slave
          Slave successfully connected and online

          Again, I don't know that the /var path in the output is related to the stack trace, nor that the /var path is coming from thinking the slave is Unix; just offering observations.

          Chris Hillery added a comment - Our slaves are configured as "Launch slave agents on Unix machines via SSH", but Jenkins itself at least recognizes that it is a Windows slave in the connect log: <=== [JENKINS REMOTING CAPACITY] ===>channel started Slave.jar version: 2.33 This is a Windows slave Slave successfully connected and online Again, I don't know that the /var path in the output is related to the stack trace, nor that the /var path is coming from thinking the slave is Unix; just offering observations.

          Chris Hillery added a comment -

          FYI, I found an almost identical stack trace here:

          https://issues.jenkins-ci.org/browse/JENKINS-11570

          However that ticket was resolved as being fixed in xUnit plugin 1.42 with no further information.

          Chris Hillery added a comment - FYI, I found an almost identical stack trace here: https://issues.jenkins-ci.org/browse/JENKINS-11570 However that ticket was resolved as being fixed in xUnit plugin 1.42 with no further information.

          Oleg Nenashev added a comment -

          Please reopen if it happens on newest Remoting versions (3.0+)
          Classloading engine has been seriously reworked

          Oleg Nenashev added a comment - Please reopen if it happens on newest Remoting versions (3.0+) Classloading engine has been seriously reworked

            Unassigned Unassigned
            ceej Chris Hillery
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: