[Rd] tempdir() may be deleted during long-running R session
Cook, Malcolm
MEC at stowers.org
Tue Apr 25 18:12:43 CEST 2017
> 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.
>
That is the kind of scenario I was hoping to obviate with my suggestion...
> 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.),
(and, FWIW, that's "Malcolm" with two "l"s. I think all those missing "l"s are flattened out versions of all the extra close parens I typed in the 80s that somehow got lost on the nets...)))
> but I
> would argue if it IS fixable, a fix that includes that would be preferable.
Agreed!
>
> Best,
> ~G
>
> On Tue, Apr 25, 2017 at 8:53 AM, Martin Maechler
> <maechler at stat.math.ethz.ch
> > wrote:
>
> > >>>>> Jeroen Ooms <jeroenooms at gmail.com>
> > >>>>> on Tue, 25 Apr 2017 15:05:51 +0200 writes:
> >
> > > On Tue, Apr 25, 2017 at 1:00 PM, Martin Maechler
> > > <maechler at 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 at 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 at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
More information about the R-devel
mailing list