Author: maartenc
Date: Wed Dec  2 21:13:21 2009
New Revision: 886303

URL: http://svn.apache.org/viewvc?rev=886303&view=rev
Log:
FIX: metadata lock files not always deleted from cache (IVY-1145) (thanks to 
Jason Trump)

Modified:
    ant/ivy/core/trunk/CHANGES.txt
    
ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=886303&r1=886302&r2=886303&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Wed Dec  2 21:13:21 2009
@@ -100,6 +100,7 @@
 - IMPROVEMENT: Trace a message when a property file referenced from the 
settings doesn't exixts (IVY-1074)
 - IMPROVEMENT: use defaultconf in combination with defaultconfmapping 
(IVY-1135) (thanks to Jon Schneider)
 
+- FIX: metadata lock files not always deleted from cache (IVY-1145) (thanks to 
Jason Trump)
 - FIX: FileSystem resolver with m2compatible=true throws error when publishing 
modules with dotted organisation names (IVY-968)
 - FIX: ivy:retrieve sync="true" does nothing if first variable is optional 
(IVY-1142) (thanks to Andreas Axelsson)
 - FIX: Latest Compatible Conflict Manager + Extra Attributes in Dependencies' 
IVY files == infinite loop (IVY-956)

Modified: 
ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java?rev=886303&r1=886302&r2=886303&view=diff
==============================================================================
--- 
ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
 (original)
+++ 
ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
 Wed Dec  2 21:13:21 2009
@@ -881,67 +881,68 @@
             Message.error("impossible to acquire lock for " + mrid);
             return null;
         }
+
+        BackupResourceDownloader backupDownloader = new 
BackupResourceDownloader(downloader);
+
+        try {
+            if (!moduleArtifact.isMetadata()) {
+                // the descriptor we are trying to cache is a default one, not 
much to do
+                // just make sure the old artifacts are deleted...
+                if (isChanging(dd, mrid, options)) {
+                    long repoLastModified = mdRef.getLastModified();
         
-        if (!moduleArtifact.isMetadata()) {
-            // the descriptor we are trying to cache is a default one, not 
much to do
-            // just make sure the old artifacts are deleted...
-            if (isChanging(dd, mrid, options)) {
-                long repoLastModified = mdRef.getLastModified();
-    
-                Artifact transformedArtifact = NameSpaceHelper.transform(
-                    moduleArtifact, 
options.getNamespace().getToSystemTransformer());
-                ArtifactOrigin origin = 
getSavedArtifactOrigin(transformedArtifact);
-                File artFile = getArchiveFileInCache(transformedArtifact, 
origin, false);
-                if (artFile.exists() && repoLastModified > 
artFile.lastModified()) {
-                    // artifacts have changed, they should be downloaded again
-                    Message.verbose(mrid + " has changed: deleting old 
artifacts");
-                    Message.debug("deleting " + artFile);
-                    if (!artFile.delete()) {
-                        Message.error("Couldn't delete outdated artifact from 
cache: " + artFile);
-                        return null;
+                    Artifact transformedArtifact = NameSpaceHelper.transform(
+                        moduleArtifact, 
options.getNamespace().getToSystemTransformer());
+                    ArtifactOrigin origin = 
getSavedArtifactOrigin(transformedArtifact);
+                    File artFile = getArchiveFileInCache(transformedArtifact, 
origin, false);
+                    if (artFile.exists() && repoLastModified > 
artFile.lastModified()) {
+                        // artifacts have changed, they should be downloaded 
again
+                        Message.verbose(mrid + " has changed: deleting old 
artifacts");
+                        Message.debug("deleting " + artFile);
+                        if (!artFile.delete()) {
+                            Message.error("Couldn't delete outdated artifact 
from cache: " + artFile);
+                            return null;
+                        }
+                        removeSavedArtifactOrigin(transformedArtifact);
                     }
-                    removeSavedArtifactOrigin(transformedArtifact);
                 }
+                return null;
             }
-            return null;
-        }
-        
-        // now let's see if we can find it in cache and if it is up to date
-        ResolvedModuleRevision rmr = doFindModuleInCache(mrid, options, null);
-        if (rmr != null) {
-            if (rmr.getDescriptor().isDefault() && rmr.getResolver() != 
resolver) {
-                Message.verbose("\t" + getName() + ": found revision in cache: 
" + mrid
-                    + " (resolved by " + rmr.getResolver().getName()
-                    + "): but it's a default one, maybe we can find a better 
one");
-            } else {
-                if (!isCheckmodified(dd, mrid, options) && !isChanging(dd, 
mrid, options)) {
-                    Message.verbose("\t" + getName() + ": revision in cache: " 
+ mrid);
-                    rmr.getReport().setSearched(true);
-                    return rmr;
-                }
-                long repLastModified = mdRef.getLastModified();
-                long cacheLastModified = rmr.getDescriptor().getLastModified();
-                if (!rmr.getDescriptor().isDefault() && repLastModified <= 
cacheLastModified) {
-                    Message.verbose("\t" + getName() + ": revision in cache 
(not updated): "
-                        + mrid);
-                    rmr.getReport().setSearched(true);
-                    return rmr;
+            
+            // now let's see if we can find it in cache and if it is up to date
+            ResolvedModuleRevision rmr = doFindModuleInCache(mrid, options, 
null);
+            if (rmr != null) {
+                if (rmr.getDescriptor().isDefault() && rmr.getResolver() != 
resolver) {
+                    Message.verbose("\t" + getName() + ": found revision in 
cache: " + mrid
+                        + " (resolved by " + rmr.getResolver().getName()
+                        + "): but it's a default one, maybe we can find a 
better one");
                 } else {
-                    Message.verbose("\t" + getName() + ": revision in cache is 
not up to date: "
-                        + mrid);
-                    if (isChanging(dd, mrid, options)) {
-                        // ivy file has been updated, we should see if it has 
a new publication
-                        // date to see if a new download is required (in case 
the dependency is
-                        // a changing one)
-                        cachedPublicationDate = 
-                            rmr.getDescriptor().getResolvedPublicationDate();
+                    if (!isCheckmodified(dd, mrid, options) && !isChanging(dd, 
mrid, options)) {
+                        Message.verbose("\t" + getName() + ": revision in 
cache: " + mrid);
+                        rmr.getReport().setSearched(true);
+                        return rmr;
+                    }
+                    long repLastModified = mdRef.getLastModified();
+                    long cacheLastModified = 
rmr.getDescriptor().getLastModified();
+                    if (!rmr.getDescriptor().isDefault() && repLastModified <= 
cacheLastModified) {
+                        Message.verbose("\t" + getName() + ": revision in 
cache (not updated): "
+                            + mrid);
+                        rmr.getReport().setSearched(true);
+                        return rmr;
+                    } else {
+                        Message.verbose("\t" + getName() + ": revision in 
cache is not up to date: "
+                            + mrid);
+                        if (isChanging(dd, mrid, options)) {
+                            // ivy file has been updated, we should see if it 
has a new publication
+                            // date to see if a new download is required (in 
case the dependency is
+                            // a changing one)
+                            cachedPublicationDate = 
+                                
rmr.getDescriptor().getResolvedPublicationDate();
+                        }
                     }
                 }
             }
-        }
         
-        BackupResourceDownloader backupDownloader = new 
BackupResourceDownloader(downloader);
-        try {
             Artifact originalMetadataArtifact = 
getOriginalMetadataArtifact(moduleArtifact);
             // now download module descriptor and parse it
             report = download(


Reply via email to