[firebase-br] RES: RES: Ajuda com lock conflick

emerson icarrard em gmail.com
Qua Mar 5 15:23:07 -03 2008


   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
 





Mais detalhes sobre a lista de discussão lista