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

Marcelo mib em teorema.inf.br
Qui Mar 6 11:35:20 -03 2008


Emerson,

	
	Eu coloquei esta linha e quando ele chega ali na 1a. vez que
processo, já está true, agora me conte, está true só porque o componente
está ativo ou porque existe uma transação com um select ou update qualquer
em andamento e se existe há algum problema ?

	Grato,

Marcelo I. Barby
Analista de Sistemas
mib em teorema.inf.br
Teorema Informática
www.teorema.inf.br 

0xx42-3035-4030


-----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


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

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






Mais detalhes sobre a lista de discussão lista