[ https://issues.apache.org/jira/browse/WICKET-3875?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Grigorov updated WICKET-3875: ------------------------------------ Attachment: WICKET-3875.patch Implement async removal of files via commons-upload FileCleaningTracker. API Break: renamed org.apache.wicket.util.file.IFileUploadCleaner to org.apache.wicket.util.file.IFileCleaner since it is not used just for file uploads anymore. This class has been introduced in 1.5 so I don't expect many users of it. > Clear Files.remove() behavior > ----------------------------- > > Key: WICKET-3875 > URL: https://issues.apache.org/jira/browse/WICKET-3875 > Project: Wicket > Issue Type: Bug > Components: wicket-core > Affects Versions: 1.5-RC5.1 > Reporter: Martin Grigorov > Assignee: Martin Grigorov > Attachments: WICKET-3875.patch > > > Currently org.apache.wicket.util.file.Files.remove(File) can remove just > normal files. > I just found that it is called with a folder parameter and since > File.delete() cannot delete non-empty directory it starts waiting for 100ms > and trying again 10 times. > This retry strategy is there for problems in Windows systems where the first > removal attempt may fail and few millis later may succeed. > We should clear Files.remove() behavior because now it wastes 10*100ms trying > to delete non-empty folder. > If I make the method able to delete files via recursion then it can almost > block a thread if for some reason the files inside cannot be deleted (e.g. no > permissions). In such case it will wait 1sec for each file. > The other solution is to check all callers and make sure that all callers > always pass a file (not a folder). > The specific problem that I found is that DiskDataStore tries to delete > org.apache.wicket.settings.IStoreSettings.getFileStoreFolder() but this > folder contains file with name "data" inside and fails. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira