]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5062 Don't fail when concurrent process unzip same plugin dependency
authorJulien HENRY <julien.henry@sonarsource.com>
Mon, 24 Mar 2014 10:01:26 +0000 (11:01 +0100)
committerJulien HENRY <julien.henry@sonarsource.com>
Mon, 24 Mar 2014 10:02:19 +0000 (11:02 +0100)
sonar-home/src/main/java/org/sonar/home/cache/FileCache.java

index 5898f7e4292f743a4ab376bc3cd906bcffc911c3..4ede4d4f56aa818ab2964f9f40ba6837f1c5dd6a 100644 (file)
@@ -19,6 +19,7 @@
  */
 package org.sonar.home.cache;
 
+import org.apache.commons.io.FileExistsException;
 import org.apache.commons.io.FileUtils;
 import org.sonar.api.utils.ZipUtils;
 import org.sonar.home.log.Log;
@@ -187,7 +188,12 @@ public class FileCache {
     if (!destDir.exists()) {
       File tempDir = createTempDir();
       ZipUtils.unzip(cachedFile, tempDir, new LibFilter());
-      FileUtils.moveDirectory(tempDir, destDir);
+      // Recheck in case a concurrent process
+      try {
+        FileUtils.moveDirectory(tempDir, destDir);
+      } catch (FileExistsException e) {
+        // Ignore as is certainly means a concurrent process has unziped the same file
+      }
     }
     return destDir;
   }