Bug 29894 - Ошибка открытия сокета при запуске службы
Summary: Ошибка открытия сокета при запуске службы
Status: ASSIGNED
Alias: None
Product: Sisyphus
Classification: Development
Component: squidmill (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: manowar@altlinux.org
QA Contact: qa-sisyphus
URL: http://forum.altlinux.org/index.php/t...
Keywords:
Depends on:
Blocks:
 
Reported: 2014-03-19 12:03 MSK by Andrey Cherepanov
Modified: 2015-09-30 18:25 MSK (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andrey Cherepanov 2014-03-19 12:03:27 MSK
После падения сервера служба squidmill не поднялась:
*** Log started
Process detached (11794)
PID-file: /var/run/squidmill/squidmill.pid
Open server socket: /var/run/squidmill/squidmill.sock
Delete the PID-file: /var/run/squidmill/squidmill.pid
Socket error (98): Address already in use
0  main                    
1  ##execute-program       
*** Log finished

Помогло только удаление файла /var/run/squidmill/squidmill.sock
Comment 1 manowar@altlinux.org 2014-03-19 13:12:54 MSK
  А это точно ошибка? Кажется, при экстренном падении, нельзя гарантировать удаление файла. Обычно выводится сообщение, что, мол, проверьте всё и удалите lock-файл или socket для нормального запуска службы.
Comment 2 Andrey Cherepanov 2014-03-19 13:36:24 MSK
(В ответ на комментарий №1)
>   А это точно ошибка? Кажется, при экстренном падении, нельзя гарантировать
> удаление файла. Обычно выводится сообщение, что, мол, проверьте всё и удалите
> lock-файл или socket для нормального запуска службы.
Прошлый раз также бились с pid-файлом. Что мешает с сокетом поступить также (принудительно удалять, как pid-файл в логе)?
Comment 3 manowar@altlinux.org 2014-03-19 13:55:49 MSK
В логе выше удаляется *новый* PID-файл, который создаётся в рамках попытки запуска службы двумя строками выше. Видимо, служба падает таким образом, что старый PID-файл успевает удалиться, а сокет — нет. Соответственно, squidmill думает, что кто-то запустил другой экземпляр из командной строки (в foreground, поэтому без PID), и не стартует.

Я бы предложил разобраться не с тем, что нужно чистить "ошмётки" от падения службы вручную — это нормальная ситуация —, а с тем, почему squidmill вообще падает, если это происходит регулярно.
Comment 4 Andrey Cherepanov 2014-03-19 14:41:22 MSK
Снапшот виртуалки сделал, так что всегда можно вернутся. Но всё же 
а) лучше возвращать код ошибки, чтобы service не показывал, что служба запущена
б) лучше критические ошиьбки выводить сразу в stderr, тогда понятно почему служба не стартует (как в httpd2 и dhcpd)
в) ещё лучше при старте явно чистить все сокеты и pid во избежание.
Comment 5 manowar@altlinux.org 2014-03-19 14:48:02 MSK
  а) и б) согласен: нужно проверять всё это до форка.