bloque sincronizado en griales funciona en windows pero no en linux

Tengo una aplicación Grails que se basa en un bloque sincronizado en un servicio. Cuando lo ejecuto en Windows, la sincronización funciona como se esperaba, pero cuando ejecuto en ams linux obtengo una StaleObjectStateException.

El problema se reproduce en el siguiente ejemplo.

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
    }
}

}

En mi opinión, esta excepción se produce porque varios subprocesos están tratando de guardar el mismo objeto. Por eso estoy usando un bloque sincronizado.

Linux java:

versión de Java "1.7.0_85"OpenJDK Runtime Environment (amzn-2.6.1.3.61.amzn1-x86_64 u85-b01)OpenJDK 64-Bit Server VM (compilación 24.85-b03, modo mixto)

Windows java:

versión de Java "1.7.0_79"Java (TM) SE Runtime Environment (compilación 1.7.0_79-b15)Máquina virtual de servidor Java HotSpot (TM) de 64 bits (compilación 24.79-b02, modo mixto)

¿Alguna pista?

Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta