RES: [firebase-br] Transações Duplicadas

Luiz Carlos luiz em rolamentosradial.com.br
Qua Dez 28 08:17:30 -03 2005


Adilson B. Cápua Jr. wrote:

>Pois é, Cristiano, creio que o problema é o Identificador da transação!
>Imaginei isso em primeira instância, mas queria ter certeza... Veja bem,
>dentro do bloco try...except chamo algumas outras procedures para realizar
>tarefas secundárias, como imprimir um certo "comprovante" do processo,
>etc...
>Mas acho que se houvesse algum problema ali, o except pegaria... Imagino
>que seja mesmo isso!!! Vou criar um identificador único para cada estação
>e ver se resolve o problema... Seria alterar essa linha abaixo?
>
>  Efetua_Processo.TransactionID := 1;
>
>E trocar esse 1 por um variável de controle da máquina cliente???
>
>Grato pela ajuda!!!
>
>
>+---------------------------------------+
>  Adilson Bragança Cápua Jr.
>  Linhares - ES             Brasil
>  
>  mailto    : juniorcapua em yahoo.com.br
>              juniorcapua em gmail.com
>  Mobile    : abcjr em oi.com.br
>  Messenger : juniorcapua em hotmail.com
>  Skype     : dellas_capua
>  Blogger   : www.dellas.rg3.net 
>+---------------------------------------+
>  Save a tree! Send an e-mail! 
>
>-----Mensagem original-----
>De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
>nome de Cristiano Testaí
>Enviada em: terça-feira, 27 de dezembro de 2005 20:08
>Para: lista em firebase.com.br
>Assunto: Re: [firebase-br] Transações Duplicadas
>
>Vc já depurou o programa e confirmou que o erro acontece dentro do bloco
>try...except?  Se sim, deveria entrar no bloco except, ao menos que vc
>execute determinados métodos que mesmo com try...except nao sao tratados,
>como um ApplyUpdates do ClientDataSet, onde vc precisa manipular o evento
>OnReconcilerError.
>De acordo com o erro parece que esta sendo violado o identificador da
>transação, ou seja, parece que esta sendo startada duas transações com o
>mesmo ID(Efetua_Processo.TransactionID), o que não é permitido.
>
>Espero ter ajudado,
>[]´s
>
>Cristiano Testaí
>
>
>"Adilson B. Cápua Jr." <juniorcapua em yahoo.com.br> wrote in message
>news:25721.3585115553$1135719611 em news.gmane.org...
>PessoALL,
>
>   Tenho um programa já funcionando há mais de 1 ano!
>O mesmo foi desenvolvido em Delphi 7 + DBExpress + Firebird 1.5! Bom,
>recentemente um usuário numa rede com 15 máquinas me reportou que direto
>quando vai fazer um certo processo recebe uma mensagem de erro informando
>que há uma duplicação de transação...
>    Bom, como já tinha visto em algumas mensagens, não é uma boa técnica de
>programação você deixar uma transação aberta durante muito tempo, portanto,
>deixo o usuário fazer tudo que precisa e ao Confirmar o processo,
>automaticamente a transação é aberta, é efetuado todo o processo e, se tudo
>correu bem é dado o commit, caso contrário, entra em ação o tal do RollBack.
>Segue abaixo mais ou menos como faço:
>
>procedure TForm_Processos.Conclusao;
>var
>  Efetua_Processo: Ttransactiondesc;
>begin
>  Processo_Sucesso := False;
>
>  Efetua_Processo.TransactionID := 1;
>  Efetua_Processo.IsolationLevel := xilReadCommitted;
>
>  DM.Conexao.StartTransaction(Efetua_Processo);
>
>  try
>    Processo_Sucesso := True;
>
>    // Meu código
>
>    DM.Conexao.Commit(Efetua_Processo);
>  except
>    MessageDlg('Houve um problema ao efetuar processo!' + #13 +
>               'Informe erro #36 ao nosso suporte!', mtError, [mbOk], 0);
>    Processo_Sucesso := False;
>    DM.Conexao.Rollback(Efetua_Processo);
>  end;
>
>
>Minha dúvida é a seguinte: será que pode estar havendo algum conflito com o
>nome das transações? Tipo assim, dois usuários ao mesmo tempo iniciarem o
>processo e o banco se perder e reportar esse erro... Antes de criar uma
>possível solução envolvendo uma "identificação de estação" resolvi postar
>esta mensagem aqui para ver se é isso mesmo... Devo lembrar que essas
>transações são iniciadas, processadas e comitadas instantaneamente, ou seja,
>tudo é feito "rapidinho"... Nenhuma delas fica aberta por muito tempo... É
>só o tempo do próprio processamento (que por usa vez é muito rápido
>também)!!!
>O estranho é que o erro não é pego pelo except, ou seja, nosso usuário não
>informou para nós o erro número 36 como pede a mensagem e sim informou uma
>mensagem em "ingrês" [não sei muito bem como dizer, vou ler o que está
>escrito aqui! :) ] dizendo que houve uma duplicação de transação!
>
>Qualquer ajuda é bem vinda...
>
>
>+---------------------------------------+
>  Adilson Bragança Cápua Jr.
>  Linhares - ES             Brasil
>
>  mailto    : juniorcapua em yahoo.com.br
>              juniorcapua em gmail.com
>  Mobile    : abcjr em oi.com.br
>  Messenger : juniorcapua em hotmail.com
>  Skype     : dellas_capua
>  Blogger   : www.dellas.rg3.net
>+---------------------------------------+
>  Save a tree! Send an e-mail!
>
>
>
>
>
>
>_______________________________________________________
>Yahoo! doce lar. Faça do Yahoo! sua homepage.
>http://br.yahoo.com/homepageset.html
>
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br Para editar
>sua configuração na lista, use o endereço
>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>
>
>
>
>	
>
>	
>		
>_______________________________________________________ 
>Yahoo! doce lar. Faça do Yahoo! sua homepage. 
>http://br.yahoo.com/homepageset.html 
>
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>
>  
>
Eu costumo dar uma identificação aleatória para cada transação, por 
exemplo atribuo ao TransactionID o valor da função gettickcount da Unit 
Windows!

Abrasço.

-- 


------------------------------------------------------------------------
Luiz Carlos da Silva Soares
Analista de Sistemas 	  	
  	 
  	
 

Importadora de Rolamentos Radial Ltda.
  	[11] 3346-3731
  	www.rolamentosradial.com.br <http://www.rolamentosradial.com.br/>
  	luiz em rolamentosradial.com.br <mailto:luiz em rolamentosradial.com.br>
  	 






Mais detalhes sobre a lista de discussão lista