Bug 3153

Summary: after rotating logs apache continues logging to deleted file, but not in newly created one
Product: Sisyphus Reporter: dfo <dfo>
Component: apacheAssignee: Michael Shigorin <mike>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: major    
Priority: P2 CC: at, cas, crux, ender, lakostis, ldv, mike, mithraen, qa_viy, rider, shaba, solo, viy
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
fixed initscript none

Description dfo 2003-10-13 13:49:52 MSD
after rotating log files apache continues logging to deleted file, but not in
newly created one

Steps to Reproduce:
1. tail -f /var/log/httpd/access_log
2. logrotate -f /etc/logrotate.d/apache
3. HEAD localhost
3. ls -l /var/log/httpd/access_log
Actual Results:  
in tail window:
127.0.0.1 - - [13/Oct/2003:13:40:39 +0400] "HEAD / HTTP/1.1" 200 0
ls:
-rw-r--r--    1 root     apache          0 Oct 13 13:39 /var/log/httpd/access_log


Expected Results:  
in tail window:
nothing
ls:
-rw-r--r--    1 root     apache          68 Oct 13 13:39 /var/log/httpd/access_log
Comment 1 dfo 2003-10-13 14:21:46 MSD
the problem is in reload() function in /etc/rc.d/init.d/httpd
adding "--name libhttpd.ep" to stop_daemon parameters in that function resolves
the problem.
Comment 2 Michael Shigorin 2003-10-13 17:59:21 MSD
please see attachment -- this will be in 1.3.28rusPL30.18-alt7
Comment 3 Michael Shigorin 2003-10-13 18:03:27 MSD
Created attachment 294 [details]
fixed initscript
Comment 4 Michael Shigorin 2003-10-18 20:10:27 MSD
fixed in 1.3.28rusPL30.18-alt7
Comment 5 Michael Shigorin 2003-10-18 20:19:24 MSD
see #2950, btw
Comment 6 Konstantin A Lepikhov (L.A. Kostis) 2004-01-12 20:29:58 MSK
Still here.

[lakostis@lks lakostis]$ rpm -q service
service-0.5.2-alt1

[lakostis@lks lakostis]$ rpm -q apache
apache-1.3.29rusPL30.18-alt2

[lakostis@lks lakostis]$ ls /etc/init.d/* | grep http
/etc/init.d/httpd

[lakostis@lks lakostis]$ su -c "ls /etc/logrotate.d/ | grep apache"
Password:
apache
[lakostis@lks lakostis]$
- т.е. .rpmnew нет.
Comment 7 Michael Shigorin 2004-01-25 17:49:35 MSK
Гм.  У меня сейчас указанный тест приводит к попаданию информации в access_log
(и `tail -f`, который его переоткрывает, видимо).

ALT Linux Sisyphus (20040122)

Костик, можешь проверить пошагово и конкретизировать?
Comment 8 Michael Shigorin 2004-03-14 15:03:07 MSK
Предложено делать при logrotate не condreload, а condrestart.
Так будет в 1.3.29rusPL30.18-alt6.

---

<dmi> http://www.webmasterworld.com/forum23/1740.htm
<dmi> там говорят надо делать рестарт
<dmi> когда логи уже созданы

<dmi> --- /etc/logrotate.d/apache.orig        2004-03-14 14:46:13 +0300
<dmi> +++ /etc/logrotate.d/apache     2004-03-14 14:46:23 +0300
<dmi> @@ -4,7 +4,7 @@
<dmi>      sharedscripts
<dmi>      create 0644 root apache
<dmi>      postrotate
<dmi> -       /sbin/service httpd condreload >/dev/null
<dmi> +       /sbin/service httpd condrestart >/dev/null
<dmi>      endscript
<dmi>  }
<dmi> @@ -14,6 +14,6 @@
<dmi>      sharedscripts
<dmi>      create 0644 root apache
<dmi>      postrotate
<dmi> -       /sbin/service httpd-perl condreload >/dev/null
<dmi> +       /sbin/service httpd-perl condrestart >/dev/null
<dmi>      endscript
<dmi>  }
Comment 9 Michael Shigorin 2004-06-16 13:52:18 MSD
вроде поправлено
Comment 10 Dmitry V. Levin 2004-06-27 21:27:34 MSD
Не надо делать condrestart - всё равно не поможет.
Проблема в init.d/httpd - там в reload() использована неправильная конструкция:
stop_daemon --lockfile "$LOCKFILE" -HUP

Поясню, что происходит:
1. первый condreload:
"$LOCKFILE" на месте, процессу посылается HUP, после чего "$LOCKFILE" удаляется.
1. второй condreload/condrestart:
"$LOCKFILE" отсутствует, процессу ничего не посылается.

Если stop_daemon используется для посылки сигнала, а не для завершения работы
демона, то --lockfile не только не нужен, но даже вреден.

Workarounded in service-0.5.4-alt1

Ещё раз: не надо делать condrestart, ибо condreload тоже работает.
Comment 11 Michael Shigorin 2004-06-27 23:11:17 MSD
Спасибо, пошел фиксить.

Имеет ли смысл продублировать это пояснение/иллюстрацию в документации service?
Comment 12 Michael Shigorin 2004-06-27 23:15:55 MSD
Что характерно -- в httpd-perl.init.Sisyphus этот момент был оформлен правильно ;-]
Comment 13 Dmitry V. Levin 2004-06-27 23:42:31 MSD
Та же проблема есть в /etc/rc.d/init.d/
dovecot
httpd2
kadmin
krb5kdc
psion
slurpd

Именно поэтому
$ rpmquery --lastchange service
* Sun Jun 27 2004 Dmitry V. Levin <ldv@altlinux> 0.5.4-alt1
- functions/stop_daemon:
  + when sending HUP, do not remove lockfile to workaround
    bugs in third party rc scripts.
Comment 14 Michael Shigorin 2004-06-28 01:43:21 MSD
fixed in 1.3.31rusPL30.20-alt5