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

Hudson job update fails with AtomicFileWriter Exception

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • core
    • None
    • The test environment:
      - Windows XP
      - Hudson: 1.384 (no additional plugins installed)
      - Tomcat: 6.029 (installed from scratch)

      Hi all,
      We are deploying Hudson job definitions (config.xml files) via http get/post onto our Hudson instances. While executing those deployments we are facing a bug in Hudson which hinders us to update existing jobs reliably.
      This bug seems to occur only on Hudson server which are running on Tomcat under Windows XP. Additionally this bug rises not every at time but in 80%

      The test environment:

      • Windows XP
      • Hudson: 1.384 (no additional plugins installed)
      • Tomcat: 6.029 (installed from scratch)

      Here the step by step procedure to reproduce the problem:

      ==================================================================
      First we deploy a new simple job definition to Hudson:
      ==================================================================
      Post to URL: http://10.18.111.127:8080/hudson/createItem?name=ldi.validation.failGroupId

      PostData:
      -------------------------------
      <?xml version='1.0' encoding='UTF-8'?>
      <project>
      <actions/>
      <description></description>
      <keepDependencies>false</keepDependencies>
      <properties/>
      <scm class="hudson.scm.NullSCM"/>
      <canRoam>true</canRoam>
      <disabled>false</disabled>
      <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
      <triggers class="vector"/>
      <concurrentBuild>false</concurrentBuild>
      <builders/>
      <publishers/>
      <buildWrappers/>
      </project>

      RESULT:
      -------------------------------
      + Post succeeds
      + No problem reported in any Tomcat log
      + For a TCP Dump se the attached success.log

      ==================================================================
      Secondary lets update that Job afterwards on Hudson:
      ==================================================================
      Post to URL: http://10.18.111.127:8080/hudson/job/ldi.validation.failGroupId/config.xml

      PostData:
      -------------------------------
      <?xml version='1.0' encoding='UTF-8'?>
      <project>
      <actions/>
      <description></description>
      <keepDependencies>false</keepDependencies>
      <properties/>
      <scm class="hudson.scm.NullSCM"/>
      <canRoam>true</canRoam>
      <disabled>false</disabled>
      <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
      <triggers class="vector"/>
      <concurrentBuild>false</concurrentBuild>
      <builders/>
      <publishers/>
      <buildWrappers/>
      </project>

      RESULT (In 80% of all updates):
      -------------------------------

      • the post fails with: HTTP/1.1 500 Internal Server Error (text/html)
      • The Tomcatlog contains the folloging dump:

      SCHWERWIEGEND: Error while serving http://10.18.111.127:8080/hudson/job/ldi.validation.failGroupId/config.xml
      java.lang.reflect.InvocationTargetException
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      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:282)
      at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:149)
      at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:88)
      at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:102)
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:562)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:640)
      at org.kohsuke.stapler.MetaClass$7.doDispatch(MetaClass.java:242)
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:562)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:640)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:478)
      at org.kohsuke.stapler.Stapler.service(Stapler.java:160)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:94)
      at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:86)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
      at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
      at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:470)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
      at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861)
      at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
      at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584)
      at java.lang.Thread.run(Thread.java:619)
      Caused by: java.io.IOException: Unable to delete C:\Documents and Settings\D044133\.hudson\jobs\ldi.validation.failGroupId\config.xml
      at hudson.util.AtomicFileWriter.commit(AtomicFileWriter.java:109)
      at hudson.model.Job.doConfigDotXml(Job.java:1033)
      ... 43 more
      09.11.2010 10:55:50 org.apache.catalina.core.StandardWrapperValve invoke
      SCHWERWIEGEND: Servlet.service() for servlet Stapler threw exception
      java.io.IOException: Unable to delete C:\Documents and Settings\D044133\.hudson\jobs\ldi.validation.failGroupId\config.xml
      at hudson.util.AtomicFileWriter.commit(AtomicFileWriter.java:109)
      at hudson.model.Job.doConfigDotXml(Job.java:1033)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      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:282)
      at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:149)
      at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:88)
      at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:102)
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:562)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:640)
      at org.kohsuke.stapler.MetaClass$7.doDispatch(MetaClass.java:242)
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:562)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:640)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:478)
      at org.kohsuke.stapler.Stapler.service(Stapler.java:160)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:94)
      at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:86)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
      at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
      at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:470)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
      at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861)
      at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
      at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584)
      at java.lang.Thread.run(Thread.java:619)

          [JENKINS-8042] Hudson job update fails with AtomicFileWriter Exception

          Code changed in jenkins
          User: Kohsuke Kawaguchi
          Path:
          changelog.html
          core/src/main/java/hudson/XmlFile.java
          http://jenkins-ci.org/commit/jenkins/39a9b8fe3c00c5d03d1905b6f7087bb5cbf4cacd
          Log:
          [FIXED JENKINS-8042] Fixed a file handle leak

          Compare: https://github.com/jenkinsci/jenkins/compare/0da5be7...39a9b8f

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Kohsuke Kawaguchi Path: changelog.html core/src/main/java/hudson/XmlFile.java http://jenkins-ci.org/commit/jenkins/39a9b8fe3c00c5d03d1905b6f7087bb5cbf4cacd Log: [FIXED JENKINS-8042] Fixed a file handle leak Compare: https://github.com/jenkinsci/jenkins/compare/0da5be7...39a9b8f

          dogfood added a comment -

          Integrated in jenkins_main_trunk #922
          [FIXED JENKINS-8042] Fixed a file handle leak

          Kohsuke Kawaguchi : 39a9b8fe3c00c5d03d1905b6f7087bb5cbf4cacd
          Files :

          • core/src/main/java/hudson/XmlFile.java
          • changelog.html

          dogfood added a comment - Integrated in jenkins_main_trunk #922 [FIXED JENKINS-8042] Fixed a file handle leak Kohsuke Kawaguchi : 39a9b8fe3c00c5d03d1905b6f7087bb5cbf4cacd Files : core/src/main/java/hudson/XmlFile.java changelog.html

          Code changed in jenkins
          User: Kohsuke Kawaguchi
          Path:
          changelog.html
          core/src/main/java/hudson/XmlFile.java
          http://jenkins-ci.org/commit/jenkins/39a9b8fe3c00c5d03d1905b6f7087bb5cbf4cacd
          Log:
          [FIXED JENKINS-8042] Fixed a file handle leak

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Kohsuke Kawaguchi Path: changelog.html core/src/main/java/hudson/XmlFile.java http://jenkins-ci.org/commit/jenkins/39a9b8fe3c00c5d03d1905b6f7087bb5cbf4cacd Log: [FIXED JENKINS-8042] Fixed a file handle leak

          Code changed in jenkins
          User: Kohsuke Kawaguchi
          Path:
          changelog.html
          core/src/main/java/hudson/XmlFile.java
          http://jenkins-ci.org/commit/jenkins/39a9b8fe3c00c5d03d1905b6f7087bb5cbf4cacd
          Log:
          [FIXED JENKINS-8042] Fixed a file handle leak

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Kohsuke Kawaguchi Path: changelog.html core/src/main/java/hudson/XmlFile.java http://jenkins-ci.org/commit/jenkins/39a9b8fe3c00c5d03d1905b6f7087bb5cbf4cacd Log: [FIXED JENKINS-8042] Fixed a file handle leak

            Unassigned Unassigned
            matthiasvach matthiasVach
            Votes:
            1 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: