guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: branch master updated: doc: Recommend avoiding execl, execle or exec


From: Maxim Cournoyer
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
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)

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 via email to

[Prev in Thread] Current Thread [Next in Thread]