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