commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Oliver Zeigermann (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (TRANSACTION-19) applyDeletes method does not delete dangling links
Date Sat, 07 Jul 2007 09:54:04 GMT

     [ https://issues.apache.org/jira/browse/TRANSACTION-19?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Oliver Zeigermann resolved TRANSACTION-19.
------------------------------------------

    Resolution: Fixed

OK. Got that now. Thanks for the patch, it has been applied!

Oliver

> applyDeletes method does not delete dangling links
> --------------------------------------------------
>
>                 Key: TRANSACTION-19
>                 URL: https://issues.apache.org/jira/browse/TRANSACTION-19
>             Project: Commons Transaction
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Linux CentOS, Java 1.5
>            Reporter: Bojan Vukojevic
>            Assignee: Oliver Zeigermann
>
> applyDeletes method will not delete any dangling links. Even if the link was valid, code
may run into this situation if the file is passed to be deleted before link is registered
for deletion. Code will delete the file effectivelly creating a dangling link that will  not
be deleted. 
> The fix might be another change to applyDeletes method i.e. something like:
> protected static void applyDeletes(File removeDir, File targetDir, File rootDir) throws
IOException {
>         if (removeDir.isDirectory() && targetDir.isDirectory()) {
>             File[] files = removeDir.listFiles();
>             for (int i = 0; i < files.length; i++) {
>                 File removeFile = files[i];
>                 File targetFile = new File(targetDir, removeFile.getName());
>                 if (!removeFile.isDirectory()) {
>                     if (targetFile.exists()) {
>                         if (!targetFile.delete()) {
>                             throw new IOException("Could not delete file " + removeFile.getName()
>                                     + " in directory targetDir");
>                         }
>                     } else if(!targetFile.isFile()){  //============ CHANGE to delete
dangling link=============
>                     	//this is likely a dangling link                    	
>                     	targetFile.delete();  
>                     }
>                     // indicate, this has been done
>                     removeFile.delete();
>                 } else {
>                     applyDeletes(removeFile, targetFile, rootDir);
>                 }
>                 // delete empty target directories, except root dir
>                 if (!targetDir.equals(rootDir) && targetDir.list().length ==
0) {
>                     targetDir.delete();
>                 }
>             }
>         }
>     }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message