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

Fails to clean windows workspace with long path

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      I see that issue happening on long paths. A workaround was to use drive mapping in order to reduce the length but it doesn't solve the issue and we came to the limit of path shortening possibilities.

      Here's a stacktrace from a Matrix job:
      https://qa.nuxeo.org/jenkins/job/nuxeo-master-fullbuild-part2-distribution-multios/218/Slave=MULTIDB_WINDOWS

      08:59:26 Building remotely on tweedledum in workspace C:\Jenkins\workspace\nuxeo-master-fullbuild-part2-distribution-multios\Slave\MULTIDB_WINDOWS
      08:59:26 Checkout:MULTIDB_WINDOWS / C:\Jenkins\workspace\nuxeo-master-fullbuild-part2-distribution-multios\Slave\MULTIDB_WINDOWS - hudson.remoting.Channel@4a58a509:tweedledum
      08:59:26 Using strategy: Default
      08:59:26 Last Built Revision: Revision 3676821964588c85aa8b71e288c743c24edd00a3 (origin/master)
      08:59:27 Cloning the remote Git repository
      08:59:27 Cloning repository git://github.com/nuxeo/nuxeo-distribution.git
      08:59:27 git --version
      08:59:27 git version 1.7.6.msysgit.0
      08:59:27 ERROR: Failed to clean the workspace
      08:59:27 java.io.IOException: Unable to delete C:\Jenkins\workspace\nuxeo-master-fullbuild-part2-distribution-multios\Slave\MULTIDB_WINDOWS\nuxeo-distribution-jboss\target\nuxeo-cap-5.7-SNAPSHOT-jboss\server\default\deploy\jbossws.sar\jbossws-management.war\META-INF\maven\org.jboss.ws.native\jbossws-native-management - files in dir: [C:\Jenkins\workspace\nuxeo-master-fullbuild-part2-distribution-multios\Slave\MULTIDB_WINDOWS\nuxeo-distribution-jboss\target\nuxeo-cap-5.7-SNAPSHOT-jboss\server\default\deploy\jbossws.sar\jbossws-management.war\META-INF\maven\org.jboss.ws.native\jbossws-native-management\pom.properties, C:\Jenkins\workspace\nuxeo-master-fullbuild-part2-distribution-multios\Slave\MULTIDB_WINDOWS\nuxeo-distribution-jboss\target\nuxeo-cap-5.7-SNAPSHOT-jboss\server\default\deploy\jbossws.sar\jbossws-management.war\META-INF\maven\org.jboss.ws.native\jbossws-native-management\pom.xml]
      08:59:27 	at hudson.Util.deleteFile(Util.java:238)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:289)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.FilePath$11.invoke(FilePath.java:910)
      08:59:27 	at hudson.FilePath$11.invoke(FilePath.java:908)
      08:59:27 	at hudson.FilePath.act(FilePath.java:842)
      08:59:27 	at hudson.FilePath.act(FilePath.java:824)
      08:59:27 	at hudson.FilePath.deleteRecursive(FilePath.java:908)
      08:59:27 	at hudson.plugins.git.GitAPI.clone(GitAPI.java:239)
      08:59:27 	at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1040)
      08:59:27 	at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:982)
      08:59:27 	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2200)
      08:59:27 	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
      08:59:27 	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
      08:59:27 	at hudson.remoting.Request$2.run(Request.java:326)
      08:59:27 	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
      08:59:27 	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
      08:59:27 	at java.util.concurrent.FutureTask.run(Unknown Source)
      08:59:27 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
      08:59:27 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      08:59:27 	at hudson.remoting.Engine$1$1.run(Engine.java:60)
      08:59:27 	at java.lang.Thread.run(Unknown Source)
      08:59:27 ERROR: Error cloning remote repo 'origin' : Failed to delete workspace
      08:59:27 hudson.plugins.git.GitException: Failed to delete workspace
      08:59:27 	at hudson.plugins.git.GitAPI.clone(GitAPI.java:242)
      08:59:27 	at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1040)
      08:59:27 	at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:982)
      08:59:27 	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2200)
      08:59:27 	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
      08:59:27 	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
      08:59:27 	at hudson.remoting.Request$2.run(Request.java:326)
      08:59:27 	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
      08:59:27 	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
      08:59:27 	at java.util.concurrent.FutureTask.run(Unknown Source)
      08:59:27 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
      08:59:27 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      08:59:27 	at hudson.remoting.Engine$1$1.run(Engine.java:60)
      08:59:27 	at java.lang.Thread.run(Unknown Source)
      08:59:27 Caused by: java.io.IOException: Unable to delete C:\Jenkins\workspace\nuxeo-master-fullbuild-part2-distribution-multios\Slave\MULTIDB_WINDOWS\nuxeo-distribution-jboss\target\nuxeo-cap-5.7-SNAPSHOT-jboss\server\default\deploy\jbossws.sar\jbossws-management.war\META-INF\maven\org.jboss.ws.native\jbossws-native-management - files in dir: [C:\Jenkins\workspace\nuxeo-master-fullbuild-part2-distribution-multios\Slave\MULTIDB_WINDOWS\nuxeo-distribution-jboss\target\nuxeo-cap-5.7-SNAPSHOT-jboss\server\default\deploy\jbossws.sar\jbossws-management.war\META-INF\maven\org.jboss.ws.native\jbossws-native-management\pom.properties, C:\Jenkins\workspace\nuxeo-master-fullbuild-part2-distribution-multios\Slave\MULTIDB_WINDOWS\nuxeo-distribution-jboss\target\nuxeo-cap-5.7-SNAPSHOT-jboss\server\default\deploy\jbossws.sar\jbossws-management.war\META-INF\maven\org.jboss.ws.native\jbossws-native-management\pom.xml]
      08:59:27 	at hudson.Util.deleteFile(Util.java:238)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:289)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.Util.deleteContentsRecursive(Util.java:200)
      08:59:27 	at hudson.Util.deleteRecursive(Util.java:280)
      08:59:27 	at hudson.FilePath$11.invoke(FilePath.java:910)
      08:59:27 	at hudson.FilePath$11.invoke(FilePath.java:908)
      08:59:27 	at hudson.FilePath.act(FilePath.java:842)
      08:59:27 	at hudson.FilePath.act(FilePath.java:824)
      08:59:27 	at hudson.FilePath.deleteRecursive(FilePath.java:908)
      08:59:27 	at hudson.plugins.git.GitAPI.clone(GitAPI.java:239)
      08:59:27 	... 13 more
      08:59:27 Trying next repository
      08:59:27 ERROR: Could not clone repository
      08:59:27 FATAL: Could not clone
      08:59:27 hudson.plugins.git.GitException: Could not clone
      08:59:27 	at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1052)
      08:59:27 	at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:982)
      08:59:27 	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2200)
      08:59:27 	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
      08:59:27 	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
      08:59:27 	at hudson.remoting.Request$2.run(Request.java:326)
      08:59:27 	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
      08:59:27 	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
      08:59:27 	at java.util.concurrent.FutureTask.run(Unknown Source)
      08:59:27 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
      08:59:27 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      08:59:27 	at hudson.remoting.Engine$1$1.run(Engine.java:60)
      08:59:27 	at java.lang.Thread.run(Unknown Source)
      

      It is still possible to manually delete the files.

      FYI, we encountered such a seemingly similar issue in a Python script using Python internal delTree implementation, and it has been resolved by using Windows Shell command: "rmdir /s /q path/to/file" instead.

      Using a matrix job is increasing the path length.
      We would also need to use a different workspace path when under Windows.

        Attachments

          Issue Links

            Activity

            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Jesse Glick
            Path:
            core/src/main/java/hudson/util/jna/Kernel32Utils.java
            core/src/test/java/hudson/FilePathTest.java
            http://jenkins-ci.org/commit/jenkins/d7ef52e1bf68c3e7ca0a82596be89650625c1099
            Log:
            Merge pull request #595 from onemanbucket/jenkins-15418

            [FIXED JENKINS-15418] Allow long paths on windows.

            Compare: https://github.com/jenkinsci/jenkins/compare/edbe2aedca03...d7ef52e1bf68

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: core/src/main/java/hudson/util/jna/Kernel32Utils.java core/src/test/java/hudson/FilePathTest.java http://jenkins-ci.org/commit/jenkins/d7ef52e1bf68c3e7ca0a82596be89650625c1099 Log: Merge pull request #595 from onemanbucket/jenkins-15418 [FIXED JENKINS-15418] Allow long paths on windows. Compare: https://github.com/jenkinsci/jenkins/compare/edbe2aedca03...d7ef52e1bf68
            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: changelog.html http://jenkins-ci.org/commit/jenkins/85019c46d79dd201de8898f4c82e70f761aa2aa5 Log: JENKINS-15418 Noting. Compare: https://github.com/jenkinsci/jenkins/compare/d7ef52e1bf68...85019c46d79d
            Hide
            dogfood dogfood added a comment -

            Integrated in jenkins_main_trunk #2032
            JENKINS-15418 take shares int account, ignore short paths (Revision f66e19c072a24afb6f083db9fc0124f58b9742e6)
            JENKINS-15418 Noting. (Revision 85019c46d79dd201de8898f4c82e70f761aa2aa5)

            Result = UNSTABLE
            erik.lindblad : f66e19c072a24afb6f083db9fc0124f58b9742e6
            Files :

            • core/src/test/java/hudson/FilePathTest.java
            • core/src/main/java/hudson/util/jna/Kernel32Utils.java

            Jesse Glick : 85019c46d79dd201de8898f4c82e70f761aa2aa5
            Files :

            • changelog.html
            Show
            dogfood dogfood added a comment - Integrated in jenkins_main_trunk #2032 JENKINS-15418 take shares int account, ignore short paths (Revision f66e19c072a24afb6f083db9fc0124f58b9742e6) JENKINS-15418 Noting. (Revision 85019c46d79dd201de8898f4c82e70f761aa2aa5) Result = UNSTABLE erik.lindblad : f66e19c072a24afb6f083db9fc0124f58b9742e6 Files : core/src/test/java/hudson/FilePathTest.java core/src/main/java/hudson/util/jna/Kernel32Utils.java Jesse Glick : 85019c46d79dd201de8898f4c82e70f761aa2aa5 Files : changelog.html
            Hide
            aliceten ernestina muck added a comment -

            Alternatively, you can use Long Path Tool, it works good for such issues!

            Show
            aliceten ernestina muck added a comment - Alternatively, you can use Long Path Tool, it works good for such issues!
            Hide
            markewaite Mark Waite added a comment -

            I assume you're referring to http://longpathtool.com/, a commercial product which can assist with the fundamental limitations of Windows. I don't know how that would help Jenkins, since Jenkins needs to reliably remove files with long path names, whether or not a commercial product is available. Can you describe further how you envision long path tool would work in a Jenkins environment?

            Show
            markewaite Mark Waite added a comment - I assume you're referring to http://longpathtool.com/ , a commercial product which can assist with the fundamental limitations of Windows. I don't know how that would help Jenkins, since Jenkins needs to reliably remove files with long path names, whether or not a commercial product is available. Can you describe further how you envision long path tool would work in a Jenkins environment?

              People

              • Assignee:
                ndeloof Nicolas De Loof
                Reporter:
                jcarsique Julien Carsique
              • Votes:
                1 Vote for this issue
                Watchers:
                10 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: