You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by st...@apache.org on 2014/01/06 12:25:31 UTC

[18/21] git commit: Safer deletes

Safer deletes


Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/33c53dca
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/33c53dca
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/33c53dca

Branch: refs/heads/master
Commit: 33c53dcae825f8f96cdff6ed8238797cf03e56ec
Parents: 9a9cf05
Author: Stephen Connolly <st...@gmail.com>
Authored: Mon Jan 6 11:14:45 2014 +0000
Committer: Stephen Connolly <st...@gmail.com>
Committed: Mon Jan 6 11:14:45 2014 +0000

----------------------------------------------------------------------
 .../DefaultRepositoryMetadataManager.java       | 28 ++++++++++++++++++--
 .../repository/legacy/DefaultWagonManager.java  | 22 ++++++++-------
 2 files changed, 38 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/33c53dca/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
----------------------------------------------------------------------
diff --git a/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java b/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
index 53adc8d..e793713 100644
--- a/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
+++ b/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
@@ -141,7 +141,19 @@ public class DefaultRepositoryMetadataManager
                         // delete the local copy so the old details aren't used.
                         if ( file.exists() )
                         {
-                            file.delete();
+                            if ( !file.delete() )
+                            {
+                                // sleep for 10ms just in case this is windows holding a file lock
+                                try
+                                {
+                                    Thread.sleep( 10 );
+                                }
+                                catch ( InterruptedException ie )
+                                {
+                                    // ignore
+                                }
+                                file.delete(); // if this fails, forget about it
+                            }
                         }
                     }
                     catch ( TransferFailedException e )
@@ -448,7 +460,19 @@ public class DefaultRepositoryMetadataManager
             // delete the local copy so the old details aren't used.
             if ( file.exists() )
             {
-                file.delete();
+                if ( !file.delete() )
+                {
+                    // sleep for 10ms just in case this is windows holding a file lock
+                    try
+                    {
+                        Thread.sleep( 10 );
+                    }
+                    catch ( InterruptedException ie )
+                    {
+                        // ignore
+                    }
+                    file.delete(); // if this fails, forget about it
+                }
             }
         }
         finally

http://git-wip-us.apache.org/repos/asf/maven/blob/33c53dca/maven-compat/src/main/java/org/apache/maven/repository/legacy/DefaultWagonManager.java
----------------------------------------------------------------------
diff --git a/maven-compat/src/main/java/org/apache/maven/repository/legacy/DefaultWagonManager.java b/maven-compat/src/main/java/org/apache/maven/repository/legacy/DefaultWagonManager.java
index df81685..0c796ae 100644
--- a/maven-compat/src/main/java/org/apache/maven/repository/legacy/DefaultWagonManager.java
+++ b/maven-compat/src/main/java/org/apache/maven/repository/legacy/DefaultWagonManager.java
@@ -505,7 +505,10 @@ public class DefaultWagonManager
                 {
                     FileUtils.copyFile( temp, destination );
 
-                    temp.delete();
+                    if ( !temp.delete() )
+                    {
+                        temp.deleteOnExit();
+                    }
                 }
                 catch ( IOException e )
                 {
@@ -647,14 +650,10 @@ public class DefaultWagonManager
         for ( File file : files )
         {
             // really don't care if it failed here only log warning
-            try
-            {
-                file.delete();
-            }
-            catch ( Exception e )
+            if ( !file.delete() )
             {
-                logger.warn( "skip failed to delete temporary file : " + file.getAbsolutePath() + " , message "
-                    + e.getMessage() );
+                logger.warn( "skip failed to delete temporary file : " + file.getAbsolutePath() );
+                file.deleteOnExit();
             }
         }
 
@@ -730,10 +729,13 @@ public class DefaultWagonManager
                 File checksumFile = new File( destination + checksumFileExtension );
                 if ( checksumFile.exists() )
                 {
-                    checksumFile.delete();
+                    checksumFile.delete(); // ignore if failed as we will overwrite
                 }
                 FileUtils.copyFile( tempChecksumFile, checksumFile );
-                tempChecksumFile.delete();
+                if ( !tempChecksumFile.delete() )
+                {
+                    tempChecksumFile.deleteOnExit();
+                }
             }
             else
             {