Opened 8 years ago

Closed 8 years ago

#369 closed баг (fixed)

При потере соединения SSH не работает "Информация о пользователе"

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

Description (last modified by alx)

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

Проверялось в r379.

Сценарий проверки:

  1. Запускаем программу.
  2. Входим в сеть.
  3. Убиваем процесс sshd, обслуживающий установленное программой соединение.
  4. В программе наводим курсор мыши на пользователя, нажимаем "Дополнительные возможности".
  5. В появившемся контекстном меню выбираем "Информация о пользователе".

Change History (19)

comment:1 by san, 8 years ago

Milestone: Текущее1 очередь

comment:2 by dimag, 8 years ago

Keywords: SSH interface added
Resolution: fixed
Status: newclosed

r391
Неверно обрабатывались ошибки загрузки и разбора загруженного XML-файла, сохранения загруженного XML-файла.

comment:3 by alx, 8 years ago

Resolution: fixed
Status: closedreopened

В r391 баг по-прежнему присутствует. Более того, стало хуже: если при отсутствии соединения SSH запросить информацию о пользователе, окно программы просто перестает работать (ничего не перерисовывается). Блокируется GUI поток?

comment:4 by dimag, 8 years ago

Да, я обращаюсь к SSH в главном потоке программы.
Но под Windows все работает нормально.

in reply to:  4 comment:5 by alx, 8 years ago

Replying to dimag:

Да, я обращаюсь к SSH в главном потоке программы.

Не стали реализовывать #183 - и вот закономерный результат...

Но под Windows все работает нормально.

В каком-то частный случае. А в общем - не обязано. Вот Вы пишете "обращаюсь". Что это значит? Насколько я понимаю, программа отправляет в сеть некий запрос и ожидает какой-то ответ. Так? А что быдет, если этот ответ по каким-то причинам не придет? Ожидание затянется на довольно длительный период, и в течение этого времени интерфейс программы будет "мертвый"...

Вывод - надо задумывать правильно (это я опять к тикету #183). :)

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

comment:6 by dimag, 8 years ago

Resolution: fixed
Status: reopenedclosed

r397
Установил врямя ожидания ответа от SSH сервера равного 1 секунде, то есть теперь главный потом зависнет не более чем на 1 секунду. Пользователь может подождать 1 секунду.

comment:7 by alx, 8 years ago

Resolution: fixed
Status: closedreopened

В r397 воспроизвел проблему. Интерфейс "заморозился" совсем не на 1 секунду, а навсегда (пока не убил процесс). Таким образом, заявленная проблема не устранена.

comment:8 by dimag, 8 years ago

Опишите что вы делаете что генерации ошибочной ситуации.

comment:9 by alx, 8 years ago

Description: modified (diff)

В описание тикета добавил сценарий, воспроизводящий баг.

comment:10 by dimag, 8 years ago

Resolution: fixed
Status: reopenedclosed

r407
Вынес работу по протоколу SSH в отдельный поток

comment:11 by alx, 8 years ago

Resolution: fixed
Status: closedreopened

В r407 проблема не устранена. Информация о пользователе после разрыва соединения SSH как не работала, так и не работает. При выборе пункта "Информация о пользователе" ничего не происходит.

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

comment:12 by dimag, 8 years ago

Я тестировал в r407 под Windows и Kubuntu и у меня соединение по SSH успешно восстанавливалось после принудительного отключения SSH-соединения.
Можете написать лог программы начиная с момента нажатия на кнопку "Получение информации о пользователе".

in reply to:  12 comment:13 by alx, 8 years ago

Replying to dimag:

Я тестировал в r407 под Windows и Kubuntu и у меня соединение по SSH успешно восстанавливалось после принудительного отключения SSH-соединения.

Соединение не восстановилось (уже наверное пол-часа как порвано).

Можете написать лог программы начиная с момента нажатия на кнопку "Получение информации о пользователе".

Никакого вывода в консоль, debug.log и main.log при нажатии "Информация о пользователе" нет.

comment:14 by dimag, 8 years ago

В r496 я полностью изменил работу с SSH. Как все работает в FreeBSD у вас, Алексей?

in reply to:  14 comment:15 by alx, 8 years ago

Replying to dimag:

В r496 я полностью изменил работу с SSH. Как все работает в FreeBSD у вас, Алексей?

Проверю как будет время. А что, есть основания предполагать, что в FreeBSD будет не так, как в других ОС?

comment:16 by alx, 8 years ago

Проверил. В FreeBSD работает так же плохо, как и в других ОС. А именно, если соединение разрывается со стороны сервера, информацию о пользователе программа больше не показывает. Вместо этого программа показывает сообщение "Нет связи с SSH сервером" (что не соответствует действительности - связь с сервером есть). В консоль при этом выдается вот что:

[2016/10/24 10:18:32.171090, 2] ssh_connect:  libssh 0.7.3 (c) 2003-2014 Aris Adamantiadis, Andreas Schneider, and libssh contributors. Distributed under the LGPL, please refer to COPYING file for information about your rights, using threading threads_noop
[2016/10/24 10:18:32.171171, 2] ssh_socket_connect:  Nonblocking connection socket: 25
[2016/10/24 10:18:32.171181, 2] ssh_connect:  Socket connecting, now waiting for the callbacks to work
[2016/10/24 10:18:32.171398, 1] socket_callback_connected:  Socket connection callback: 1 (0)
[2016/10/24 10:18:32.178451, 1] ssh_client_connection_callback:  SSH server banner: SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
[2016/10/24 10:18:32.178474, 1] ssh_analyze_banner:  Analyzing banner: SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
[2016/10/24 10:18:32.178483, 1] ssh_analyze_banner:  We are talking to an OpenSSH client version: 7.2 (70200)
[2016/10/24 10:18:32.228063, 2] ssh_packet_dh_reply:  Received SSH_KEXDH_REPLY
[2016/10/24 10:18:32.233126, 2] ssh_client_curve25519_reply:  SSH_MSG_NEWKEYS sent
[2016/10/24 10:18:32.233137, 2] ssh_packet_newkeys:  Received SSH_MSG_NEWKEYS
[2016/10/24 10:18:32.233432, 2] ssh_packet_newkeys:  Signature verified and valid
Error %s
Last edited 8 years ago by alx (previous) (diff)

comment:17 by alx, 8 years ago

Александр, я только что вспомнил одну вещь. Когда-то говорилось, что заказчик против вывода сообщений об ошибках в виде всплывающих окон. Смотри, например, #239. А сообщение об отсутствии связи с SSH сервером почему-то выдается именно во всплывающем окне. Нормально ли это? Может надо создать по этому поводу новый тикет?

comment:18 by san, 8 years ago

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

comment:19 by dimag, 8 years ago

Resolution: fixed
Status: reopenedclosed

Проверял в r501 под Windows и Ubuntu, закрывал процессы sshd на сервере созданные после первого подключения к серверу со стороны программы, всё работало нормально

Note: See TracTickets for help on using tickets.