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

questionAnswers(1)

yourAnswerToTheQuestion