Opened 5 years ago

Closed 4 years ago

#359 closed улучшение (не будем делать)

Открытие окна платы до завершения передачи конфигурации

Reported by: san Owned by: alx
Priority: низкий Milestone: 1 очередь
Component: sw Keywords:
Cc:

Description (last modified by san)

После того как плата была обнаружена и добавлена в список плат, в нее записывается конфигурация. На запись конфигурации требуется какое-то время. Если открыть окно платы до окончания записи конфигурации, то те настройки которые ещё не записались в плату не будут отображены в окне.
Такое поведение может ввести пользователя в заблуждение.

Предлагается каждой плате добавить признак (флаг), который должен устанавливаться, когда вся конфигурация успешно передана плате.
И при попытке пользователя открыт окно платы, передача конфигурации которой не завершена, окно платы не открывать, а вместо этого выдавать сообщение: "Конфигурация платы не завершена, попробуйте позже".

Для демонстрации описанного эффекта можно провести такой эксперимент

  1. Перезапускаем плату VE-01
  2. После того как плата появилась в списке сразу открываем её окно
  3. В окне VE-01 на вкладке Sip-окончания, отображаются не все окончания

Скриншот открытия окна, когда конфигурация ещё не завершена, скролбар в нижней позиции.

Скриншот открытия окна законфигурированной платы, скролбар в нижней позиции.

конфиг прилагается.
VE-01 ревизии 44
SW-01 r1732

Attachments (3)

config.xml (48.1 KB ) - added by san 5 years ago.
1.png (70.2 KB ) - added by san 5 years ago.
2.png (86.1 KB ) - added by san 5 years ago.

Download all attachments as: .zip

Change History (11)

by san, 5 years ago

Attachment: config.xml added

by san, 5 years ago

Attachment: 1.png added

by san, 5 years ago

Attachment: 2.png added

comment:1 by san, 5 years ago

На скриншотах веб-интерфейс "IP-АТС", в варианте "Мультиплексор" баг проявляется аналогично.

comment:2 by alx, 5 years ago

Это не баг. Когда кликаешь плату в списке плат, и открывается диалог ее конфигурации, отображаемая там конфигурация читается непосредственно из целевой платы, а не из конфига, хранимого в SW-01. Поэтому диалог отображает конфигурацию платы на момент его открытия (если не учитывать время самого чтения).

После того как плата была обнаружена и добавлена в список плат, в нее записывается конфигурация. На запись конфигурации требуется какое-то время. Если в конфиг-файле есть конфигурация некоего канального окончания (допустим, канал 100), но веб-интерфейс запросил у платы его до того как SW-01 записала эту конфигурацию в плату VE-01, веб-интерфейс получит от платы ответ, что это канальное окончание не создано. Соответственно, его не будет в веб-интерфейсе. С учетом написанного мной выше это правильно - в веб-интерфейсе отображается конфигурация платы на момент его открытия, и в этот момент в плате действительно отсутствовало канальное окончание с номером 100.

Это не является особенностью платы VE-01, так работает чтение конфигурации всех плат. Например, если открыть диалог платы GE-04 до того как в нее успеет записаться список VLAN'ов, этот список в открывшемся диалоге будет пустым или неполным.

Хотел закрыть тикет как invalid, но вдруг подумал, что, возможно, я неправильно догадался, что именно в описанном поведении было расценено как баг. Хороший баг-рипорт состоит не только из описания "что делали" и "что получили", но и "что ожидали получить" вместо этого. Саша, если я неверно понял, в чем по-твоему состоит баг, уточни, пожалуйста. Если я понял верно - закрой тикет сам.

comment:3 by san, 5 years ago

Хм.. Ну понял ты кажется правильно, при проведении этого теста не правильным с моей точки зрения было то что были отображены не все окончания настроенные в плате VE.

С точки зрения пользователя такое поведение всё-равно будет казаться багом, как бы мы его не назвали :) При открытии окна платы он получает не полную информацию, что может ввести его в заблуждение.

Я считаю что нужно каким-то образом избежать отображения неполной информации, например если в плату загружена не вся конфигурация не давать пользователю открыть окно или затянуть открытие до момента передачи всего конфига.

comment:4 by alx, 5 years ago

Type: багулучшение

Иными словами, ты предлагаешь каждой плате добавить признак (флаг), который должен устанавливаться, когда вся конфигурация успешно передана плате. Думаю, это сделать можно, и это не должно быть трудно. Такой признак должен передаваться в списке плат, чтобы веб-интерфейс мог знать, закончена уже конфигурация, или еще нет. Можно даже платы, передача конфигурации которым еще не завершена, каким-то образом помечать в списке (например серым цветом)... Верно я понял твое предложение? Если да, можешь изменить описание тикета, чтобы не создавать новый.

Отдельный вопрос - что делать, если плата "не готова". Задерживать открытие окна мне интуитивно не нравится, но я не могу сформулировать, почему. Вариант "не давать" (с выдачей сообщения типа "конфигурация платы не завершена, попробуйте позже") мне нравится больше. Еще вариант - оставить как есть сейчас, чтобы осталась возможность считать "не до конца обновленную" конфигурацию, но в окне конфигурации добавить предупреждающую надпись о том, что конфигурация была в процессе обновления, и отображаемые данные могут быть неактуальными...

comment:5 by san, 5 years ago

Description: modified (diff)

Вариант "не давать" (с выдачей сообщения типа "конфигурация платы не завершена, попробуйте позже")

Мне этот вариант кажется наиболее уместным, т.к. пользователь ведь всё-равно не знает какая часть конфигурации не дошла и чему тут можно верить, поэтому и не вижу смысла показывать ему лишь кусок конфига.

comment:6 by san, 5 years ago

Summary: Окно платы VE-01: отображаются не все окончанияОткрытие окна платы до завершения передачи конфигурации

comment:7 by alx, 5 years ago

Рассмотрим другую ситуацию. Допустим, в конфиг-файле блока имеется конфиг платы VE-01 с одним канальным окончанием. После включения блока конфигурация была передана в плату VE-01.

Далее оператор через веб-интерфейс создает еще 20 канальных окончаний и нажимает кнопку "Применить". Новая конфигурация начинает передаваться в плату VE-01. В этот момент другой оператор открывает конфигурацию платы VE-01 и видит только 10 канальных окончаний, которые успели записаться в плату на момент запроса. То есть получаем тот же эффект - частичная (неполная) конфигурация!

Этот пример я привел как иллюстрацию того, что проблема носит более общий характер. Недостаточно просто дождаться завершения первой записи конфигурации в плату. Атомарность чтения конфигурации у нас не обеспечивается by design, такое решение было нами принято изначально еще при разработке протокола. Если мы хотим пересмотреть это решение, то придется каким-то образом расширять существующий протокол, вводя в него функцию locking'а. А без этого описанная проблема полностью не решится...

Поэтому я предлагаю оставить как есть ©.

comment:8 by alx, 4 years ago

Resolution: не будем делать
Status: newclosed
Note: See TracTickets for help on using tickets.