Home » International » Russian » баг в vzctl ?
баг в vzctl ? [message #7401] |
Fri, 13 October 2006 05:23 |
Umka
Messages: 56 Registered: September 2006
|
Member |
|
|
Доброго времени суток.
Собственно не пойму толи это by design толи таки баг..
собственно забавная ситуация имеет место быть..
после вызова функции установки параметров на контекст - не проверяется код возврата и безусловно пытается сохранить конфиг (пусть даже в нем есть ошибки) что может приводить к созданию некоректного конфига.
Fix тривиальный - но хотелось бы услышать коментарии SWSoft..
--- vzctl-actions.c.orig 2006-10-13 05:16:05.000000000 +0300
+++ vzctl-actions.c 2006-10-13 05:16:28.000000000 +0300
@@ -833,6 +833,10 @@
ret = set_ve0(h, g_p, vps_p, cmd_p);
else
ret = set(h, veid, g_p, vps_p, cmd_p);
+
+ if (ret != 0)
+ break;
+
if (cmd_p->opt.save == YES) {
get_vps_conf_path(veid, fname, sizeof(fname));
vps_save_config(veid, fname, cmd_p, vps_p, &g_action);
|
|
|
|
|
Re: баг в vzctl ? [message #7414 is a reply to message #7413] |
Fri, 13 October 2006 07:50 |
Igor Sukhih
Messages: 21 Registered: May 2006
|
Junior Member |
|
|
Umka wrote on Fri, 13 October 2006 03:29 |
Igor Sukhih wrote on Fri, 13 October 2006 03:06 | О каких ошибках идет речь, все ошибки должны преверятся на этапе парсинга параметров (или имеются в виду конфликты)
Если ВЕ не ранится для Вас уже не важно что в конфиг попадут "некоректные" параметры?
|
Собственно в оригинальном варианте у вас есть 3 точки в которых может быть вызван vzerror.
Quote: |
# grep vzerror vps-functions
vzerror "Missing parameter: $VAR" $VZ_INVALID_PARAMETER_SYNTAX
vzerror "Unable to get source ip [${device}]" $VZ_CANT_ADDIP
vzerror "Unable to add route ${IP_CMD} route add $1 dev venet0 src ${src_addr}" $VZ_CANT_ADDI
|
кроме того это функции vzcheckvar, которые присутствуют внутри каждого из shell сприптов. Да и мало ли по какое еще причине надо выйти из shell скрипта с указазанием ошибки. Я не прав?
|
Из ошибки в шел скрипте не всегда следует что этот параметр неверный и его не следует сохранять,
как вы правильно заметили его (скрипт) могут вообше прибить, и мы получаем, чтобы сохранит параметры нужно
стопать ВЕ.
На данный момент ip адрес является единственным параметром который откатывается при ошибе.
Quote: |
Кроме того любое нарушение формата логичнее проверять в той точке где оно обрабатывается. Или я не прав?
|
Да прав, потому они обрабатываются на входе т.е. командная строка/конфиг.
Quote: |
А обрабатываются настройки шейпера у меня в шел скриптах - поэтому я добавил проверок при создании объектов шейпера, На что собственно и накололся сегодня утром - когда для теста скормил строку с неправильным форматом. Результатом был вывод error`а на экран и испорченый конфиг.
|
Я понял Вашу пробл., но это не тот фикс который нужен.
[Updated on: Fri, 13 October 2006 10:17] by Moderator Report message to a moderator
|
|
|
|
Re: баг в vzctl ? [message #7420 is a reply to message #7415] |
Fri, 13 October 2006 08:37 |
Igor Sukhih
Messages: 21 Registered: May 2006
|
Junior Member |
|
|
Umka wrote on Fri, 13 October 2006 04:17 |
Igor Sukhih wrote on Fri, 13 October 2006 03:50 | Я понял Вашу пробл., но это не тот фикс который нужен.
|
Вы можете более развернуто ответить в чем притензии к этому патчу?
Данный патч запрещает сохранение конфига - если команда относящаяся к VPS была выполнена с ошибкой. Это может быть ошибка формата, ошибка выполнения и тп.. Любая из этих ошибок нарушит однозначное соотвествие между текуще работающим VE и его конфигом (в который будет записано изменение).. К чему плодить рассинхронизацию?
|
Можно получить ответ на вопрос
Если ВЕ не ранится для Вас уже не важно что в конфиг попадут "некоректные" параметры?
Все параметры проверяются на входе и они все корректны по пределению, возможны только конфликты.
[Updated on: Fri, 13 October 2006 10:11] by Moderator Report message to a moderator
|
|
|
|
Re: баг в vzctl ? [message #7422 is a reply to message #7401] |
Fri, 13 October 2006 08:52 |
kn1ght
Messages: 17 Registered: May 2006 Location: Piter
|
Junior Member |
|
|
а потом оно при рестарте VPS он не загрузится..
ИМХО логичнее не давать записывать корявые данные в конфиг, чем потом его при чтении не выполнять..
p.s. а давйте сделаем голосование за патчи? а то вот пользователям патч нужен, а разработчикам нет...
[Updated on: Fri, 13 October 2006 08:56] Report message to a moderator
|
|
|
|
|
Re: баг в vzctl ? [message #7431 is a reply to message #7401] |
Fri, 13 October 2006 10:23 |
|
Попробую пояснить развёрнуто.
Текущее поведение vzctl такое:
Когда VE в состоянии running, команда vzctl set .... --save пытается приложить параметры, а потом записывает их в конфиг.
Когда VE в состоянии stopped, команда vzctl set .... --save записывает параметры в конфиг.
Таким образом, работа с конфиг-файлом не зависит от состояния VE (running/stopped).
После приложения вашего патча поведение vzctl кардинально меняется. Теперь некоторые параметры могут попасть или не попасть в конфиг в зависимости от состояния VE (running/stopped). Это нежелательно, так как вносит в систему элемент неопределённости.
В случае, если вам нужна функциональность "записать параметры в конфиг, если они прикладываются успешно", сделайте так (проверив предварительно, что VE запущена):
vzctl set $VEID $PARAMS && vzctl set $VEID $PARAMS --save
Kir Kolyshkin
|
|
|
|
|
Re: баг в vzctl ? [message #7438 is a reply to message #7436] |
Fri, 13 October 2006 11:36 |
|
Я ещё раз всё перечитал. Ваш патч (в первом посте этого треда) изменяет функциональность vzctl так, что он не вносит изменения в конфиг, если они не приложились. Поправьте меня, если я это не так понял.
Такое изменение нежелательно по причинам, изложенным мной выше.
Да, проблема существует, но её нельзя однозначно решить таким патчем. Необходимо, видимо, разнести функции валидации параметров и функции приложения параметров, и изменить логику на следующую:
1. проверить параметры, при ошибке -- вываливаться
2. попытаться приложить параметры
3. (как и сейчас) безусловно записать параметры в конфиг.
Kir Kolyshkin
|
|
|
Re: баг в vzctl ? [message #7439 is a reply to message #7438] |
Fri, 13 October 2006 11:51 |
Umka
Messages: 56 Registered: September 2006
|
Member |
|
|
kir wrote on Fri, 13 October 2006 07:36 | Я ещё раз всё перечитал. Ваш патч (в первом посте этого треда) изменяет функциональность vzctl так, что он не вносит изменения в конфиг, если они не приложились. Поправьте меня, если я это не так понял.
|
Почти. Только сформулировать иначе. Если функция применения параметров вернула ошибку - указав основному коду, что в текущей ситуаци параметры команды не валидны.
Quote: |
Такое изменение нежелательно по причинам, изложенным мной выше.
Да, проблема существует, но её нельзя однозначно решить таким патчем. Необходимо, видимо, разнести функции валидации параметров и функции приложения параметров, и изменить логику на следующую:
1. проверить параметры, при ошибке -- вываливаться
2. попытаться приложить параметры
3. (как и сейчас) безусловно записать параметры в конфиг.
|
4. заставить функции изменения параметров к VE разбираться - что есть фатальная ошибка (которая может повлиять на последующее поведение - в частности старт), а что не фатальная, которую можно игнорировать.
Реализовав такой алгоритм мы убираем "знание" о поведение отдельно взятой команды внутрь обработчики выполняющего эту команду. От него потребуется только одно - вернуть 0 если данные коректны и допустимы, или вернуть код ошибки которая идентифицирует проблему. Возможно это потребует правки в логике обработчиков - но IMHO это самый "дешевый" способ получить нужную функциональность.
|
|
|
Goto Forum:
Current Time: Thu Oct 17 15:10:09 GMT 2024
Total time taken to generate the page: 0.05519 seconds
|