[firebase-br] RES: RES: RES: Ajuda com lock conflick
Jose Aparecido da Silva
joseasilva em bol.com.br
Qua Mar 5 17:00:32 -03 2008
Tira CommitRetaining e usa só Commit e os problemas cessarão.
[ ]'s
Jose Aparecido da Silva;
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de emerson
Enviada em: quarta-feira, 5 de março de 2008 15:23
Para: 'FireBase'
Assunto: [firebase-br] RES: RES: Ajuda com lock conflick
Try
If not (ibtransaction.intransaction) then//acrescente estas duas linhas
Ibtransaction.starttransaction;
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;
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Sandro
Enviada em: quarta-feira, 5 de março de 2008 11:32
Para: FireBase
Assunto: Re: [firebase-br] RES: Ajuda com lock conflick
Não sou a melhor pessoa, pois não tenho problema com dead locks.
Mas eu tentaria fazer um log que gravasse a maquina, a hora e as todas
instruções ( sql ) no momento do fechamento da nota , assim poderia
confrontar o horario do erro e verificar quem disparou as instruções.
----- Original Message -----
From: "Marcelo" <mib em teorema.inf.br>
To: "'FireBase'" <lista em firebase.com.br>
Sent: Wednesday, March 05, 2008 11:16 AM
Subject: [firebase-br] RES: Ajuda com lock conflick
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
______________________________________________
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
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.516 / Virus Database: 269.21.4/1313 - Release Date: 05/03/2008
09:50
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.5.516 / Virus Database: 269.21.4/1313 - Release Date: 05/03/2008
09:50
______________________________________________
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
Mais detalhes sobre a lista de discussão lista