[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