[Rd] save() and interrupts

Henrik Bengtsson hb at stat.berkeley.edu
Sun Apr 15 21:46:42 CEST 2007


Hi,

thanks for this.

On 4/15/07, Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:
> On Sun, 15 Apr 2007, Henrik Bengtsson wrote:
>
> > are there any (cross-platform) specs on what the saved filed is if
> > save() is interrupted, e.g. by a user interrupt?   It could be
> > non-existing, empty, partly written, or completed.
>
> My understanding is that you cannot user interrupt compiled code unless it
> is set up to check interrupts.  Version 2 saves are done via the internal
> saveToConn, and I don't see any calls to R_CheckUserInterrupt there. So
> you only need to worry about user interrupts in the R code, and that has
> an on.exit action to close the connection (which should be executed even
> if you interrupt).  Which suggests that the file will be
>
> non-existent
> empty
> complete
>
> and the first two depend on interrupting in the millisecond or less before
> the compiled code gets called.

I'll put it on my todo list to investigate how to make save() more
robust against interrupts before calling the internal code.  One
option is to use tryCatch().  However, that does not handle too
frequent user interrupts, e.g. if an interrupt is sent while in the
"interrupt" call, that will interrupt the function.  So, tryCatch()
alone will only lower the risk for incomplete empty files.  For data
written to files, one alternative is to check for files of zero size
in the on.exit() statement and remove such.

/Henrik

>
> For other forms of interrupts, e.g. a Unix kill -9, the file state could
> be anything.
>
>
> --
> Brian D. Ripley,                  ripley at stats.ox.ac.uk
> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
> University of Oxford,             Tel:  +44 1865 272861 (self)
> 1 South Parks Road,                     +44 1865 272866 (PA)
> Oxford OX1 3TG, UK                Fax:  +44 1865 272595
>



More information about the R-devel mailing list