[firebase-br] RES: Ajuda com lock conflick

Marcelo mib em teorema.inf.br
Qua Mar 5 11:16:44 -03 2008


Eduardo,

	Obrigado pelas informações.
	Eu Realmente, acredito que o problema é uma "falha de programação",
mas não consigo identificar o problema, como isto ocorre 1x apenas a cada 2
ou 3 dias às vezes fica ainda mais difícil de identificar, por isto
solicitei se tem algo que eu possa fazer, para localizar o problema. 

	Uma vez que todo o meu processamento de fechamento da venda no caso
é feito direto no banco de dados, o único caso diferenciado é que são duas
empresas no mesmo banco que trabalha com 2 fechamentos às vezes simultâneos,
mas em micros separados e com ecf´s separadas.

	Eu uso ibx, abro o ibdatabase e o ibtransaction no inicio do soft, e
no fechamento uso .CommitRetaining, geralmente trato assim;


   Try
      TIBDataSet(DsMain.DataSet).Close;
      TIBDataSet(DsMain.DataSet).ParambyName('VENDA').value:=WVENDA;
      TIBDataSet(DsMain.DataSet).Open;
      TIBDataSet(DsMain.DataSet).Edit;
      TIBDataSet(DsMain.DataSet).FieldbyName('VENDA_STATUS').value:='F'; //
Fechamento
      TIBDataSet(DsMain.DataSet).ApplyUpdates;
      TIBQuery(DsMain.DataSet).Transaction.CommitRetaining;
      TIBDataSet(DsMain.DataSet).Close;
   Except
      on E:Exception do
         begin
            Showmessage('Ocorreu uma Exceção na Gravação :
'+E.ClassName+#13#13+E.Message);
            TIBDataSet(DsMain.DataSet).CancelUpdates;
            TIBQuery(DsMain.DataSet).Transaction.RollbackRetaining;
         end;
   End;


	Se tiver mais alguma dica, ou se alguém também tiver alguma idéia,
eu agradeço muito pela atenção.

	Grato.


Marcelo I. Barby
Analista de Sistemas
mib em teorema.inf.br


-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Eduardo Jedliczka - TeamFB
Enviada em: terça-feira, 4 de março de 2008 11:30
Para: FireBase
Assunto: Re: [firebase-br] Ajuda com lock conflick

Lock conflict acontece quando você tem duas transações tentando alterar os
mesmos dados numa transação no-wait (ou quando já acabou o tempo de espera
definido no FB 2.X)

Dead Lock é quando a transação A alterou um registro X e está agurandando
para alterar o registro Y e a transação B alterou o registro Y e está
aguardando para alterar o registro X. ou seja, estas condições nunca serão
satisfeitas!!!

Como dizem nos treinamentos e certificações para DBA (Independente do banco
de dados).... Dead Lock é "falha do programador da aplicação"...

Para "minimizar", tente reduzir (o máximo possivel) o tempo de cada
transação aberta (e lembrar de commitar os dados).

Em caso de rotinas de importação, recálculo de saldo, e ajustes, refaça a
lógica da rotina usando um "memory table" para organizar (classificar em
ordem alfabética, código, data, etc...) os dados de algum modo que "elimine"
ou "reduza drasticamente" a possibilidade de se alterar um
produto/cliente/conta/registro "Y antes de X"... 

Sucesso,

Eduardo Jedliczka

Em Seg, 2008-03-03 às 14:25 -0300, Marcelo escreveu:
> Boa tarde pessoal,
> 
> 	Tenho uma dúvida, na verdade um erro que ocorre, eu tenho um
processo 
> que dispara a cada venda finalizada, e algumas vezes 1 ou 2 em cada 
> 100 acontece de me retornar a seguinte mensagem, lock conflick on no 
> wait transaction deadlock, update conflicts with concurrent update, 
> isto quando mudo o status da venda para fechada através de uma trigger 
> ele dispara uma procedure que gera movimentação financeira, e de estoques.
> 
> 	Bom, já fiz uma devassa e não consigo descobrir o pq desta mensagem,

> há alguma maneira de eu descobrir isto, algum soft que possa colocar 
> no servidor que me traga um log com maiores informações a respeito de 
> onde é que está acontecendo este problema, e se por eu fazer o 
> processo via SP no banco eu precisaria commitar alguma coisa na SP.
> 
> 	Agradeço por qualquer ajuda.
>  
> 
> Marcelo I. Barby
> Analista de Sistemas
> mib em teorema.inf.br
> 
> 
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br 
> Para saber como gerenciar/excluir seu cadastro na lista, use: 
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br Para
saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa


__________ Informação do NOD32 IMON 2922 (20080305) __________

Esta mensagem foi verificada pelo NOD32 sistema antivírus
http://www.eset.com.br






Mais detalhes sobre a lista de discussão lista