#41
|
|||
|
|||
Re: Как правильно готовить apcupsd
Eugene Grosbein написал(а) к Victor Sudakov в May 19 01:07:39 по местному времени:
13 мая 2019, понедельник, в 20:41 NOVT, Victor Sudakov написал(а): EG>> Виктор, я уже как минимум дважды писал, что собираюсь сделать EG>> что-то типа /etc/rc.shutdown.final, из которого можно будет EG>> дергать service apcupsd killpower и жду только результатов EG>> твоего тестирования. VS> Что ты ожидаешь увидеть в моём тестировании, чего я не описал в PR? Я ожидаю подтверждение того, что реальный код реально работает именно так, как ты ожидаешь. Потому что без тестирования даже самые простые, казалось бы, изменения коммитить не следует. Eugene -- Научить не кланяться авторитетам, а исследовать их и сравнивать их поучения с жизнью. Научить настороженно относиться к опыту бывалых людей, потому что жизнь меняется необычайно быстро. --- slrn/1.0.3 (FreeBSD) |
#42
|
|||
|
|||
Как правильно готовить apcupsd
Victor Sudakov написал(а) к eugen в May 19 07:19:40 по местному времени:
Dear eugen, 14 May 19 01:07, Eugene Grosbein wrote to me: EG>>> Виктор, я уже как минимум дважды писал, что собираюсь сделать EG>>> что-то типа /etc/rc.shutdown.final, из которого можно будет EG>>> дергать service apcupsd killpower и жду только результатов EG>>> твоего тестирования. VS>> Что ты ожидаешь увидеть в моём тестировании, чего я не описал в VS>> PR? EG> Я ожидаю подтверждение того, что реальный код реально работает EG> именно так, как ты ожидаешь. Потому что без тестирования EG> даже самые простые, казалось бы, изменения коммитить не следует. Те действия, которые я описал в PR, работают реально именно так, как я ожидал. Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |
#43
|
|||
|
|||
Re: Как правильно готовить apcupsd
Jurij Ivliev написал(а) к Eugene Grosbein в May 19 12:49:36 по местному времени:
From: Jurij Ivliev <ii@any.com.ru> Нi, Eugene! On Fri, 03 May 2019 01:49:40 +0300, Eugene Grosbein <Eugene.Grosbein@f1.n5006.z2.fidonet.org> wrote: EG> 1) из штатного /etc/rc.shutdown будет вызываться некий скрипт EG> типа /etc/rc.shutdown.final (если он существует), EG> сразу после строчки: # Insert other shutdown procedures here EG> что гарантирует его запуск "в самом конце"; BTW, а что если этот пункт реализовать как-то так: ======================================================================== - --- rc.shutdown.orig +++ rc.shutdown @@ -106,8 +106,22 @@ pkill -TERM -P $rcshutdownwatchdog >/dev/null 2>&1 fi -# Insert other shutdown procedures here - +# Final shutdown scripts +do_final () { + local _script; + if [ -r $1/rc.shutdown.final ]; then + debug "Sourcing $1/rc.shutdown.final}" + . $1/rc.shutdown.final + fi + if [ -d $1/rc.shutdown.final.d ]; then + for _script in $1/rc.shutdown.final.d/*.final; do + debug "Sourcing ${_script}" + . $_script + done + fi +} +do_final /etc +dofinal ${localstartup%/rc.d} echo '.' exit 0 ======================================================================== Тогда порт сможет класть свой скрипт в /usr/local/etc/rc.shutdown.final.d, и пользователю не нужно будет вручную править /etc/rc.shutdown.final. --- ifmail v.2.15dev5.4 |
#44
|
|||
|
|||
Re: Как правильно готовить apcupsd
Eugene Grosbein написал(а) к Jurij Ivliev в May 19 21:51:29 по местному времени:
14 мая 2019, вторник, в 10:49 NOVT, Jurij Ivliev написал(а): JI> -# Insert other shutdown procedures here JI> - JI> +# Final shutdown scripts JI> +do_final () { JI> + local _script; JI> + if [ -r $1/rc.shutdown.final ]; then JI> + debug "Sourcing $1/rc.shutdown.final}" JI> + . $1/rc.shutdown.final JI> + fi JI> + if [ -d $1/rc.shutdown.final.d ]; then JI> + for _script in $1/rc.shutdown.final.d/*.final; do JI> + debug "Sourcing ${_script}" JI> + . $_script JI> + done JI> + fi JI> +} JI> +do_final /etc JI> +dofinal ${localstartup%/rc.d} JI> echo '.' JI> exit 0 JI> ======================================================================== JI> Тогда порт сможет класть свой скрипт в /usr/local/etc/rc.shutdown.final.d, JI> и пользователю не нужно будет вручную править /etc/rc.shutdown.final. А чем это множество скриптов отличается от нынешнего множества local_startup ? Опять не будет никакой гарантии, что данный скрипт запускается последним Это и сейчас уже доступно. Eugene -- Научить не кланяться авторитетам, а исследовать их и сравнивать их поучения с жизнью. Научить настороженно относиться к опыту бывалых людей, потому что жизнь меняется необычайно быстро. --- slrn/1.0.3 (FreeBSD) |
#45
|
|||
|
|||
Re: Как правильно готовить apcupsd
Eugene Grosbein написал(а) к Victor Sudakov в May 19 22:01:14 по местному времени:
14 мая 2019, вторник, в 05:19 NOVT, Victor Sudakov написал(а): EG>> Я ожидаю подтверждение того, что реальный код реально работает EG>> именно так, как ты ожидаешь. Потому что без тестирования EG>> даже самые простые, казалось бы, изменения коммитить не следует. VS> Те действия, которые я описал в PR, работают реально именно так, как я ожидал. Это хорошо. Если ты действительно хочешь приблизить момент, когда apcupsd будет "из коробки" работать так, то пожалуйста протестируй те дополнения в /etc/rc.shutdown и стартовому скрипту apcupsd, которые я описывал тут. Они не меняют дефолтное поведение порта, поэтому их будет несложно прокоммитить, при этом они позволяют добиться нужного тебе результата исключительно правкой /etc/rc.conf (или командой sysrc), уже без необходимости юзеру писать логику самому в скриптах с test и так далее. Eugene --- slrn/1.0.3 (FreeBSD) |
#46
|
|||
|
|||
Re: Как правильно готовить apcupsd
Jurij Ivliev написал(а) к Eugene Grosbein в May 19 18:18:46 по местному времени:
From: Jurij Ivliev <ii@any.com.ru> Нi, Eugene! On Tue, 14 May 2019 21:51:29 +0300, Eugene Grosbein <Eugene.Grosbein@f1.n5006.z2.fidonet.org> wrote: EG> А чем это множество скриптов отличается от нынешнего множества EG> local_startup ? Опять не будет никакой гарантии, что данный скрипт EG> запускается последним Это и сейчас уже доступно. Ну хотя бы тем, что 1) оно всё-таки запускается после всех скриптов из /etc/rc.d и $local_startup; 2) порядок запуска явно определяется по именам файлов (в отличии от rc.d, где прядок исполнения выбирает rcorder(8) на основе PROVIDE, REQUIRE, BEFORE и KEYWORD). Впрочем, "Наше дело - предложить, Ваше дело - отказаться" :) --- ifmail v.2.15dev5.4 |
#47
|
|||
|
|||
Re: Как правильно готовить apcupsd
Eugene Grosbein написал(а) к Jurij Ivliev в May 19 23:38:50 по местному времени:
14 мая 2019, вторник, в 16:18 NOVT, Jurij Ivliev написал(а): JI> Eugene Grosbein <Eugene.Grosbein@f1.n5006.z2.fidonet.org> wrote: EG>> А чем это множество скриптов отличается от нынешнего множества EG>> local_startup ? Опять не будет никакой гарантии, что данный скрипт EG>> запускается последним Это и сейчас уже доступно. JI> Ну хотя бы тем, что 1) оно всё-таки запускается после всех скриптов JI> из /etc/rc.d и $local_startup; А зачем нам это? Нам это низачем не надо. Нам надо именно последним. JI> 2) порядок запуска явно определяется JI> по именам файлов (в отличии от rc.d, где прядок исполнения выбирает JI> rcorder(8) на основе PROVIDE, REQUIRE, BEFORE и KEYWORD). А это уже было до rcNG и это никуда не делось для скриптов, которые получаются "одноранговыми" в графе зависимостей. Надо решать не ту задачу, которую проще решить, а ту, которая нужна. Eugene --- slrn/1.0.3 (FreeBSD) |
#48
|
|||
|
|||
Как правильно готовить apcupsd
Victor Sudakov написал(а) к eugen в May 19 20:57:56 по местному времени:
Dear eugen, 14 May 19 22:01, Eugene Grosbein wrote to me: EG>>> Я ожидаю подтверждение того, что реальный код реально работает EG>>> именно так, как ты ожидаешь. Потому что без тестирования EG>>> даже самые простые, казалось бы, изменения коммитить не следует. VS>> Те действия, которые я описал в PR, работают реально именно так, VS>> как я ожидал. EG> Это хорошо. Если ты действительно хочешь приблизить момент, EG> когда apcupsd будет "из коробки" работать так, то пожалуйста EG> протестируй те дополнения в /etc/rc.shutdown и стартовому скрипту EG> apcupsd, которые я описывал тут. Они не меняют дефолтное поведение EG> порта, поэтому их будет несложно прокоммитить, при этом они позволяют EG> добиться нужного тебе результата исключительно правкой EG> /etc/rc.conf (или командой sysrc), уже без необходимости юзеру писать EG> логику самому в скриптах с test и так далее. Я это сделаю в ближайшее время, а пока хочу рассказать про фигню, которая получилась естественным путём, без преднамеренного тестирования. Виртуалки не все успели погаснуть, rc.shutdown прервался watchdog-ом и не дошёл до "apcupsd --hibernate", в результате сервер остался в состоянии то ли single user, то ли system halted (мне не прислали фото консоли) до утра: May 20 21:07:38 gw apcupsd[1140]: apcupsd exiting, signal 15 May 20 21:07:39 gw shutdown: halt by root: apcupsd initiated shutdown May 20 21:07:39 gw kernel: . May 20 21:07:39 gw kernel: . May 20 21:07:39 gw ntpd[1208]: ntpd exiting on signal 15 (Terminated) May 20 21:07:40 gw kernel: , 1208. May 20 21:07:59 gw kernel: May 20 21:07:59 gw kernel: tap2: link state changed to DOWN May 20 21:08:06 gw kernel: tap1: link state changed to DOWN May 20 21:11:39 gw rc.shutdown: 240 second watchdog timeout expired. Shutdown terminated. May 20 21:11:39 gw init: /bin/sh on /etc/rc.shutdown terminated abnormally, going to single user mode May 20 21:11:39 gw syslogd: exiting on signal 15 Надо однако гашение виртуалок вставлять в doshutdown, ещё до вызова "shutdown -h". Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |
#49
|
|||
|
|||
Re: Как правильно готовить apcupsd
Eugene Grosbein написал(а) к Victor Sudakov в May 19 23:11:54 по местному времени:
21 мая 2019, вторник, в 18:57 NOVT, Victor Sudakov написал(а): VS> Виртуалки не все успели погаснуть, rc.shutdown прервался watchdog-ом и не дошёл VS> до "apcupsd --hibernate", в результате сервер остался в состоянии то ли single VS> user, то ли system halted (мне не прислали фото консоли) до утра: VS> May 20 21:11:39 gw rc.shutdown: 240 second watchdog timeout expired. Shutdown VS> terminated. VS> Надо однако гашение виртуалок вставлять в doshutdown, ещё до вызова "shutdown VS> -h". Тут надо смотреть на реальные возможности упса. Если ты не будешь вызывать shutdown, который погасит сервисы (кроме виртуалок может быть ещё какая база) и корректно размонтирует файловые системы с сборосом кешей, а вместо этого запустишь процедуру остановки виртуалок, не ограниченную по времени таймаутом, то плохо будет не только виртуалкам, если батарея сдохнет раньше. А если ты собираешься из doshutdown запускать гашение виртуалок с собственным таймаутом, то это мало чем отличается от системного таймаута. Eugene --- slrn/1.0.3 (FreeBSD) |
#50
|
|||
|
|||
Как правильно готовить apcupsd
Victor Sudakov написал(а) к eugen в May 19 11:29:16 по местному времени:
Dear eugen, 21 May 19 23:11, Eugene Grosbein wrote to me: VS>> Виртуалки не все успели погаснуть, rc.shutdown прервался VS>> watchdog-ом и не дошёл до "apcupsd --hibernate", в результате VS>> сервер остался в состоянии то ли single user, то ли system halted VS>> (мне не прислали фото консоли) до утра: VS>> May 20 21:11:39 gw rc.shutdown: 240 second watchdog timeout VS>> expired. Shutdown terminated. Надо однако гашение виртуалок VS>> вставлять в doshutdown, ещё до вызова "shutdown -h". EG> Тут надо смотреть на реальные возможности упса. Если ты не будешь EG> вызывать shutdown, который погасит сервисы (кроме виртуалок может быть EG> ещё какая база) и корректно размонтирует файловые системы с сборосом EG> кешей, а вместо этого запустишь процедуру остановки виртуалок, не EG> ограниченную по времени таймаутом, то плохо будет не только EG> виртуалкам, если батарея сдохнет раньше. В данном случае на самом хосте ничего нет, кроме bhyve, pf и named с разными view. Так что IMНO пусть лучше хост ждёт остановки виртуалок до последнего, сам он переживёт. EG> А если ты собираешься из doshutdown запускать гашение виртуалок EG> с собственным таймаутом, то это мало чем отличается от системного EG> таймаута. Так вот я и думаю, может вообще там сделать rcshutdowntimeout="" и kern.init_shutdowntimeout заведомо побольше, пусть ждёт до последнего. А не знаешь, когда в bhyve появится гибернация VM, если вообще обещают? Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |