Subject: bug#36282: closed (Re: bug#36282: shepherd appears to delete log-file instead of appending)

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 21 Jun 2019 15:14:02 +0000

Your bug report

#36282: shepherd appears to delete log-file instead of appending

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
36282: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=36282
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#36282: shepherd appears to delete log-file instead of appending
From: Ludovic Courtès <[email-masked]>
To: Robert Vollmert <[email-masked]>
Cc: [email-masked]
Date: Fri, 21 Jun 2019 17:13:08 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

Robert Vollmert <[email-masked]> skribis:

> This is from reading the shepherd code, not verified by test currently.
> Apologies if I’m missing something.
>
> The documentation claims that log-file is appended to:
>
> When @var{log-file} is true, it names the file to which the service's
> standard output and standard error are redirected.  @var{log-file} is
> created if it does not exist, otherwise it is appended to.
>
> However, in modules/shepherd/service.scm:
>
>    889  (define make-forkexec-constructor
> […]
>    923          (lambda args
>    924            (define (clean-up file)
>    925              (when file
>    926                (catch 'system-error
>    927                  (lambda ()
>    928                    (delete-file file))
>    929                  (lambda args
>    930                    (unless (= ENOENT (system-error-errno args))
>    931                      (apply throw args))))))
>    932  
>    933            (clean-up pid-file)
>    934            (clean-up log-file)

Ouch, indeed.  Commit 7b4c88bac70f0bad82ef70fd5b682a49bc227478 tried to
address that, but I think it pretty much failed at that…

I removed this ‘clean-up’ call in Shepherd commit
6892f638c78a14fedd075f664432757bc015c140.

Thanks,
Ludo’.

Subject: shepherd appears to delete log-file instead of appending
From: Robert Vollmert <[email-masked]>
To: [email-masked]
Date: Tue, 18 Jun 2019 17:49:46 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

This is from reading the shepherd code, not verified by test currently.
Apologies if I’m missing something.

The documentation claims that log-file is appended to:

When @var{log-file} is true, it names the file to which the service's
standard output and standard error are redirected.  @var{log-file} is
created if it does not exist, otherwise it is appended to.

However, in modules/shepherd/service.scm:

   889  (define make-forkexec-constructor
[…]
   923          (lambda args
   924            (define (clean-up file)
   925              (when file
   926                (catch 'system-error
   927                  (lambda ()
   928                    (delete-file file))
   929                  (lambda args
   930                    (unless (= ENOENT (system-error-errno args))
   931                      (apply throw args))))))
   932  
   933            (clean-up pid-file)
   934            (clean-up log-file)
   935  
   936            (let ((pid (fork+exec-command command