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 тикета #410:

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

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

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

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

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.