Bug 7441 - server does not stop
Summary: server does not stop
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: nginx (show other bugs)
Version: unstable
Hardware: all Linux
: P2 major
Assignee: Anton Farygin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks: 14167
  Show dependency tree
 
Reported: 2005-07-22 10:40 MSD by Igor Muratov
Modified: 2008-01-25 21:53 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Igor Muratov 2005-07-22 10:40:22 MSD
worker processes does not die when service nginx stop
Comment 1 Denis Smirnov 2005-07-22 14:59:33 MSD
Я, видимо, не до конца понимаю логику работы start_stop_daemon.

Можете подсказать как это решить?
Comment 2 Michael Shigorin 2005-07-22 20:15:38 MSD
Ещё не копал, хотя killall nginx уже звучало.
Comment 3 Denis Smirnov 2005-07-22 21:20:17 MSD
killall я делать точно не буду
Comment 4 Denis Smirnov 2005-09-17 21:04:58 MSD
Пожалуйста, подскажите как правильно решить эту проблему.
Сейчас я этого сделать не могу.
Comment 5 Dmitry V. Levin 2005-09-17 22:30:53 MSD
Я бы подсказал, если бы был в курсе.
Comment 6 Michael Shigorin 2007-07-19 11:40:11 MSD
(In reply to comment #5)
> Я бы подсказал, если бы был в курсе.
А ты до сих пор не применяешь nginx? :)
Comment 7 Michael Shigorin 2007-08-30 17:12:03 MSD
Актуально для 0.5.31-alt1

2 lakostis: ты альтовой сборкой пользовался?
Comment 8 Michael Shigorin 2007-08-30 17:55:41 MSD
Значтак.  stop() фиксится как раз просто:

-   stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user root
--name nginx -- nginx
+   stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user root
--name nginx -- /usr/sbin/nginx

Следующий пациент -- upgrade(), которое дёргается на condrestart.  Сейчас
отдельно повешу, а это у меня в nginx.git сейчас будет (0.5.31-alt1.1).
Comment 9 Dmitry V. Levin 2007-08-30 18:57:16 MSD
Полный путь нужно указывать только в том случае, когда в $PATH есть другой
одноимённый executable.
Поэтому смысл замены nginx на /usr/sbin/nginx я не вижу.
Comment 10 Michael Shigorin 2007-08-30 21:44:15 MSD
Тем не менее хватило одной этой правки, чтоб застопалось (процесс имеет
обыкновение менять себе process title или как его).

Я помню, что в /etc/init.d/functions делалась довольно развесистая обработка, но
сегодня пробегал только по диагонали... часом не сравнивалось с /proc/$PID/exe?
"# We need the absolute pathname for /proc/*/exe checks."

Ровно чтоб цепляло глаз -- во всех остальных вызовах оставил nginx, а не
$BINARY==/usr/bin/nginx -- мож когда кто доберётся, а сейчас по факту работает.

Там оказалось ещё несколько process related усложнений около upgrade(), ну да
это всё стопкой коммитов уже у меня в nginx.git и всё проверенное работает :)
Comment 11 Dmitry V. Levin 2007-08-30 21:48:08 MSD
WHICH="$(absolute "$NAME")" || return 1
Миша, откати скорее это изменение, оно ничего не исправляет.
Если у тебя что-то исправилось, то по другой причине.
Comment 12 Michael Shigorin 2007-08-30 23:23:40 MSD
Дим, оно, к сожалению, _исправило_ и я почти готов дать зуб, что именно
атомарное -- проверил пару раз.

Можно взять сборку 0.5.31-alt1, применить к ней только это изменение и
проверить, останавливается ли запущенный сервер, при помощи

service nginx restart
service nginx restart

Сегодня больше разборок не будет -- я ещё хочу до полуночи домой добраться.

Тот пакет, который сейчас -- рабочий для меня по меркам, принятым мной для
apache (а TODO там наоставлено, ещё на подход к инитскрипту хватит ;-).
Comment 13 Dmitry V. Levin 2007-08-30 23:46:26 MSD
Ой, а зачем --name?

Поменяйте на
stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user root --
nginx

Использование --name менее безопасно и в данном случае выглядит совершенно
ненужным.
Comment 14 Michael Shigorin 2007-08-31 15:02:49 MSD
fixed in 0.5.31-alt3.1 [0e8601f]
(пока не заливаю, ещё #12655)
Comment 15 Michael Shigorin 2007-08-31 15:04:47 MSD
(In reply to comment #14)
> fixed in 0.5.31-alt3.1 [0e8601f]
Точнее, [2e7557c] -- забыл спек закоммитить.
Comment 16 Michael Shigorin 2007-08-31 17:09:21 MSD
PS: в смысле было сделано

-       stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user
root --name nginx -- $BINARY
+       stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user
root -- nginx

Заливаю всё кучей.
Comment 17 Eugene V. Horohorin 2008-01-16 15:21:06 MSK
бага все еще актуальна?
Comment 18 Michael Shigorin 2008-01-20 01:53:38 MSK
Нет.