From d@rocz|g @end|ng |rom r@pporter@net  Sat Jun  8 15:55:42 2019
From: d@rocz|g @end|ng |rom r@pporter@net (=?UTF-8?Q?Gergely_Dar=C3=B3czi?=)
Date: Sat, 8 Jun 2019 15:55:42 +0200
Subject: [Rd] Determining the exit code of an "almost finished" R script
In-Reply-To: <03638bde-bb9b-1e67-abc1-1ab66ff153f7@gmail.com>
References: <CAPvvxJUyDVV4xe5=zPJzWs=OeD0DtSw1iWFP90LNn1apu+VCQg@mail.gmail.com>
 <03638bde-bb9b-1e67-abc1-1ab66ff153f7@gmail.com>
Message-ID: <CAPvvxJUteOKZfT+-uE+Cb+o-V24YP_LrVu4eWt=FYotenOZURw@mail.gmail.com>

On Sat, Jun 8, 2019 at 2:13 PM Duncan Murdoch <murdoch.duncan at gmail.com> wrote:
>
> On 08/06/2019 7:42 a.m., Gergely Dar?czi wrote:
> > Dear All,
> >
> > I'm using "reg.finalizer" in a function that is to be called in R scripts
> > to do some cleanup on success. I have not found a way to run the function
> > only if the script run without errors, so when the exit code is expected to
> > be 0.
> >
> > What I've tried is checking "geterrmessage()", but unfortunately it's not
> > perfect: if an error was handled with eg "tryCatch" previously, that
> > message still shows up there.
> >
> > Is there any better way of figuring out in "reg.finalizer" or ".Last" if
> > the session run OK or exiting with !0 exit code?
>
> Can't you just put the line to run it as the last line of your script?
> You won't get there if there was an error.

Thank you very much, Duncan, but unfortunately, that's not feasible.

"reg.finalizer" is called from a function early in the script, which
function first checks when the same script last run and optionally
exists early.
If that optional early exit (within the helper function) doesn't
happen, then the "reg.finalizer" call sets a status update when the R
script has finished, but that should only happen if the script run
without any problems.

Of course, this helper could be split into two -- (1) function call at
the beginning of the script and (2) another at the end, but it would
be much less elegant and error-prone.

I know I'm trying to hack-in some features in my R scripts that should
be better handled by an external job scheduler, but I hope this is
doable.

>
>
> The point of reg.finalizer is to run code even if there was an error;
> your situation is much simpler.
>
> Duncan Murdoch



[Rd] Determining the exit code of an "almost finished" R script
=?UTF-8?Q?Gergely_Dar=C3=B3czi?=