AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.10.2021, 15:31   #1  
Perc is offline
Perc
Участник
 
170 / 32 (2) +++
Регистрация: 05.03.2005
Как найти вызов ttsBegin
Пользователь работает и где-то код криво отрабатывает и возникает незакрытая транзакция. У пользователя разнесся журнал ГК. Потом он видит что все глючит, кнопки не работают. Перезаходит - журнала нет.

Работает с журналом ГК, сопоставления ручные, отчеты попутно смотрит. Возникает 1-2 раза в день и не каждый день. От нее добиться последовательность глюка не могу. Сидеть с ней тоже. Вижу уже итог.
Хотел настроить логирование для нее, чтобы поймать момент ttabegin, ttscommit.
Добавил код в Apllication \ ttsNotifyAbort, ttsNotifyCommit,ttsNotifyPostBegin. И с помощью xSession::xppCallStack() хочу стэк вызовов последнего не закрытого ttsBegin найти. Но там только:
X++:
(S)\Classes\Test\logAdd 18
(S)\Classes\Application\ttsNotifyPostBegin 6
Т.е. откуда это пришло вообще не понять..
Просто смотреть код вокруг объектов которые пользователь якобы использовал в последние минуты - на вскидку не помогло..

Есть у кого-то опыт поиска источника подобных проблем?

Дакс4.
Старый 07.10.2021, 15:46   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,356 / 1677 (62) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Perc Посмотреть сообщение
Но там только:
X++:
(S)\Classes\Test\logAdd 18
(S)\Classes\Application\ttsNotifyPostBegin 6
Т.е. откуда это пришло вообще не понять.
Поймать стек вызова у долгой транзакции.
Попробуйте в параметрах AOS включить точки останова на уровне сервера
Старый 11.10.2021, 05:08   #4  
Perc is offline
Perc
Участник
 
170 / 32 (2) +++
Регистрация: 05.03.2005
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Поймать стек вызова у долгой транзакции.
Попробуйте в параметрах AOS включить точки останова на уровне сервера
Да, посмотрел тему. У людей такая же проблема со стеком вызовов. При вызове tts с клиента - источник не отслеживается..
Кстати заметил разницу при вызове xSession::xppCallStack() на клиенте и на сервере. При вызове с клиента иногда более информативно получается, но в моей проблеме не помогло.

Точки останова само собой включены.

Попробую еще модальным окном остановить работу пользователя. Чтобы он позвонил и сказал что он нажимал в последний раз..

А нет, так подумываю уже о временной возможности тотальной замены всех ttsbegin на вызов ttsbegin с серверной процедуры)
Старый 11.10.2021, 05:18   #5  
Perc is offline
Perc
Участник
 
170 / 32 (2) +++
Регистрация: 05.03.2005
Цитата:
От отсутствия вариантов попробовал и представленный анализатор. Предупреждений он навалил достаточно конечно. Но там все не существенно.

Ошибок - 95% не справился с методами в которых есть синтаксис clr.(обработка под 3-ку делалась) А остальные десяток мест из кого-то заброшенного функционала который уже нигде и никем у нас не используется. Выявился один рабочий отчет с return между tts. Но по факту оказалось, что тоже не рабочее место..
Старый 11.10.2021, 07:03   #6  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,552 / 2498 (91) +++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
В аксапте была табличка лога sysutilelementslog или как то так.
Там логировалис используемые юзером формы и очеты.
Несложной доработкой можно обобщить до классов.
Тем самым еще сузить область поисков.
Старый 11.10.2021, 08:21   #7  
Perc is offline
Perc
Участник
 
170 / 32 (2) +++
Регистрация: 05.03.2005
Цитата:
Сообщение от Logger Посмотреть сообщение
В аксапте была табличка лога sysutilelementslog или как то так.
Там логировалис используемые юзером формы и очеты.
Несложной доработкой можно обобщить до классов.
Тем самым еще сузить область поисков.
В четверке нет такого логирования. Ну да ладно.. посмотрим в версии выше..

Несложной это какой? за созданием форм слежение из \xClassFactory\formRunClass сделано. Как бэ системой поддерживается..
А класс на что зацепится?
Старый 11.10.2021, 09:46   #8  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,552 / 2498 (91) +++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Perc Посмотреть сообщение
А класс на что зацепится?
Я в 4-ку перетаскивал из 2009-й
Еще добавил тут
\Classes\RunBase\new
\Classes\ClassFactory\createClass

помогает для Runbase а также для всего что по менюитем запускается. Конечно это не все классы охватывает но очень многое.
Также можно вот это применить
это одна из идей, которую я хочу пропихнуть в АХ 2012.

Ошибка с транзакциями!
Теги
стек вызовов, транзакции

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ttsbegin и зацикливание While select Perc DAX: Программирование 4 21.11.2014 08:55
Win2008 и вызов методов COM-объектов AndyD DAX: Программирование 13 06.02.2012 15:22
Падает стандартный импорт с ошибкой "Вызов ttscommit без вызова ttsbegin" skof DAX: Администрирование 6 19.01.2012 17:12
dynamics-ax-dev: CLR Errors & ttsbegin/ttscommit Blocks Blog bot DAX Blogs 0 02.11.2010 18:05
ttsbegin ttscommit and changecompany() Volodymyr DAX: Программирование 9 29.08.2008 15:36
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:42.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.