-
Bug
-
Resolution: Not A Defect
-
Blocker
-
None
-
Both Windows & Linux, Java 6.
When configured as post-build action, both plugins attempt to parse XML documents using a third party xml parser (xerces) on the slave node. As this library is not part of most JDK's it is usually not installed on the slave nodes. This then fails with the cryptic stacktrace:
[PMD] Collecting PMD analysis files...
ERROR: Publisher hudson.plugins.pmd.PmdPublisher aborted due to exception
hudson.util.IOException2: remote file operation failed: project at hudson.remoting.Channel@37393739:slave
at hudson.FilePath.act(FilePath.java:835)
at hudson.FilePath.act(FilePath.java:821)
at hudson.plugins.pmd.PmdPublisher.perform(PmdPublisher.java:134)
at hudson.plugins.analysis.core.HealthAwarePublisher.perform(HealthAwarePublisher.java:358)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:710)
at hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:685)
at hudson.model.Build$RunnerImpl.post2(Build.java:162)
at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:632)
at hudson.model.Run.run(Run.java:1463)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:239)
Caused by: java.io.IOException: Remote call on yasser-windows-slave failed
at hudson.remoting.Channel.call(Channel.java:672)
at hudson.FilePath.act(FilePath.java:828)
... 12 more
Caused by: javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found
at javax.xml.parsers.SAXParserFactory.newInstance(Unknown Source)
at org.apache.commons.digester.Digester.getFactory(Digester.java:490)
at org.apache.commons.digester.Digester.getParser(Digester.java:693)
at org.apache.commons.digester.Digester.getXMLReader(Digester.java:899)
at org.apache.commons.digester.Digester.parse(Digester.java:1666)
at hudson.plugins.pmd.parser.PmdParser.parse(PmdParser.java:70)
at hudson.plugins.analysis.core.AbstractAnnotationParser.parse(AbstractAnnotationParser.java:54)
at hudson.plugins.analysis.core.FilesParser.parseFile(FilesParser.java:261)
at hudson.plugins.analysis.core.FilesParser.parseFiles(FilesParser.java:220)
at hudson.plugins.analysis.core.FilesParser.invoke(FilesParser.java:169)
at hudson.plugins.analysis.core.FilesParser.invoke(FilesParser.java:31)
at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2193)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:326)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at hudson.remoting.Engine$1$1.run(Engine.java:60)
at java.lang.Thread.run(Unknown Source)
Downloading the xerces library manually and adding it to the classpath works on linux, but fails on windows. In that case Jenkins outputs the following message to stdout:
<===[JENKINS REMOTING CAPACITY]===>rO0ABXNyABpodWRzb24ucmVtb3RpbmcuQ2FwYWJpbGl0eQAAAAAAAAABAgABSgAEbWFza3hwAAAAAAAAAAY=
I would expect that:
- complicated operations, such as parsing an xml file, are performed solely on the master node;
- a slave node does never need any third party libraries;
- plugins are not allowed to execute part of their code on the slave nodes.
- is duplicated by
-
JENKINS-15593 Both DryPublisher and PmdPublisher abort due to exception
- Resolved