unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: guix-devel@gnu.org
Subject: Re: branch master updated: doc: Recommend avoiding execl, execle or execlp in mcron job specifications.
Date: Sun, 04 Dec 2022 00:10:21 -0500	[thread overview]
Message-ID: <87bkoj7o02.fsf@gmail.com> (raw)
In-Reply-To: <87fsdyup5l.fsf@gnu.org> ("Ludovic Courtès"'s message of "Fri, 02 Dec 2022 10:32:22 +0100")

Hi Ludovic,

Ludovic Courtès <ludo@gnu.org> writes:

> Hello,
>
> guix-commits@gnu.org skribis:
>
>> diff --git a/doc/guix.texi b/doc/guix.texi
>> index e547d469f4..caa6976a82 100644
>> --- a/doc/guix.texi
>> +++ b/doc/guix.texi
>> @@ -18940,9 +18940,8 @@ gexps to introduce job definitions that are passed to mcron
>>    ;; job's action as a Scheme procedure.
>>    #~(job '(next-hour '(3))
>>           (lambda ()
>> -           (execl (string-append #$findutils "/bin/updatedb")
>> -                  "updatedb"
>> -                  "--prunepaths=/tmp /var/tmp /gnu/store"))
>> +           (system* (string-append #$findutils "/bin/updatedb")
>> +                    "--prunepaths=/tmp /var/tmp /gnu/store"))
>>           "updatedb"))
>>  
>>  (define garbage-collector-job
>> @@ -18980,6 +18979,12 @@ the job would appear as ``Lambda function'' in the output of
>>  @command{herd schedule mcron}, which is not nearly descriptive enough!
>>  @end quotation
>>  
>> +@quotation Tip
>> +Avoid calling the Guile procedures @code{execl}, @code{execle} or
>> +@code{execlp} inside a job specification, else mcron won't be able to
>> +output the completion status of the job.
>> +@end quotation
>
> The problem is that this creates an additional process and the first one
> now just sits there in ‘waitpid’.
>
> Could mcron return the completion status of the process that calls the
> thunk?  It suppose it’s already monitoring it (via SIGCHLD or a direct
> ‘waitpid’ call) so it should have that info available, no?

Yes, that should be possible, and I agree that's desirable.  We'd have
to move the finalization logging from 'run-job' to 'child-cleanup', both
defined in (mcron base), moving or factoring out 'seconds-since' and
also recording the start date of the job in the <job-data> record
returned by 'run-job'.

My personal mcron TODO now reads:

--8<---------------cut here---------------start------------->8---
* mcron
** TODO Add a 'test' command to run scheduled action *now*
** TODO Log job completion status upon SIGCHLD
--8<---------------cut here---------------end--------------->8---

But feel free to beat me to it!

-- 
Thanks,
Maxim


      reply	other threads:[~2022-12-04  5:11 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <166969482303.24641.999754855039128907@vcs2.savannah.gnu.org>
2022-12-02  9:32 ` branch master updated: doc: Recommend avoiding execl, execle or execlp in mcron job specifications Ludovic Courtès
2022-12-04  5:10   ` Maxim Cournoyer [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87bkoj7o02.fsf@gmail.com \
    --to=maxim.cournoyer@gmail.com \
    --cc=guix-devel@gnu.org \
    --cc=ludo@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).