синхронизированный блок на Grails работает на окнах, но нет в Linux
У меня есть приложение Grails, которое опирается на синхронизированный блок в службу. Когда я запускаю его в Windows, синхронизация работает, как и ожидалось, но когда я запускаю в ams linux, получаю StaleObjectStateException.
Проблема воспроизведена в следующем примере.
class TestService {
private final Object $lock = new Object[0];
TesteSync incrementa() {
synchronized ($lock) {
TesteSync t = TesteSync.findById(1)
t.contador++
t.save(flush: true)
Thread.sleep(10000)
return t
}
}
}
Насколько я понимаю, это исключение происходит, потому что несколько потоков пытаются сохранить один и тот же объект. Вот почему я использую синхронизированный блок.
Linux Java:
Java-версия "1.7.0_85"Среда выполнения OpenJDK (amzn-2.6.1.3.61.amzn1-x86_64 u85-b01)OpenJDK 64-битная серверная виртуальная машина (сборка 24.85-b03, смешанный режим)Windows Java:
Java-версия "1.7.0_79"Java (TM) SE Runtime Environment (сборка 1.7.0_79-b15)Java HotSpot (TM) 64-разрядная серверная виртуальная машина (сборка 24.79-b02, смешанный режим)Есть какие-нибудь подсказки?
Спасибо