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

The execution (build) of Project will fail on "mkdir" on remote disk.

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • filesystem_scm-plugin
    • Jenkins is installed on Windows System and trying to download code to a remote disk. And the disk is on a Linux or MAC system.

      Hi,
      I have a problem - which is almost the same problem of this issue
      about mkdir/open files on remote disk.
      Currently I'm using Jenkins ver. 1.467 and 1.470 with Windows XP 32bit.
      When I want to checkout source code to remote disk whether it is on MAC OS
      or Linux, I'll get mkdir fail.
      I'm very sure java.exe, jenkins.exe, git.exe, p4.exe are executing as my
      account in Windows XP.
      And this account has right to read/write/mkdir/delete the files and
      directories in the remote disk.
      It seems this problem exists a very long time.
      Started by user anonymous
      Building in workspace Z:\PC12010025
      java.io.IOException: Failed to mkdirs: Z:\PC12010025
      at hudson.FilePath.mkdirs(FilePath.java:901)
      at hudson.model.AbstractProject.checkout(AbstractProject.java:1216)
      at
      hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:587)
      at
      hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:476)
      at hudson.model.Run.run(Run.java:1438)
      at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
      at
      hudson.model.ResourceController.execute(ResourceController.java:88)
      at hudson.model.Executor.run(Executor.java:239)
      Finished: FAILURE
      There are other users encountered this problem like
      http://serverfault.com/questions/308774/how-to-make-hudson-write-to-r...
      And the relative source code in Jenkins is:
      /**

      • Creates this directory.
        */
        public void mkdirs() throws IOException, InterruptedException {
        if(!act(new FileCallable<Boolean>()
        Unknown macro: { public Boolean invoke(File f, VirtualChannel channel) throws IOException, InterruptedException { if(f.mkdirs() || f.exists()) return true; // OK // following Ant <mkdir> task to avoid possible race condition. Thread.sleep(10); return f.mkdirs() || f.exists(); } }

        ))
        throw new IOException("Failed to mkdirs: "+remote);
        }

          [JENKINS-14112] The execution (build) of Project will fail on "mkdir" on remote disk.

          Macpaul Lin added a comment -

          I have found a workaround by using "\\NAS\PC12010025\workspace" to replace "Z:\PC12010025\workspace" to avoid mkdir fail.
          However, when you use perforce-plugin with this workaround, the perforce plugin cannot take "\\NAS\PC12010025\workspace" as its root directory.
          The string will be converted as "\NAS\PC12010025\workspace" which is not correct when p4.exe sync source code on windows system.
          Whether you configured the string like "\\\\NAS\PC12010025\workspace" or "////NAS/PC12010025/workspace", it will finally converted as "\NAS\PC12010025\workspace.

          So there are 2 problems related to this bug.

          Macpaul Lin added a comment - I have found a workaround by using "\\NAS\PC12010025\workspace" to replace "Z:\PC12010025\workspace" to avoid mkdir fail. However, when you use perforce-plugin with this workaround, the perforce plugin cannot take "\\NAS\PC12010025\workspace" as its root directory. The string will be converted as "\NAS\PC12010025\workspace" which is not correct when p4.exe sync source code on windows system. Whether you configured the string like "\\\\NAS\PC12010025\workspace" or "////NAS/PC12010025/workspace", it will finally converted as "\NAS\PC12010025\workspace. So there are 2 problems related to this bug.

          Macpaul Lin added a comment -

          I've found that some people said the service running on windows system cannot access remote disk.
          Even if you change the UID to your account instead of the "SYSTEM" pid.
          However, there are some work around to avoid this kind of settings.
          Please check the following description.

          http://stackoverflow.com/questions/182750/how-to-map-a-network-drive-to-be-used-by-a-service

          Macpaul Lin added a comment - I've found that some people said the service running on windows system cannot access remote disk. Even if you change the UID to your account instead of the "SYSTEM" pid. However, there are some work around to avoid this kind of settings. Please check the following description. http://stackoverflow.com/questions/182750/how-to-map-a-network-drive-to-be-used-by-a-service

          Sami Tikka added a comment -

          I would close this ticket as invalid. This is not a bug in Jenkins but a feature of Windows remote disks.

          Sami Tikka added a comment - I would close this ticket as invalid. This is not a bug in Jenkins but a feature of Windows remote disks.

          Jenkins usage of the drive (in svnKit?) is related to this issue. I have the same issue with mkdir fail as a java exception when trying to set a custom workspace as a network drive. Even though all permissions are set and the drive is mounted with a letter (J I still get this error.

          This is not related to windows permissions. I can set the workspace to be on a local drive and within the job execute a "net USE" command. Without specifying a username/password this uses the current account (whatever Jenkins is running under) and is able to read/write files to the share.

          Whitey zerofour added a comment - Jenkins usage of the drive (in svnKit?) is related to this issue. I have the same issue with mkdir fail as a java exception when trying to set a custom workspace as a network drive. Even though all permissions are set and the drive is mounted with a letter (J I still get this error. This is not related to windows permissions. I can set the workspace to be on a local drive and within the job execute a "net USE" command. Without specifying a username/password this uses the current account (whatever Jenkins is running under) and is able to read/write files to the share.

          Sami Tikka added a comment -

          Have you read https://wiki.jenkins-ci.org/display/JENKINS/My+software+builds+on+my+computer+but+not+on+Jenkins ? My understanding is that drive mappings done by the logged-in user are not necessarily available for the Jenkins user.

          I think you have two possibilities:

          1. Run Jenkins in CMD window in your logged-in user session or
          2. Use something like https://wiki.jenkins-ci.org/display/JENKINS/pre-scm-buildstep to set up network drives so they exist before checkout happens.

          Still, I fail to see why this is a Jenkins bug. Maybe a Jenkins feature request but also I haven't yet seen what the feature would be. Maybe more clarification is needed?

          (By the way, personally I would always try to check out and build code on local disk. Network disk can rarely offer comparable performance to local disk and build speed is essential for continuous integration.)

          Sami Tikka added a comment - Have you read https://wiki.jenkins-ci.org/display/JENKINS/My+software+builds+on+my+computer+but+not+on+Jenkins ? My understanding is that drive mappings done by the logged-in user are not necessarily available for the Jenkins user. I think you have two possibilities: Run Jenkins in CMD window in your logged-in user session or Use something like https://wiki.jenkins-ci.org/display/JENKINS/pre-scm-buildstep to set up network drives so they exist before checkout happens. Still, I fail to see why this is a Jenkins bug. Maybe a Jenkins feature request but also I haven't yet seen what the feature would be. Maybe more clarification is needed? (By the way, personally I would always try to check out and build code on local disk. Network disk can rarely offer comparable performance to local disk and build speed is essential for continuous integration.)

            samngms samngms
            macpaullin Macpaul Lin
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: