StaleObjectStateException
24/08/2015 18:20
0
Olá pessoal,
  Estou enfrentando problemas de "StaleObjectStateException" quando usuários tentam atualizar um mesmo objeto, dando uma pesquisada encontramos as seguintes informações:
  Por default no grails é habilitado o “Optimistc Locking”,que previne que um usuário A sobrescreva alterações do usuário B. Isso pode ser
inútil em algumas aplicações mas lança exceptions causando problemas de concorrência.
  Opções:
[list=1][/list]  Estamos considerando utilizar a 2° opção e adicionar tratamento das exceptions geradas, alguém tem alguma sugestão melhor/diferente? Como vocês fazem para controlar concorrência?

obs: Caso alguma informação acima esteja incorreta, me avisem ^^
obs2: Créditos da pesquisa para Albert Souza.
Tags: concorrência, StaleObjectStateException


0
As opções...não vieram!
Manda ai .. .
Mas ... vc tem a opção de desabilitar “Optimistc Locking” colocando ' version false' no seu domain.
ou ver se  "Pessimistic Locking" resolve seu problema !


0
Este editor do grails Brasil ta meio bugado...
segue:
    Desligar o “Optimistc Locking” globalmente ou por domain -> Significa "última chamada vence". Isso resulta em perda de dados, por exemplo, se uma requisição mudou uma propriedade, a solicitação do usuário concorrente iria redefinir essa propriedade.
    Ligar o “Optimistc Locking” globalmente ou por domain -> Atualiza somente propriedades sujas (dirty), removendo parte dos problemas de perda de dados do “Optimistc Locking” desligado. Lança exception em casos de concorrência.
    Lock() pessimista ->sempre que for modificar uma domain usar o método lock() na mesma e em todas associações referenciadas. Todas as atualizações devem estar dentro de uma transação para evitar a perda de dados ou resultados incorretos. Irá bloquear pedidos de atualização de domains que estejam sendo modificadas no momento. Ainda lança exceções de bloquei.
    Usar executeUpdate -> Trocar saves/updates/merges por hqls e deixar que o banco trate a concorrência. Só funciona se o sistema não utilizar ORM.
Estamos considerando utilizar a 2° opção e adicionar tratamento das exceptions geradas, alguém tem alguma sugestão melhor/diferente? Como vocês fazem para controlar concorrência?
obs: Caso alguma informação acima esteja incorreta, me avisem ^^
25/08/2015 09:48


0
Apenas recomendando:
http://www.anyware.co.uk/2005/2012/11/12/the-false-optimism-of-gorm-and-hibernate/



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto