|
![]() |
#1 |
Участник
|
Цитата:
Сообщение от 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). |
![]() |
#2 |
Участник
|
|
|
![]() |
#3 |
Участник
|
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, баг, блокировки |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|