bloco sincronizado no grails funciona no windows, mas não no linux
Eu tenho um aplicativo grails que depende de um bloco sincronizado em um serviço. Quando o executo no Windows, a sincronização funciona conforme o esperado, mas quando executo o ams linux, recebo um StaleObjectStateException.
O problema é reproduzido no exemplo a seguir.
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
}
}
}
No meu entender, essa exceção ocorre porque vários threads estão tentando salvar o mesmo objeto. É por isso que estou usando um bloco sincronizado.
Java Linux:
versão java "1.7.0_85"OpenJDK Runtime Environment (amzn-2.6.1.3.61.amzn1-x86_64 u85-b01)VM do servidor OpenJDK de 64 bits (compilação 24.85-b03, modo misto)Java do Windows:
versão java "1.7.0_79"Java (TM) SE Runtime Environment (compilação 1.7.0_79-b15)VM do servidor Java HotSpot (TM) de 64 bits (build 24.79-b02, modo misto)Alguma pista?
obrigado