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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.09.2018, 13:29   #1  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
DAX2009 Странное поведение пакетного сервера
Добрый день.
Столкнулся с непонятным поведением пакетного сервера при обработке задачи, выполняющейся раз в сутки. Может быть кто-то сталкивался и знает решение или хотя бы может подсказать в какую сторону копать.
Сегодня это было пакетное задание (BatchJob), у которого несколько задач (Batch) выполняющихся последовательно, каждая после успешного завершения предыдущей, но время от времени проявляется и для тех, у кого только одна задача. Ошибка неустойчивая
Запланированное время запуска 0:30. Вчера ночью все задачи отработали, были сделаны корректные записи в истории задач (BatchHistory) последняя завершилась в 4:00:57 и в 4:02:07 была создана запись в BatchJobHistory.
Тут же в 4:02:11 все задачи одновременно вдруг были запущены заново, завершились они в разное время и были созданы записи в BatchHistory, но не было создано записи в BatchJobHistory.
Сегодня же в 0:30 задание запустилось, отработало всего 1 минуту, создалась запись в BatchJobHistory, к которой привязались записи BatchHistory, которые были созданы вчера.
Пока даже нет никаких идей чтобы воспроизвести кейс, в котором было бы такое поведение.
Старый 15.09.2018, 17:25   #2  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Судя по всему, поведение похоже на то, что в теме:
Пакетные задания - batchConstraint (AX 2012 R2)
правда там немного наоборот - не все закончилось выполняться, а запустилось то, что должно еще ждать, но
Цитата:
расследование показало, что MS SQL некорректно выполняет сформированные в данном методе запросы с exists/notexists join когда они выполняются одновременно с другими запросами на обновление Batch
наводит на размышления. Если это, действительно так, то работа двух пакетных серверов одновременно с методами serverProcessFinishedJobs и serverProcessDependencies в случае, когда exists/notexists частично игнорируют, а частично учитывают транзакцию может привести к тому эффекту, который мы получили.
За это сообщение автора поблагодарили: Logger (5).
Старый 17.09.2018, 11:53   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Как предположение.

В Ax2009 было введено UTCDateTime. Часовые пояса. У Вас время запуска - около полуночи. Может, с настройками текущего часового пояса проблемы?

Если сдвинуть время начала задания так, чтобы даже без учета часового пояса дата начала запуска была в тот же день, то проблема пропадет?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: Raven Melancholic (2).
Старый 17.09.2018, 13:26   #4  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Если это, действительно так, то работа двух пакетных серверов одновременно с методами serverProcessFinishedJobs и serverProcessDependencies в случае, когда exists/notexists частично игнорируют, а частично учитывают транзакцию может привести к тому эффекту, который мы получили.
Посмотрите на исправления класса BatchRun, выпущенные для AX 2012 R2 в рамках KB 3216955 "Continuous dead locks in batch tables", возможно, имеет смысл портировать их на AX 2009. Вкратце, там код работы с таблицами пакетной инфраструктуры обрамили в захват и освобождение mutex'а на уровне СУБД
X++:
#define.BatchRunServerTaskLock("BatchRunServerTaskLock")
ReqReaderWriterLock lock;
// ...
lock = ReqReaderWriterLock::construct();
lock.enterWriterLock(#BatchRunServerTaskLock);
try
{
    // обновление Batch-таблиц
}
catch (Exception::Deadlock)
{
    lock.exit(#BatchRunServerTaskLock);
    throw Exception::Deadlock;
}
catch
{
    lock.exit(#BatchRunServerTaskLock);
    throw Global::error("@SYP4316158");
}
lock.exit(#BatchRunServerTaskLock);

Последний раз редактировалось gl00mie; 17.09.2018 в 13:31.
За это сообщение автора поблагодарили: Logger (7), Raven Melancholic (10).
Старый 17.09.2018, 18:12   #5  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Может, с настройками текущего часового пояса проблемы?
Было самым первым предположением, но не подтвердилось.
Старый 17.09.2018, 18:15   #6  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Посмотрите на исправления класса BatchRun...
Вот что значит паника. Я активно смотрел на этот класс в DAX2012 R3, но именно этого не заметил - зафиксировал только то что появилось readCommittedLock(true), а на такое, бросающегося в глаза, даже не обратил внимания.
Старый 05.11.2019, 14:43   #7  
skycap is offline
skycap
Участник
 
43 / 14 (1) ++
Регистрация: 04.09.2008
Адрес: Москва
EnableBatchRunServerTaskLock
X++:
/// <summary>
/// Check whether or not to enable batch run server task lock from SysGlobalConfiguration table.
/// </summary>
/// <returns>
/// Whether or not to enable batch run server task lock.
/// </returns>
private static boolean isBatchRunServerTaskLockEnabled()
{
    SysGlobalConfiguration sysGlobalConfig;

    #define.ConfigName_EnableBatchRunServerTaskLock('EnableBatchRunServerTaskLock')

    select Value from sysGlobalConfig
        where sysGlobalConfig.Name == #ConfigName_EnableBatchRunServerTaskLock;

    return (sysGlobalConfig && sysGlobalConfig.Value == 'True') ? true : false;
}
В таблице SysGlobalConfiguration не нашел соответствующей записи (чистое приложение DAX 2012 R3 с последними обновлениями). Планирую добавить ее руками в SQL. Есть соображения по этому поводу?
Старый 06.11.2019, 22:32   #8  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Добавляйте Широкое распространение в той же D365O получил т.н. flighting-режим работы функционала, когда по умолчанию он выключен, но может быть включён на лету с помощью записи в специально обученной таблице. См., к примеру, kurthatlevik: Dynamics 365F&O – Enabling new hidden functionality (SYSFlighting). Тут похожая ситуация.
За это сообщение автора поблагодарили: skycap (1).
Теги
batch, batchrun, reqreaderwriterlock, баг, блокировки

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Странное поведение при обновлении форм ах2009 DmitryK DAX: Функционал 26 18.03.2013 15:48
Странное поведение Batch vvk DAX: Программирование 0 05.07.2012 14:38
Странное поведение ttsAbort Logger DAX: Программирование 6 28.05.2009 15:11
Запуск пакета - странное поведение max_woody_ru DAX: Программирование 2 06.12.2004 09:01
Странное поведение резервирования после создания спланированной закупки. NEO DAX: Функционал 7 01.07.2004 14:03

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 04:53.