Opened 6 years ago
Closed 5 years ago
#359 closed улучшение (не будем делать)
Открытие окна платы до завершения передачи конфигурации
Reported by: | san | Owned by: | alx |
---|---|---|---|
Priority: | низкий | Milestone: | 1 очередь |
Component: | sw | Keywords: | |
Cc: |
Description (last modified by )
После того как плата была обнаружена и добавлена в список плат, в нее записывается конфигурация. На запись конфигурации требуется какое-то время. Если открыть окно платы до окончания записи конфигурации, то те настройки которые ещё не записались в плату не будут отображены в окне.
Такое поведение может ввести пользователя в заблуждение.
Предлагается каждой плате добавить признак (флаг), который должен устанавливаться, когда вся конфигурация успешно передана плате.
И при попытке пользователя открыт окно платы, передача конфигурации которой не завершена, окно платы не открывать, а вместо этого выдавать сообщение: "Конфигурация платы не завершена, попробуйте позже".
Для демонстрации описанного эффекта можно провести такой эксперимент
- Перезапускаем плату VE-01
- После того как плата появилась в списке сразу открываем её окно
- В окне VE-01 на вкладке Sip-окончания, отображаются не все окончания
Скриншот открытия окна, когда конфигурация ещё не завершена, скролбар в нижней позиции.
Скриншот открытия окна законфигурированной платы, скролбар в нижней позиции.
конфиг прилагается.
VE-01 ревизии 44
SW-01 r1732
Attachments (3)
Change History (11)
by , 6 years ago
Attachment: | config.xml added |
---|
by , 6 years ago
by , 6 years ago
comment:1 by , 6 years ago
comment:2 by , 6 years ago
Это не баг. Когда кликаешь плату в списке плат, и открывается диалог ее конфигурации, отображаемая там конфигурация читается непосредственно из целевой платы, а не из конфига, хранимого в SW-01. Поэтому диалог отображает конфигурацию платы на момент его открытия (если не учитывать время самого чтения).
После того как плата была обнаружена и добавлена в список плат, в нее записывается конфигурация. На запись конфигурации требуется какое-то время. Если в конфиг-файле есть конфигурация некоего канального окончания (допустим, канал 100), но веб-интерфейс запросил у платы его до того как SW-01 записала эту конфигурацию в плату VE-01, веб-интерфейс получит от платы ответ, что это канальное окончание не создано. Соответственно, его не будет в веб-интерфейсе. С учетом написанного мной выше это правильно - в веб-интерфейсе отображается конфигурация платы на момент его открытия, и в этот момент в плате действительно отсутствовало канальное окончание с номером 100.
Это не является особенностью платы VE-01, так работает чтение конфигурации всех плат. Например, если открыть диалог платы GE-04 до того как в нее успеет записаться список VLAN'ов, этот список в открывшемся диалоге будет пустым или неполным.
Хотел закрыть тикет как invalid, но вдруг подумал, что, возможно, я неправильно догадался, что именно в описанном поведении было расценено как баг. Хороший баг-рипорт состоит не только из описания "что делали" и "что получили", но и "что ожидали получить" вместо этого. Саша, если я неверно понял, в чем по-твоему состоит баг, уточни, пожалуйста. Если я понял верно - закрой тикет сам.
comment:3 by , 6 years ago
Хм.. Ну понял ты кажется правильно, при проведении этого теста не правильным с моей точки зрения было то что были отображены не все окончания настроенные в плате VE.
С точки зрения пользователя такое поведение всё-равно будет казаться багом, как бы мы его не назвали :) При открытии окна платы он получает не полную информацию, что может ввести его в заблуждение.
Я считаю что нужно каким-то образом избежать отображения неполной информации, например если в плату загружена не вся конфигурация не давать пользователю открыть окно или затянуть открытие до момента передачи всего конфига.
comment:4 by , 6 years ago
Type: | баг → улучшение |
---|
Иными словами, ты предлагаешь каждой плате добавить признак (флаг), который должен устанавливаться, когда вся конфигурация успешно передана плате. Думаю, это сделать можно, и это не должно быть трудно. Такой признак должен передаваться в списке плат, чтобы веб-интерфейс мог знать, закончена уже конфигурация, или еще нет. Можно даже платы, передача конфигурации которым еще не завершена, каким-то образом помечать в списке (например серым цветом)... Верно я понял твое предложение? Если да, можешь изменить описание тикета, чтобы не создавать новый.
Отдельный вопрос - что делать, если плата "не готова". Задерживать открытие окна мне интуитивно не нравится, но я не могу сформулировать, почему. Вариант "не давать" (с выдачей сообщения типа "конфигурация платы не завершена, попробуйте позже") мне нравится больше. Еще вариант - оставить как есть сейчас, чтобы осталась возможность считать "не до конца обновленную" конфигурацию, но в окне конфигурации добавить предупреждающую надпись о том, что конфигурация была в процессе обновления, и отображаемые данные могут быть неактуальными...
comment:5 by , 6 years ago
Description: | modified (diff) |
---|
Вариант "не давать" (с выдачей сообщения типа "конфигурация платы не завершена, попробуйте позже")
Мне этот вариант кажется наиболее уместным, т.к. пользователь ведь всё-равно не знает какая часть конфигурации не дошла и чему тут можно верить, поэтому и не вижу смысла показывать ему лишь кусок конфига.
comment:6 by , 6 years ago
Summary: | Окно платы VE-01: отображаются не все окончания → Открытие окна платы до завершения передачи конфигурации |
---|
comment:7 by , 6 years ago
Рассмотрим другую ситуацию. Допустим, в конфиг-файле блока имеется конфиг платы VE-01 с одним канальным окончанием. После включения блока конфигурация была передана в плату VE-01.
Далее оператор через веб-интерфейс создает еще 20 канальных окончаний и нажимает кнопку "Применить". Новая конфигурация начинает передаваться в плату VE-01. В этот момент другой оператор открывает конфигурацию платы VE-01 и видит только 10 канальных окончаний, которые успели записаться в плату на момент запроса. То есть получаем тот же эффект - частичная (неполная) конфигурация!
Этот пример я привел как иллюстрацию того, что проблема носит более общий характер. Недостаточно просто дождаться завершения первой записи конфигурации в плату. Атомарность чтения конфигурации у нас не обеспечивается by design, такое решение было нами принято изначально еще при разработке протокола. Если мы хотим пересмотреть это решение, то придется каким-то образом расширять существующий протокол, вводя в него функцию locking'а. А без этого описанная проблема полностью не решится...
Поэтому я предлагаю оставить как есть ©.
comment:8 by , 5 years ago
Resolution: | → не будем делать |
---|---|
Status: | new → closed |
На скриншотах веб-интерфейс "IP-АТС", в варианте "Мультиплексор" баг проявляется аналогично.