на главнуюВсе эхи 715.ECHO
войти ?

Created new areas

От Michael Dukelsky (2:5020/1042) к Nil Alexandrov

В ответ на Заголовок предыдущего сообщения в треде (Имя Автора)


Привет, Nil!

19 Jul 17 18:23, Nil Alexandrov послал(а) письмо к Michael Dukelsky:

MD>> На самом деле надо сначала сделать копию areas, потом добавить
MD>> новую эху в копию, а потом, используя flock, переименовать копию
MD>> обратно в areas. Соответствующий скрипт на Perl, использующий
MD>> flock, у меня давно написан.

NA> Можно на временный файл напустить tparser, если он вернёт ошибку, то
NA> не принимать новый конфиг.

Индейская изба типа "фигвам". tparser должен видеть весь конфиг, а не только areas. Он сразу же выдаст кучу ошибок типа "в твоём конфиге нет такого линка!". К тому же, если команда create создаёт неправильный файл, то это ошибка в её коде и этот код надо исправить.

NA> IMHO, лок можно не хватать, т.к. rename(2)
NA> в пределах одной файловой системы операция атомарная.

А что толку, что атомарная? Если в этот момент hpt начал запись в этот же файл areas, но ещё не закончил, и тут мы - бац! - заменили весь файл целиком. Стало быть, уже записанные изменения пропадут, зато после этой замены hpt допишет оставшееся и будет мусор вместо конфига.

NA> А вот защититься
NA> от параллельных таких вот скриптиков (если мы не уверены, что
NA> запускаем только одну копию), тогда лок бы не помешал ещё до создания
NA> временного файла.

Да, защититься от повторного запуска надо.

Желаю успехов, Nil!
За сим откланиваюсь, Michael.

... node (at) f1042 (dot) ru

--- GoldED+/LNX 1.1.5-b20151128
* Origin: ==<<.f1042.ru.>>== (2:5020/1042)

Ответы на это письмо:

From: Username
Заголовок следующего сообщения в треде может быть длинным и его придется перенести на новую строку

From: Username
Или коротким

FGHI-url этого письма: area://715.ECHO?msgid=2:5020/1042+596fa4b7