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

Repeated remote loading of Xerces classes

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • warnings-ng-plugin
    • None

      Our Jenkins controller and agents are in 2 different clouds, with a latency of ~ 80ms between them, and the Warnings Next Generation plugin's Javac issue scanner takes about 7 minutes to parse our Javac warnings:

      00:40:07  [Java Compiler] -> found 366 issues (skipped 45 duplicates)
      00:47:09  [Java Compiler] Post processing issues on 'ci-6.localdomain' with source code encoding 'UTF-8'
      00:47:09  [Java Compiler] Skipping SCM blames as requested
      

      The timestamps are misleading, because the "Post processing issues" line is only logged after the processing is done.

      Most of the time is spent here:

      "pool-1-thread-23408 for JNLP4-connect connection to ci.org/12.23.34.45:8888 id=2470453 / waiting for JNLP4-connect connection to ci.org/12.23.34.45:8888 id=16923" #27074 daemon prio=5 os_prio=0 tid=0x00007ff4bc119800 nid=0x18d46f in Object.wait() [0x00007ff4d9bc9000]
         java.lang.Thread.State: TIMED_WAITING (on object monitor)
      	at java.lang.Object.wait(Native Method)
      	at hudson.remoting.Request.call(Request.java:177)
      	- locked <0x00000007461cb1b8> (a hudson.remoting.RemoteInvocationHandler$RPCRequest)
      	at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:289)
      	at com.sun.proxy.$Proxy6.fetch3(Unknown Source)
      	at hudson.remoting.RemoteClassLoader.prefetchClassReference(RemoteClassLoader.java:348)
      	at hudson.remoting.RemoteClassLoader.loadWithMultiClassLoader(RemoteClassLoader.java:253)
      	at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:223)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
      	- locked <0x000000064b71b330> (a hudson.remoting.RemoteClassLoader)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
      	at org.apache.xerces.impl.dv.ObjectFactory.findProviderClass(Unknown Source)
      	at org.apache.xerces.impl.dv.ObjectFactory.newInstance(Unknown Source)
      	at org.apache.xerces.impl.dv.DTDDVFactory.getInstance(Unknown Source)
      	at org.apache.xerces.impl.dv.DTDDVFactory.getInstance(Unknown Source)
      	at org.apache.xerces.parsers.XML11Configuration.<init>(Unknown Source)
      	at org.apache.xerces.parsers.XIncludeAwareParserConfiguration.<init>(Unknown Source)
      	at org.apache.xerces.parsers.XIncludeAwareParserConfiguration.<init>(Unknown Source)
      	at sun.reflect.GeneratedConstructorAccessor95.newInstance(Unknown Source)
      	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
      	at java.lang.Class.newInstance(Class.java:442)
      	at org.apache.xerces.parsers.ObjectFactory.newInstance(Unknown Source)
      	at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source)
      	at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source)
      	at org.apache.xerces.parsers.SAXParser.<init>(Unknown Source)
      	at org.apache.xerces.parsers.SAXParser.<init>(Unknown Source)
      	at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.<init>(Unknown Source)
      	at org.apache.xerces.jaxp.SAXParserImpl.<init>(Unknown Source)
      	at org.apache.xerces.jaxp.SAXParserImpl.<init>(Unknown Source)
      	at org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParserImpl(Unknown Source)
      	at org.apache.xerces.jaxp.SAXParserFactoryImpl.setFeature(Unknown Source)
      	at edu.hm.hafner.analysis.SecureXmlParserFactory.configureSaxParserFactory(SecureXmlParserFactory.java:121)
      	at edu.hm.hafner.analysis.SecureDigester.<init>(SecureDigester.java:27)
      	at edu.hm.hafner.analysis.ModuleDetector.parsePomAttribute(ModuleDetector.java:294)
      	at edu.hm.hafner.analysis.ModuleDetector.parsePom(ModuleDetector.java:288)
      	at edu.hm.hafner.analysis.ModuleDetector.collectMavenProjects(ModuleDetector.java:127)
      	at edu.hm.hafner.analysis.ModuleDetector.createFilesToModuleMapping(ModuleDetector.java:109)
      	at edu.hm.hafner.analysis.ModuleDetector.<init>(ModuleDetector.java:91)
      	at io.jenkins.plugins.analysis.core.steps.IssuesScanner$ReportPostProcessor.resolveModuleNames(IssuesScanner.java:290)
      	at io.jenkins.plugins.analysis.core.steps.IssuesScanner$ReportPostProcessor.invoke(IssuesScanner.java:249)
      	at io.jenkins.plugins.analysis.core.steps.IssuesScanner$ReportPostProcessor.invoke(IssuesScanner.java:223)
      	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:3331)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:211)
      

      I enabled all logs for hudson.remoting.RemoteClassLoader and it shows a lot of repetition in the remote class loading:

      • 3552 FINER hudson.remoting.RemoteClassLoader prefetchClassReference fetch3(org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl)
      • 3552 FINER hudson.remoting.RemoteClassLoader prefetchClassReference fetch3(org.apache.xerces.parsers.XIncludeAwareParserConfiguration)

      I have tried switching to -workDir, but it didn't make any difference.

            drulli Ulli Hafner
            danberindei Dan Berindei
            Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: