[Comm] Re: [Comm]

Denis Smirnov =?iso-8859-1?q?mithraen_=CE=C1_freesource=2Einfo?=
Ср Май 14 00:37:39 MSD 2003


On Tue, May 13, 2003 at 09:38:14PM +0500, ASA wrote:

 > DS> Приведёшь пример, где это действительно нужно (я про OR)?
 > # requires postgres
 > # requires musql

И как оно себя поведёт, если отвалится постгрес, когда в конфиге у
этого сервиса прописано использовать именно постгрес?

В любом случае сие должно, IMHO, заменяться на более логичное

# requires sqlserver
 
 > >> а сами
 > >> имена не должны больше нигде повторяться (то есть не допускается
 > >> одновременное задание имени mta в двух и более рабочих скриптах,
 > DS> Скажем есть у нас postgres и mysql. Почему бы им обоим не provides
 > DS> sqlserver?
 > Но это будет работать только в том случае если последующие
 > программы юзают СУБД-незаивсимые интерфейсы...
 > А в алгоритм надо внести уточнение: скрипты с requires sqlserver
 > запускается только после того как отработают все скрипты,
 > которые provides sqlserver и хотя бы один из них будет успешным.

Всё проще. С точки зрения алгоритма просто появится некий виртуальный
скрипт sqlserver, который requires всех тех, кто его provides, и который
не требует запуска.
 
 > DS>  > В  "корневых"  S-скриптах  (т.е.  таких,  которые  не зависят от
 > DS>  > других) пишется
 > DS>  > # requires none
 > DS>  > чтобы  запускающему  скрипту  (rc-скрипту)  было понятно, что он
 > DS>  > (S-скрипт) удовлетворяет вышеописанным требованиям.
 > DS> А может вообще без параметров?
 > а как тогда дать управляющему скрипту понять, что он
 > удовлетворяет нашему RFC? ;)

Я имею в виду просто

# requires
 
 > DS>  > Проблемы: переход на другой runlevel, в том числе останов?
 > DS> Каков сейчас алгоритм перехода на другой runlevel? Я не до конца себе его
 > DS> представляю.
 > Опишу текущее поведение SysV при переходе на runlevel X:
 > Последовательнно  перебираются  все скрипты в /etc/rc.d/rcX.d от
 > K00  до  K99,  потом  от  S00  до  S99.  При переборе K-скриптов
 > проверяется,  был  ли  он  запущен,  согласно  записям         в
 > /var/lock/subsys,  если  такой  "отметился",  то он вызывается с
 > параметром  stop,  затем  при  переборе S-скриптов проверяется -
 > если  его  нет в /var/lock/subsys, то он вызывается с параметром
 > start.
 > Этот алгоритм хорошо работает как и при первичном запуске, так и
 > последующей смене уровней.

Угу... В таком случае нам просто надо построить алгоритм обработки K*
скриптов? 
 
 > DS>  > Описание  алгоритма  запуска (в т.ч. лимит на число одновременно
 > DS>  > запущенных скриптов) - Денису.
 > DS> Я, кажется, приводил его в одном из писем. Основная идея в том, что мы
 > ab просил все свести в один файл.

Буду думать как более-менее разумно его сформулировать.
 
> DS> строим дерево очерёдности запуска (не зависимости, а именно очерёдности),
> DS> после чего выбираем все скрипты, которые можно запустить сразу, и создаём
> DS> очередь на исполнения. Из этой очереди скрипты уже и запускаются. После
> DS> завершения скрипта (или попытки его запуска) мы смотрим на наше дерево,
> DS> убираем из него наш скрипт, и модифицируем само дерево в зависимости от
> DS> результата его выполнения и типа связей этого узла с другими (requires или
> DS> after), после чего те скрипты, которые стало возможно запустить,
> DS> отправляем в очередь.
> ОК. Теперь думай как его доработать для смены runlevel'а.

/me пошёл пытаться думать :)

-- 
С уважением, Денис

http://freesource.info
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/community/attachments/20030514/0619fbaa/attachment-0004.bin>


Подробная информация о списке рассылки community