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

HTTP request for checkArtifacts hangs Hudson for a long time on large workarea

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: Critical Critical
    • ant-plugin, core
    • None
    • Windows

      Our work areas contain huge build environments (>40G) each. Hudson becomes excessively slow after configuration operations, when the configuration contains artifact publishers. The artifact paths do contain wildcards like "dir*ectory/smthng/*/" but the resulting artifact fileset is actually very small. It seems as if the configuration makes some artifact path checks 1) over the whole workarea, using 2) slow methods.

      All other operations (builds & checkouts etc.) become also slow for the duration. Repeating the configuration operations / stop/reload on GUI seems to produce more GET operations s left on the same checkArtifacts scanning, and Hudson becomes unusable.

      A similar issue was mentioned here: http://hudson.361315.n4.nabble.com/Want-to-disable-file-mask-validation-150k-files-tt2256867.html#a2256867.

      Here is the relevant dump of one such thread:

      "Handling GET /job/jobname/descriptorByName/hudson.tasks.ArtifactArchiver/checkArtifacts : RequestHandlerThread4"
      daemon prio=6 tid=0x4c421c00 nid=0x1394 runnable [0x4ec7e000]
      java.lang.Thread.State: RUNNABLE
      at org.apache.tools.ant.util.VectorSet.doAdd(VectorSet.java:64)

      • locked <0x2d266708> (a org.apache.tools.ant.util.VectorSet)
        at org.apache.tools.ant.util.VectorSet.add(VectorSet.java:45)
      • locked <0x2d266708> (a org.apache.tools.ant.util.VectorSet)
        at org.apache.tools.ant.DirectoryScanner.processIncluded(DirectoryScanner.java:1322)
        at org.apache.tools.ant.DirectoryScanner.accountForIncludedFile(DirectoryScanner.java:1280)
        at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1233)
        at org.apache.tools.ant.DirectoryScanner.accountForIncludedDir(DirectoryScanner.java:1305)
        at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1253)
        at org.apache.tools.ant.DirectoryScanner.accountForIncludedDir(DirectoryScanner.java:1305)
        at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1253)
        at org.apache.tools.ant.DirectoryScanner.accountForIncludedDir(DirectoryScanner.java:1305)
        at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1253)
        at org.apache.tools.ant.DirectoryScanner.accountForIncludedDir(DirectoryScanner.java:1305)
        at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1253)
        at org.apache.tools.ant.DirectoryScanner.accountForIncludedDir(DirectoryScanner.java:1305)
        at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1253)
        at org.apache.tools.ant.DirectoryScanner.accountForIncludedDir(DirectoryScanner.java:1305)
        at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1253)
        at org.apache.tools.ant.DirectoryScanner.accountForIncludedDir(DirectoryScanner.java:1305)
        at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1253)
        at org.apache.tools.ant.DirectoryScanner.accountForIncludedDir(DirectoryScanner.java:1305)
        at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1253)
        at org.apache.tools.ant.DirectoryScanner.accountForIncludedDir(DirectoryScanner.java:1305)
        at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1253)
        at org.apache.tools.ant.DirectoryScanner.accountForIncludedDir(DirectoryScanner.java:1305)
        at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1253)
        at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1184)
        at org.apache.tools.ant.DirectoryScanner.scandir(DirectoryScanner.java:1146)
        at org.apache.tools.ant.DirectoryScanner.checkIncludePatterns(DirectoryScanner.java:928)
        at org.apache.tools.ant.DirectoryScanner.scan(DirectoryScanner.java:882)
      • locked <0x2d264738> (a org.apache.tools.ant.DirectoryScanner)
        at org.apache.tools.ant.types.AbstractFileSet.getDirectoryScanner(AbstractFileSet.java:490)
        at hudson.FilePath$34.hasMatch(FilePath.java:1715)
        at hudson.FilePath$34.invoke(FilePath.java:1648)
        at hudson.FilePath$34.invoke(FilePath.java:1615)
        at hudson.FilePath.act(FilePath.java:753)
        at hudson.FilePath.act(FilePath.java:735)
        at hudson.FilePath.validateAntFileMask(FilePath.java:1615)
        at hudson.FilePath.validateFileMask(FilePath.java:1765)
        at hudson.FilePath.validateFileMask(FilePath.java:1745)
        at hudson.FilePath.validateFileMask(FilePath.java:1738)
        at hudson.tasks.ArtifactArchiver$DescriptorImpl.doCheckArtifacts(ArtifactArchiver.java:197)
        at sun.reflect.GeneratedMethodAccessor815.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:259)
        at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:126)
        at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:65)
        at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:79)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:537)
        at org.kohsuke.stapler.MetaClass$7.doDispatch(MetaClass.java:219)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:537)
        at org.kohsuke.stapler.MetaClass$7.doDispatch(MetaClass.java:219)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:537)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:453)
        at org.kohsuke.stapler.Stapler.service(Stapler.java:135)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
        at winstone.ServletConfiguration.execute(ServletConfiguration.java:249)
        at winstone.RequestDispatcher.forward(RequestDispatcher.java:335)
        at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:378)
        at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:94)
        at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:420)
        at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:43)
        at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:97)
        at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:86)
        at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
        at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
        at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
        at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
        at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
        at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
        at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:66)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
        at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
        at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
        at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
        at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
        at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:244)
        at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150)
        at java.lang.Thread.run(Thread.java:619)

            Unassigned Unassigned
            pendix2 pendix2
            Votes:
            1 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: