Стала часто возникать 10-20 секундная задержка при вызове некоторых команд Турбоконф

tormozit Закрыто

2 случая с логами описаны в рамках другой заявки https://turboconf.ru/Tasks/9028

Свежий случай при вызове команды "Процедуры и функции"
Ссылка скрыта

Также замечал такое при вызове команды "Служебные сообщения".

Кажется это начало происходить недавно.

Комментарии

bolsun
#1, 25 февраля 2024 14:02

Я ничего не менял, связанного с этим. Вот предыдущая версия 6.0.8805.32566, проверь будет ли возникать на ней.

https://disk.yandex.ru/d/ay0Wg6IBTsxSxg


tormozit
#2, 25 февраля 2024 20:37

Снова случилось при вызове команды "Процедуры и функции"
Ссылка скрыта


bolsun
#3, 25 февраля 2024 21:24

(2) tormozit, версия новая, нужно проверить на предыдущей 6.0.8805.32566, на которой предположительно проблем не было.


bolsun
#4, 25 февраля 2024 21:32

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


tormozit
#5, 25 февраля 2024 21:55

(4) bolsun, тогда ищи вызов команды "Служебные сообщения"


bolsun
#6, ред. 25 февраля 2024 22:35

Единственная зацепка, которую я пока заметил - это перед каждым подвисанием выполняется Alt+S, и СохранитьМодульВФайл, возможно как-то связано с этим. Возможно были какие-то правки в этих местах, еще раз я ничего такого не менял несколько недель. В последней версии не было никах изменений, которые могли повлиять.
Нужно тестировать на предыдущей версии, если в ней возникнет подвисание, значит - причина не в версии ТК, а внешняя.

P.S. еще в логах после Alt+S заметил нажатие Ctrl+Shif+R. Обрати внимание в следующий раз нажимал ли такие комбинации.


bolsun
#7, 25 февраля 2024 22:38

Еще в одном логе видел закрытие DDE Server Window, но в других вроде не было.
Может как-то связано с обработкой этого окна, но не похоже.


tormozit
#8, ред. 25 февраля 2024 22:56

Добавил предшествующие логи сразу после такого же события из соседней темы
Ссылка скрыта
Ссылка скрыта

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

  1. Сначала сразу появляется рамка окна Турбоконф
  2. Потом оно 10-20 секунд висит пустое
  3. Затем окно наконец рисует внутреннюю часть и начинает принимать команды пользователя


tormozit
#9, ред. 25 февраля 2024 23:12

(6) bolsun, Alt+S я нажимаю только в базе редактора скрипта. Поэтому с этим не может быть связано. Ctrl+Shif+R умышленно я не нажимал во всех случаях (разве что где то один раз случайно нажал).


bolsun
#10, ред. 25 февраля 2024 23:09

(8) tormozit, с самим закрытием может и не связано, а с уведомлением о его закрытии вполне может быть связано.
В двух логах из четырех, зависанию предшествовало закрытие окна DDE.
Затем следовала ошибка

[25.02.24 10:01:23:451] Закрыто окно DDE Server Window
[25.02.24 10:01:23:451] Warning: TurboConf: Закрыто окно DDE Server Window

[25.02.24 10:01:32:264] System.Runtime.InteropServices.COMException (0x80131505): Время ожидания операции истекло. (Исключение из HRESULT: 0x80131505)
в UIAutomationClient.IUIAutomation.GetFocusedElementBuildCache(IUIAutomationCacheRequest cacheRequest)
в TurboConf.Core.TurboAPI.TurboApi.GetUIAutomationCachedInfo(IntPtr fg, IUIAutomationElement elem, UIAutoFlags flags)

Кстати затем долгая вставка.

[25.02.24 10:01:33:502] Paste time overall: 5266ms
[25.02.24 10:01:33:503] Вставка блока 5267мс


bolsun
#11, ред. 25 февраля 2024 23:10

Либо все таки связано именно с закрытием окна, а не с уведомлением.
Это единственная правка в ядре в новой версии.


bolsun
#12, 25 февраля 2024 23:11

Сделаю версию без уведомления, но с закрытием DDE. событие будет писаться в окно служебных сообщений.


bolsun
#13, 25 февраля 2024 23:14

Интересно еще, закрытие DDE возможно фокус перехватывает и помещает из конфигуратора куда-то (может в уведомление, или в клиентское приложение). Тоже один из вариантов


tormozit
#14, ред. 25 февраля 2024 23:23

(12) bolsun, да, это уведомление же нужно было только, чтобы понять что ловушка DDE окна срабатывает. Я уже подтвердил ее срабатывание. С момента ее активации я не видел DDE окна, хотя работал с со скриптом достаточно активно.
Еще заметил, что пока я передавал PID в оба метода Турбоконфа (ЗавершитьВызовВнешнегоОкнаАсинх() и НачатьВызовВнешнегоОкнаАсинх()), я видел окно уведомление. Но затем я в целях эксперимента отключил его передачу в ЗавершитьВызовВнешнегоОкнаАсинх(). Кажется после этого я не видел окна этого уведомления. Но в логе после этого изменения есть как минимум 2 срабатывания ловушки.


bolsun
#15, 25 февраля 2024 23:24

(14) tormozit, pid обязательно нужно передавать.
Есть еще у меня гипотеза, что окно DDE не закрывается сразу, а ТК продолжает его обнаруживать и продолжает слать уведомления о закрытии, чем переполняет очередь уведомлений. Т.к. закрытие происходит в цикле, хоть и с задержкой.
Но это так, запись мыслей для дальнейшего анализа.


bolsun
#16, 25 февраля 2024 23:28

Если pid не передать, метод поиска и закрытия DDE вызван не будет.


tormozit
#17, 25 февраля 2024 23:29

(16) bolsun, ну я этого и хотел. Проверить что достаточно только в первый метод передать. Пока получается что результат - да.


bolsun
#18, 25 февраля 2024 23:31

https://disk.yandex.ru/d/XKCz9ijzgtoO1w
версия без всплывающего уведомления о закрытии DDE


bolsun
#19, 25 февраля 2024 23:35

Версию с уведомлением оставлю пока в релизе, проверим как раз, будут ли такие проблемы у пользователей ИР Адаптера на новой версии.


bolsun
#20, 26 февраля 2024 17:05

(18) bolsun, на этой версии задержка больше не возникает?


tormozit
#21, 26 февраля 2024 22:37

Появился новый подозреваемый в этих задержках. У меня была запущена программа Inspect Object (Microsoft) https://turboconf.ru/Tasks/9222


bolsun
#22, 26 февраля 2024 22:43

(21) tormozit, это вполне объясняет эти задержки, с полным отсутствием в логе информациии на время подвисания на 20 секунд (скорее всего таймаут установленный в Inspect).


tormozit
#23, 26 февраля 2024 22:48

Да. Достаточно вероятно что причина в этом. Поэтому закрываю заявку.
tormozit изменил статус на Закрыто


tormozit
#24, 26 февраля 2024 22:49

Рекомендую проверять наличие этой программы и сообщать о ней в логе при регистрации аномально большой длительности операции.


bolsun
#25, ред. 26 февраля 2024 23:12

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


bolsun
#26, ред. 26 февраля 2024 23:15

Inspect еще может подвесить напрочь платформу и без ТК на легаси системах. Т.к. он запрашивает кэшируемые данные, а платформа при этом зависает из-за бага.


tormozit
#27, 26 февраля 2024 23:14

Тогда просто проверять каждые 5 минут. Думаю это не сильно засорит лог. Тем более что ею редко пользуются.


bolsun
#28, 26 февраля 2024 23:17

(27) tormozit, можно проверять ее наличие при снятии лога наряду с PuntoSwitcher и т.д. Это было бы полезно.


Для вставки изображения или файла, перетащите его в поле редактора или вставьте файл из буфера