От Michael Dukelsky (2:5020/1042) к Nil Alexandrov
В ответ на Заголовок предыдущего сообщения в треде (Имя Автора)
NA>>> Можно на временный файл напустить tparser, если он вернёт
NA>>> ошибку, то не принимать новый конфиг.
MD>> Индейская изба типа "фигвам". tparser должен видеть весь конфиг,
MD>> а не только areas. Он сразу же выдаст кучу ошибок типа "в твоём
MD>> конфиге нет такого линка!". К тому же, если команда create
MD>> создаёт неправильный файл, то это ошибка в её коде и этот код
MD>> надо исправить.
NA> Нас интересует больше возвращается ли tparser с "$? == 0", нежели сами
NA> строчки с ворнингами и ошибками. Если tparser возвращается с ошибкой,
NA> значит и обычный hpt command будет выходить с ошибкой сразу на этапе
NA> парсинга конфига.
NA>>> IMHO, лок можно не хватать, т.к. rename(2)
NA>>> в пределах одной файловой системы операция атомарная.
MD>> А что толку, что атомарная? Если в этот момент hpt начал запись в
MD>> этот же файл areas, но ещё не закончил, и тут мы - бац! -
MD>> заменили весь файл целиком. Стало быть, уже записанные изменения
MD>> пропадут, зато после этой замены hpt допишет оставшееся и будет
MD>> мусор вместо конфига.
NA> Скорее всего, просто пропадут изменения, которые параллельно делает
NA> сам hpt, или наши изменения будут перетёрты, если hpt сделает в конце
NA> тот же rename из своего временного в конечный, но не будет мусора.
NA> Тут правильно лочить весь конфиг просто - правда.
... node (at) f1042 (dot) ru
--- GoldED+/LNX 1.1.5-b20151128
* Origin: ==<<.f1042.ru.>>== (2:5020/1042)
Ответы на это письмо: