Opened 7 years ago

Closed 7 years ago

#561 closed баг (fixed)

Пользователь не покидает основную конференцию в режим автоматически.

Reported by: viktam Owned by: alx
Priority: major Milestone: 1 очередь
Component: ПО MC04-Dispatcher. Пульт диспетчера/техника Keywords:
Cc: san

Description

Иногда случается так что пользователь программы не покидает основную конференцию, когда из неё выходят все непривилегированные пользователи.
Мой пользователь 2@ - Техник (режим автоматически)
Диспетчер - 1@ (режим постоянное)

Удалось поймать один из таких случаев в r810: на скриншоте ниже зафиксировано состояние основной конференции - в ней находятся 2 привилегированных пользователя. Время зафиксировано там же: 15:24 (2 мая).
Несколько ранее (точнее сказать нельзя) основную конференцию покинул непривилегированный пользователь, но пользователь 2@ не покинул основную конференцию после его ухода. Лог с места 2@ прилагается.

Attachments (7)

img.png (88.2 KB ) - added by san 7 years ago.
debug2017-05-02_crop.zip (74.4 KB ) - added by san 7 years ago.
2708.xml (417 bytes ) - added by viktam 7 years ago.
конфигурационный файл FreeSwitch?, в котором сконфигурирован пользователь 2708@192.168.0.108.
MC04Dispatcher.xml (1.9 KB ) - added by viktam 7 years ago.
конфигурационный файл пульта диспетчерской связи (Техник)
1.xml (395 bytes ) - added by viktam 7 years ago.
конфигурационный файл пользователя 1
2.xml (500 bytes ) - added by viktam 7 years ago.
конфигурационный файл пользователя 2
debug2017-05-03_crop.zip (87.6 KB ) - added by san 7 years ago.

Download all attachments as: .zip

Change History (24)

by san, 7 years ago

Attachment: img.png added

by san, 7 years ago

Attachment: debug2017-05-02_crop.zip added

comment:1 by san, 7 years ago

Уточнение: последним покинувшим осн.конф. был 2708@ (ГРС Рюмино)

Last edited 7 years ago by san (previous) (diff)

in reply to:  1 comment:2 by san, 7 years ago

Replying to san:

Уточнение: последним покинувшим осн.конф. был 2708@ (ГРС Рюмино)

посмотрел на картинку.... и что то тут не совпадает, у ГРС Рюмино другой uri :-D
(в списке пользователя в конце имени каждого пользователя Витя вписал его uri до @)

Last edited 7 years ago by san (previous) (diff)

comment:3 by alx, 7 years ago

Согласно логу, выход пользователя 2708 из конференции "0" произошел в 15:23:46.749.

После получения сообщения о выходе пользователя из конференции выполнилась функция userLeftConference(), выполняющая необходимые проверки и, при их успешности, производящая отключение диспетчера от конференции.

В случае, удовлетворяющем условию пункта 2 тикета #401, в лог должно вывестись сообщение "only dispatchers left in primary conference". Такого сообщения в логе нет. Следовательно, по мнению пульта, одно или несколько условий автоматического отключения не было выполнено. Для срабатывания автоматического выхода необходимо одновременное выполнение четырех условий:

  • диспетчер находится в режиме подключения "Автоматически";
  • пользователь покинул основную конференцию;
  • диспетчер присутствует в основной конференции;
  • ранее в основной конференции был хотя бы один непривилегированный пользователь (то есть техник, не имеющий ролей "Диспетчер" и "Техник").

К сожалению, на основании имеющейся в лог-файле информации можно подтвердить только выполнение первого условия - диспетчер действительно работает в режиме подключения "Автоматически" (и то лишь с допущением, что во время сеанса работы, зафиксированного лог-файлом, диспетчер не менял режим подключения). Поэтому для дальнейшего исследования проблемы требуется дополнительная информация. Я прошу приложить к этому тикету конфигурационный файл пульта диспетчерской связи, а также конфигурационный файл FreeSwitch, в котором сконфигурирован пользователь 2708@192.168.0.108.

Version 0, edited 7 years ago by alx (next)

comment:4 by alx, 7 years ago

Исправил свой предыдущий комментарий для более точного описания процесса проверки условий автоматического выхода.

by viktam, 7 years ago

Attachment: 2708.xml added

конфигурационный файл FreeSwitch?, в котором сконфигурирован пользователь 2708@192.168.0.108.

comment:5 by viktam, 7 years ago

Постараюсь организовать завтра удаленный доступ к ПК Техника. Просьба уточнить наименование конфигурационного файла пульта диспетчерской связи, в ревизии 810.

comment:6 by alx, 7 years ago

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

in reply to:  5 comment:7 by alx, 7 years ago

Replying to viktam:

Просьба уточнить наименование конфигурационного файла пульта диспетчерской связи, в ревизии 810.

Конфиг-файл называется MC04Dispatcher.xml. Каталог, в котором он находится, зависит от ОС. Для ubuntu и пдодобным ей - ~/.config, для Windows - C:/Users/<USER>/AppData/Local/<APPNAME>.

Last edited 7 years ago by alx (previous) (diff)

comment:8 by alx, 7 years ago

In 826/dispatcher:

Сделан более подробный отладочный вывод в функции userLeftConference().
See #561.

by viktam, 7 years ago

Attachment: MC04Dispatcher.xml added

конфигурационный файл пульта диспетчерской связи (Техник)

comment:9 by alx, 7 years ago

Спасибо. Конфиг-файл подтверждает, что конференция "0" - основная. Таким образом, первые три условия из comment:3 должны выполняться. Осталось неподтвержденным четвертое условие. Чтобы подтвердить, что на момент выхода из конференции пользователя 2708 в конференции остались только привилегированные участники, покажите, пожалуйста, файлы конфигурации пользователей 1 и 2.

by viktam, 7 years ago

Attachment: 1.xml added

конфигурационный файл пользователя 1

by viktam, 7 years ago

Attachment: 2.xml added

конфигурационный файл пользователя 2

comment:10 by alx, 7 years ago

In 828/dispatcher:

Предполагая наличие бага, связанного с проверками условий функции автоматического выхода
диспетчера из конференции, в функции ConferenceListModel::isUserInConference() и
ConferenceListModel::hasNonPrivilegedParticipants() добавлен подробный отладочный вывод,
который, как я надеюсь, поможет локализовать осточник проблемы. See #561.

comment:11 by alx, 7 years ago

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

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

by san, 7 years ago

Attachment: debug2017-05-03_crop.zip added

comment:12 by san, 7 years ago

viktam:

Повторилось c r828
заметил после окончания конференции с ГРС Межево 2705
в 11-25 техник не вышел из конференции
непродолжительное время оставался с диспетчером вдвоем (сек 10), потом диспетчер вызвал другого пользователя
в 11-30 диспетчер провел последнюю конференцию, техник остался висеть с ним вдвоем
в 11-33 вручную отбил техника

comment:13 by alx, 7 years ago

Согласно данным лога, отключения не произошло из-за того что, по мнению пульта, в конференции "0" присутствовал непривилегированный пользователь и, таким образом, не выполнялось четвертое из перечисленных в comment:3 условий.

comment:14 by alx, 7 years ago

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

comment:15 by alx, 7 years ago

In 830/dispatcher:

Исправлена ошибка: если на момент старта пульта в конференции уже присутствовал
привилегированный пользователь, ему не устанавливался признак привилегированности,
что нарушало последующую работу функции автоматического отключения. See #561.

comment:16 by alx, 7 years ago

В r830 исправлена ошибка, описанная в comment:14, но нет уверенности, что это был именно баг, описанный в этом тикете. Прошу проверить и сообщить, продолжает ли описанный баг воспроизводиться в пульте ревизии r830 (или выше).

comment:17 by alx, 7 years ago

Resolution: fixed
Status: newclosed

Судя по отсутствию комментариев, описанный в тикете баг больше не возникает. Закрываю тикет.

Note: See TracTickets for help on using tickets.