Opened 7 years ago

Closed 7 years ago

Last modified 7 years ago

#541 closed баг (fixed)

В режиме Автоматическое подключение дублируется вызов Диспетчера

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

Description

у Диспетчера установлен режим подключения в основную конф = Автоматически

  1. В пустую(несозданную) основную конференцию вызываем "одновременно" 3х абонентов (допустим делаем в программе даблклик по группе АГНКС).
  2. Вместе с абонентами добавляются три экземпляра Диспетчера, хотя должен один

r762

Change History (5)

comment:1 by alx, 7 years ago

Хм... Формально, пульт строго выполняет требования #241:

  1. Получаем сообщение о том, что в конференцию вошел новый участник.
  2. Проверяем, не находится ли наш диспетчер в какой-либо конференции - его там нет.
  3. Выполняем вызов диспетчера в конференцию.
  4. Получаем еще одно сообщение о входе нового участника.
  5. Проверяем, не находится ли наш диспетчер в какой-либо конференции - а его там все еще нет, так как на подключение требуется некоторое время!
  6. Снова выполняем вызов диспетчера в конференцию.

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

Вопрос в том, как отслеживать этот самый процесс вызова... С началом этого процесса все просто. А вот что считать его окончанием?

comment:2 by san, 7 years ago

что считать его окончанием?

таймаут?

in reply to:  2 comment:3 by alx, 7 years ago

Replying to san:

что считать его окончанием?

таймаут?

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

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

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

comment:4 by alx, 7 years ago

Resolution: fixed
Status: newclosed

In 787/dispatcher:

Добавлен таймер ожидания подключения нашего диспетчера к основной конференции.
Таймер запускается при отправке команды originate и останавливается при получении
события add-member, говорящего о подключении нашего диспетчера к основной конференции.

При работе в режиме подключения "Автоматически" и подключении к основной конференции
непривилегированного пользователя дополнительно проверяется активность таймера.
Если таймер активен, попытки подключить диспетчера к основной конференции не делается.
Closes #541.

comment:5 by alx, 7 years ago

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

Last edited 7 years ago by alx (previous) (diff)
Note: See TracTickets for help on using tickets.