14.09.2018, 13:29 | #1 |
Участник
|
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 |
Участник
|
Судя по всему, поведение похоже на то, что в теме:
Пакетные задания - batchConstraint (AX 2012 R2) правда там немного наоборот - не все закончилось выполняться, а запустилось то, что должно еще ждать, но Цитата:
расследование показало, что MS SQL некорректно выполняет сформированные в данном методе запросы с exists/notexists join когда они выполняются одновременно с другими запросами на обновление Batch
|
|
|
За это сообщение автора поблагодарили: Logger (5). |
17.09.2018, 11:53 | #3 |
Участник
|
Как предположение.
В Ax2009 было введено UTCDateTime. Часовые пояса. У Вас время запуска - около полуночи. Может, с настройками текущего часового пояса проблемы? Если сдвинуть время начала задания так, чтобы даже без учета часового пояса дата начала запуска была в тот же день, то проблема пропадет?
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: Raven Melancholic (2). |
17.09.2018, 13:26 | #4 |
Участник
|
Цитата:
Сообщение от 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:12 | #5 |
Участник
|
|
|
17.09.2018, 18:15 | #6 |
Участник
|
|
|
05.11.2019, 14:43 | #7 |
Участник
|
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; } |
|
06.11.2019, 22:32 | #8 |
Участник
|
Добавляйте Широкое распространение в той же D365O получил т.н. flighting-режим работы функционала, когда по умолчанию он выключен, но может быть включён на лету с помощью записи в специально обученной таблице. См., к примеру, kurthatlevik: Dynamics 365F&O – Enabling new hidden functionality (SYSFlighting). Тут похожая ситуация.
|
|
|
За это сообщение автора поблагодарили: skycap (1). |
Теги |
batch, batchrun, reqreaderwriterlock, баг, блокировки |
|
|