![]() |
#3 |
Участник
|
Цитата:
Сообщение от 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). |
Теги |
batch, batchrun, reqreaderwriterlock, баг, блокировки |
|
|