From 693b60ba6f7cbba0d59213f2a3e929d4e287c8ea Mon Sep 17 00:00:00 2001 From: kohsuke Date: Sat, 23 Jan 2010 00:38:36 +0000 Subject: [PATCH] [FIXED HUDSON-5313 HUDSON-5314] Applied a patch in 5314 to fix 5313. git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@26274 71c3de6d-444a-0410-be80-ed276b4c234a --- .../hudson/remoting/RemoteClassLoader.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/remoting/src/main/java/hudson/remoting/RemoteClassLoader.java b/remoting/src/main/java/hudson/remoting/RemoteClassLoader.java index 4825a24add..7e283a0686 100644 --- a/remoting/src/main/java/hudson/remoting/RemoteClassLoader.java +++ b/remoting/src/main/java/hudson/remoting/RemoteClassLoader.java @@ -258,8 +258,7 @@ final class RemoteClassLoader extends URLClassLoader { private File makeResource(String name, byte[] image) throws IOException { - File tmpFile = File.createTempFile("hudson-remoting", ""); - tmpFile.delete(); + File tmpFile = createTempDir(); File resource = new File(tmpFile, name); resource.getParentFile().mkdirs(); @@ -272,6 +271,24 @@ final class RemoteClassLoader extends URLClassLoader { return resource; } + private File createTempDir() throws IOException { + // work around sun bug 6325169 on windows + // see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6325169 + int nRetry=0; + while (true) { + try { + File tmpFile = File.createTempFile("hudson-remoting", ""); + tmpFile.delete(); + tmpFile.mkdir(); + return tmpFile; + } catch (IOException e) { + if (nRetry++ < 100) + continue; + throw e; + } + } + } + /** * Prefetches the jar into this class loader. *