Martin, Thanks for your work on this.
One thing that seems to be missing from the conversation is that recreating the temp directory will prevent future failures when R wants to write a temp file, but the files will, of course, not be there. Any code written assuming the contract is that the temporary directory, and thus temporary files, will not be cleaned up before the R process exits (which was my naive assumption before this thread, and is the behavior AFAICT on all the systems I regularly use) will still break. I'm not saying that's necessarily fixable (though the R keeping a permanent pointer to a file in the dir suggested by Malcom might? fix it.), but I would argue if it IS fixable, a fix that includes that would be preferable. Best, ~G On Tue, Apr 25, 2017 at 8:53 AM, Martin Maechler <maech...@stat.math.ethz.ch > wrote: > >>>>> Jeroen Ooms <jeroeno...@gmail.com> > >>>>> on Tue, 25 Apr 2017 15:05:51 +0200 writes: > > > On Tue, Apr 25, 2017 at 1:00 PM, Martin Maechler > > <maech...@stat.math.ethz.ch> wrote: > >> As I've found it is not at all hard to add an option > >> which checks the existence and if the directory is no > >> longer "valid", tries to recreate it (and if it fails > >> doing that it calls the famous R_Suicide(), as it does > >> when R starts up and tempdir() cannot be initialized > >> correctly). > > > Perhaps this can also fix the problem with mcparallel > > deleting the tempdir() when one of its children dies: > > > file.exists(tempdir()) #TRUE > > parallel::mcparallel(q('no')) > > file.exists(tempdir()) # FALSE > > Thank you, Jeroen, for the extra example. > > I now have comitted the new feature... (completely back > compatible: in R's code tempdir() is not yet called with an > argument and the default is check = FALSE ), > actually in a "suicide-free" way ... which needed only slightly > more code. > > In the worst case, one could save the R session by > Sys.setenv(TEMPDIR = "<something writable>") > if for instance /tmp/ suddenly became unwritable for the user. > > What we could consider is making the default of 'check' settable > by an option, and experiment with setting the option to TRUE, so > all such problems would be auto-solved (says the incurable optimist ...). > > Martin > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > -- Gabriel Becker, PhD Associate Scientist (Bioinformatics) Genentech Research [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel