forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.UNIX.BSD

Ответ
 
Опции темы Опции просмотра
  #41  
Старый 13.05.2019, 21:22
Eugene Grosbein
Guest
 
Сообщений: n/a
По умолчанию 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  
Старый 14.05.2019, 06:03
Victor Sudakov
Guest
 
Сообщений: n/a
По умолчанию Как правильно готовить 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  
Старый 14.05.2019, 14:02
Jurij Ivliev
Guest
 
Сообщений: n/a
По умолчанию 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  
Старый 14.05.2019, 18:13
Eugene Grosbein
Guest
 
Сообщений: n/a
По умолчанию 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  
Старый 14.05.2019, 18:13
Eugene Grosbein
Guest
 
Сообщений: n/a
По умолчанию 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  
Старый 14.05.2019, 19:31
Jurij Ivliev
Guest
 
Сообщений: n/a
По умолчанию 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  
Старый 14.05.2019, 20:01
Eugene Grosbein
Guest
 
Сообщений: n/a
По умолчанию 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  
Старый 21.05.2019, 18:22
Victor Sudakov
Guest
 
Сообщений: n/a
По умолчанию Как правильно готовить 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  
Старый 21.05.2019, 19:31
Eugene Grosbein
Guest
 
Сообщений: n/a
По умолчанию 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  
Старый 25.05.2019, 09:03
Victor Sudakov
Guest
 
Сообщений: n/a
По умолчанию Как правильно готовить 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
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 19:48. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2019, vBulletin Solutions, Inc. Перевод: zCarot