Bug 27334

Summary: redis.service for redis
Product: Sisyphus Reporter: Igor Zubkov <icesik>
Component: redisAssignee: Vitaly Lipatov <lav>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: aen, amike, evg, gns, lav, lnkvisitor, naf, shaba, vitty
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 28008    

Description Igor Zubkov 2012-05-14 20:34:53 MSK
Нужна нативная поддержка systemd в пакете redis.
Comment 1 Vitaly Kuznetsov 2012-05-15 16:06:33 MSK
Approve [#71552] EPERM redis.git=2.4.7-alt2 please
Comment 2 Igor Zubkov 2012-05-15 17:38:49 MSK
(В ответ на комментарий №1)
> Approve [#71552] EPERM redis.git=2.4.7-alt2 please

Done.
Comment 3 Repository Robot 2012-05-15 18:03:58 MSK
redis-2.4.7-alt2 -> sisyphus:

* Tue May 15 2012 Vitaly Kuznetsov <vitty@altlinux> 2.4.7-alt2
- add systemd unit file (ALT #27334)
Comment 4 Nikolay A. Fetisov 2012-06-15 15:36:19 MSK
Текущий вариант redis.service - существенно хуже, чем его отсутствие и использование init-скрипта в режиме совместимости.


systemd для остановки процесса посылает SIGTERM, и, если процесс через TimeoutSec=90 секунд не завершился, посылает SIGKILL.

redis при получении SIGTERM сохраняет базу на диск, далее останавливается. Если базу сохранить не удалось - он отказывается останавливаться и продолжает работать. Для больших баз, сохранение на диск может занять достаточно длительное время. Кроме того, вопрос о необходимости сохранения данных зависит от решаемых задач.

init-скрипт сейчас поддерживает три варианта остановки сервиса - см. описание в redis.sysconfig.

Предложенный redis.service, фактически, реализует только один из них, и с существенно уменьшенным timeout'ом на сохранение базы. Итого, при переходе на
systemd сейчас возможна потеря данных в базе Redis.
Comment 5 Dmitriy Kulik 2013-02-28 17:35:27 MSK
1) SIGKILL - прибить не сохраняя. Настраивается конфигом.
2) SIGTERM (default, systemd)
3) SHUTDOWN - почти тот же SIGTERM, не гарантирован при изменении конфигурации

остается вариант 2.

TimeoutStopSec=300
SendSIGKILL=no # Вдруг что - смотрим сами...

А также:
старайтесь следовать правилу: unit поставляемый из "коробки" обеспечивает дефолтный запуск сервиса, все отличные варианты запуска обеспечиваются самим пользователем, перенеся unit в /etc/systemd/system и изменив по желанию. Соответственно не надо в дефолтном юните обеспечивать все возможные варианты запуска
Comment 6 Dmitriy Kulik 2013-04-29 22:27:47 MSK
Ну если возражений нету...