From hb at stat.berkeley.edu  Sun Apr 15 21:46:42 2007
From: hb at stat.berkeley.edu (Henrik Bengtsson)
Date: Sun, 15 Apr 2007 12:46:42 -0700
Subject: [Rd] save() and interrupts
In-Reply-To: <Pine.LNX.4.64.0704151945120.11794@gannet.stats.ox.ac.uk>
References: <59d7961d0704151101w2e892a98r81038a7a336a2ec1@mail.gmail.com>
	<Pine.LNX.4.64.0704151945120.11794@gannet.stats.ox.ac.uk>
Message-ID: <59d7961d0704151246y3005178av67bd5396b991606a@mail.gmail.com>

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
>



[Rd] save() and interrupts
Henrik Bengtsson