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

File handle leak caused by Groovy build steps

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: Major Major
    • core
    • None
    • Jenkins 2.73.3

      After upgrade to 2.73.3 we noticed that after a few days Jenkins becomes unresponsive and gives "too many open files" error. The only way to overcome the issue is to restart the instance.

      The File Leak Detector Plugin shows that most of the open handles are of this kind:

      #1 /opt/jenkins/scripts/groovy-scripts/lib/vijava-5.1.jar by thread:Executor #1 for master : executing Test_Register_FitNesse_Slave #445211 on Mon Nov 27 16:15:27 CET 2017
      	at java.util.zip.ZipFile.<init>(ZipFile.java:150)
      	at java.util.jar.JarFile.<init>(JarFile.java:166)
      	at java.util.jar.JarFile.<init>(JarFile.java:103)
      	at sun.misc.URLClassPath$JarLoader.getJarFile(URLClassPath.java:893)
      	at sun.misc.URLClassPath$JarLoader.access$700(URLClassPath.java:756)
      	at sun.misc.URLClassPath$JarLoader$1.run(URLClassPath.java:838)
      	at sun.misc.URLClassPath$JarLoader$1.run(URLClassPath.java:831)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at sun.misc.URLClassPath$JarLoader.ensureOpen(URLClassPath.java:830)
      	at sun.misc.URLClassPath$JarLoader.<init>(URLClassPath.java:803)
      	at sun.misc.URLClassPath$3.run(URLClassPath.java:530)
      	at sun.misc.URLClassPath$3.run(URLClassPath.java:520)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at sun.misc.URLClassPath.getLoader(URLClassPath.java:519)
      	at sun.misc.URLClassPath.getLoader(URLClassPath.java:492)
      	at sun.misc.URLClassPath.getNextLoader(URLClassPath.java:457)
      	at sun.misc.URLClassPath.access$100(URLClassPath.java:64)
      	at sun.misc.URLClassPath$1.next(URLClassPath.java:239)
      	at sun.misc.URLClassPath$1.hasMoreElements(URLClassPath.java:250)
      	at java.net.URLClassLoader$3$1.run(URLClassLoader.java:601)
      	at java.net.URLClassLoader$3$1.run(URLClassLoader.java:599)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at java.net.URLClassLoader$3.next(URLClassLoader.java:598)
      	at java.net.URLClassLoader$3.hasMoreElements(URLClassLoader.java:623)
      	at sun.misc.CompoundEnumeration.next(CompoundEnumeration.java:45)
      	at sun.misc.CompoundEnumeration.hasMoreElements(CompoundEnumeration.java:54)
      	at org.codehaus.groovy.transform.ASTTransformationVisitor.doAddGlobalTransforms(ASTTransformationVisitor.java:201)
      	at org.codehaus.groovy.transform.ASTTransformationVisitor.addGlobalTransforms(ASTTransformationVisitor.java:192)
      	at org.codehaus.groovy.transform.ASTTransformationVisitor.addPhaseOperations(ASTTransformationVisitor.java:156)
      	at org.codehaus.groovy.control.CompilationUnit.<init>(CompilationUnit.java:207)
      	at org.codehaus.groovy.control.CompilationUnit.<init>(CompilationUnit.java:124)
      	at groovy.lang.GroovyClassLoader.createCompilationUnit(GroovyClassLoader.java:456)
      	at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:277)
      	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
      	at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
      	at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
      	at groovy.lang.GroovyShell.parse(GroovyShell.java:680)
      	at groovy.lang.GroovyShell.evaluate(GroovyShell.java:662)
      	at groovy.lang.GroovyShell.evaluate(GroovyShell.java:650)
      	at hudson.plugins.groovy.SystemGroovy.perform(SystemGroovy.java:93)
      	at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
      	at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:736)
      	at hudson.model.Build$BuildExecution.build(Build.java:206)
      	at hudson.model.Build$BuildExecution.doRun(Build.java:163)
      	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:496)
      	at hudson.model.Run.execute(Run.java:1737)
      	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
      	at hudson.model.ResourceController.execute(ResourceController.java:97)
      	at hudson.model.Executor.run(Executor.java:421)
      

      Test_Register_FitNesse_Slave triggers a Groovy script and adds '/opt/jenkins/scripts/groovy-scripts/lib/vijava-5.1.jar' to the classpath. Also that job is triggered quite often.

      Before the upgrade (on 2.46) we didn't observe such behavior.

            Unassigned Unassigned
            wheleph Volodymyr Sobotovych
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: