On Apr 23, 2012, at 3:43 PM, Caleb James DeLisle wrote:
Hi,
In order to fix XWIKI-7748 and XWIKI-7749, we need a plan for deleting temporary file. XWikiAttachmentContent uses File.deleteOnExit(), but in Sun's implementation, deleteOnExit() only deletes on a *clean* exit, in a crash it can't delete the files but it doesn't tag them so they can be deleted in the next run either. Since temp files are usually pseudo-randomly named, they are impossible to find and delete later.
I propose that we create a subdirectory, `java.io.tmpdir`/xwiki/ which will be removed on application exit. If the jvm crashes, the files will be removed next time around. Then alter ApplicationContext.getTemporaryDirectory() to yield this directory.
Sounds ok even though I don't like that we do extra work. Isn't there some lib out there that do this? Doesn't commons-io do this? java.io.tmpdir is for standard environment and not for servlet environment so we need to use the proper tmpdir depending on the environment module. Ffor Servlet env it's: (File) getServletContext().getAttribute("javax.servlet.context.tempdir"); Thanks -Vincent