|
15.09.2018, 17:25 | #1 |
Участник
|
Судя по всему, поведение похоже на то, что в теме:
Пакетные задания - batchConstraint (AX 2012 R2) правда там немного наоборот - не все закончилось выполняться, а запустилось то, что должно еще ждать, но Цитата:
расследование показало, что MS SQL некорректно выполняет сформированные в данном методе запросы с exists/notexists join когда они выполняются одновременно с другими запросами на обновление Batch
|
|
|
За это сообщение автора поблагодарили: Logger (5). |
17.09.2018, 13:26 | #2 |
Участник
|
Цитата:
Сообщение от Raven Melancholic
Если это, действительно так, то работа двух пакетных серверов одновременно с методами serverProcessFinishedJobs и serverProcessDependencies в случае, когда exists/notexists частично игнорируют, а частично учитывают транзакцию может привести к тому эффекту, который мы получили.
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 |
Участник
|
|
|
05.11.2019, 14:43 | #4 |
Участник
|
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; } |
|
Теги |
batch, batchrun, reqreaderwriterlock, баг, блокировки |
|
|