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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.09.2018, 17:25   #1  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,160 / 1289 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Судя по всему, поведение похоже на то, что в теме:
Пакетные задания - batchConstraint (AX 2012 R2)
правда там немного наоборот - не все закончилось выполняться, а запустилось то, что должно еще ждать, но
Цитата:
расследование показало, что MS SQL некорректно выполняет сформированные в данном методе запросы с exists/notexists join когда они выполняются одновременно с другими запросами на обновление Batch
наводит на размышления. Если это, действительно так, то работа двух пакетных серверов одновременно с методами serverProcessFinishedJobs и serverProcessDependencies в случае, когда exists/notexists частично игнорируют, а частично учитывают транзакцию может привести к тому эффекту, который мы получили.
За это сообщение автора поблагодарили: Logger (5).
Старый 17.09.2018, 13:26   #2  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 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:15   #3  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,160 / 1289 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Посмотрите на исправления класса BatchRun...
Вот что значит паника. Я активно смотрел на этот класс в DAX2012 R3, но именно этого не заметил - зафиксировал только то что появилось readCommittedLock(true), а на такое, бросающегося в глаза, даже не обратил внимания.
Старый 05.11.2019, 14:43   #4  
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. Есть соображения по этому поводу?
Теги
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, время: 23:39.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.