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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.04.2019, 23:44   #1  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
256 / 106 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Не обновляется статус BatchJob после завершения
Коллеги, добрый день.

В АХ2009 последние несколько дней наблюдаю странную ситуацию - в пакетных заданиях статус Batch переходит в "Завершено", а статус "BatchJob" зависает на неопределнное время в "Выполнение".

Особенности ситуации:
1. В БД при этом нет блокировок
2. Ситуация касается не отдельных пакетных заданий, а всех
3. Ситуация возникает время от времени - день работает нормально -> зависание -> далее снова какое-то время работает нормально и так далее. Закономерности четкой нет.
4. Если обновить статус пакетного задания точечно в "Отмена", а затем в "Ожидание", то он снова нормально стартует и продолжает нормально работать неопределенное время
5. Ситуация может разрешиться сама собой - т.е. пакеты снова массово переходят в статус "Ожидание" и далее по кругу.
6. На BatchJob в свойствах таблицы убрал кэширование

Сталкивался ли кто-нибудь с подобным?
Если да, то как решили данную ситуацию?
На что следует обратить внимание при решении ситуации, "куда смотреть"?

Спасибо.
__________________
С уважением, Александр.
Старый 22.04.2019, 06:44   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,173 / 1923 (71) ++++++++
Регистрация: 12.10.2004
Записей в блоге: 1
Предлагаю пересоздать индексы.
А дальше внимательно курить методы класса batchrun, переводящие статусы.
Старый 22.04.2019, 06:51   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,173 / 1923 (71) ++++++++
Регистрация: 12.10.2004
Записей в блоге: 1
Повспоминать, что могло в бд поменяться при смене сервера.
Версия винды. Какие то обновления sql?
За это сообщение автора поблагодарили: samolalex (4).
Старый 22.04.2019, 07:39   #4  
trud is offline
trud
Участник
Лучший по профессии 2017
 
733 / 949 (33) +++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Статус завершается вроде бы отдельным обработчиком. Может у вас просто не хватает потоков(они все заняты чем-то).
Можно попробовать увеличить "Максимальное число потоков в пакетном задании" в конфигурации сервера
За это сообщение автора поблагодарили: samolalex (4).
Старый 22.04.2019, 09:51   #5  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
1,783 / 962 (36) +++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Александр, стоит посмотреть нет ли ожидания работы SP_GETAPPLOCK (у нас, точнее теперь у вас, он логируется).
Там же где пакетные задачи есть запрос об ожиданиях разрешения на запуск. Большие ли там ожидания для процесса, в имени которого есть FinishedJobs?
За это сообщение автора поблагодарили: samolalex (4).
Старый 22.04.2019, 10:46   #6  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
256 / 106 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Алексей, спасибо. Проверил по логу интервалы времени возникновения зависаний.
Ожиданий работы SP_GETAPPLOCK в это время нет.
__________________
С уважением, Александр.
Старый 22.04.2019, 21:15   #7  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
1,783 / 962 (36) +++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Тогда, возможно, стоит помониторить как работает метод класса
X++:
BatchRun::serverProcessFinishedJobs
То есть, записывать в какой-либо лог в отдельной транзакции момент, когда выполнение проходит дальше, чем проверка:
Цитата:
if(!shouldProcess)
return;
Соответственно, если проходим дальше примерно раз в минуту-другую, то проблемы где-то далее, а вот если не проходим, то попробовать логировать места, в которых идет работа в начале метода с batchGlobal в тех местах, в которых в итоге не устанавливается shouldProcess = true, то есть в двух catch и сделать ветку else для проверки LastProcFinishedJobs с записью в этот лог.
Возможно, стоит в лог писать данные о значении thisDate и batchGlobal.LastProcFinishedJobs.
Поятно, что логирование работы с bacthGlobal имеет смысл делать, если будет понятно, что дело в срабатывании if(!shouldProcess).
PS: в любом случае, метод вызывается часто, поэтому записей в логе будет много, нужно будет чистить его время от времени.

Последний раз редактировалось Raven Melancholic; 22.04.2019 в 21:19. Причина: Орфографические ошибки
За это сообщение автора поблагодарили: Logger (3).
Старый 23.04.2019, 08:23   #8  
ice321i is offline
ice321i
Участник
 
59 / 47 (2) +++
Регистрация: 22.10.2007
Может у вас появились пакетные задания с BatchConstraint? Попробуйте удалить записи из этой таблицы в момент закипания статуса пакетов.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Статус строки "Отменено" CHESER85 DAX: Программирование 6 12.01.2017 15:04
Как скорректировать себестоимость в складских проводках, чтобы она была похожа на себестоимость после закрытия склада Ace of Database DAX: Программирование 9 26.05.2014 14:41
Амортизация после кап.ремонта по НУ sns DAX: Функционал 15 05.12.2008 02:35
При создании строки в закупке статус строки становится "Отменено" AlexUnik DAX: Функционал 4 27.09.2004 16:05
грид обновляется Natasha DAX: Программирование 1 15.02.2003 12:53
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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