[firebase-br] FireDac FDEventAlerter Problema com Transaction Delphi Rio

Marcos R. Weimer marcosweimer em gmail.com
Segunda Setembro 20 17:58:08 -03 2021


Ah sim, try/finally sempre, e não acontece só no firedac,tudo que se cria
em runtime deve ser usado.

A alteração que desconfio que causou meu problema é esta:
https://blogs.embarcadero.com/pt/changes-to-firedac-transaction-isolation-configuration-in-rad-studio-10-4/

Fiz algumas alterações agora e passei para o pessoal testar, e não foram na
questão da transaction, acredito que houve alguma outra alteração no
FDEventAlerter, que é onde ataquei agora.

Meio que eliminei a questão da transaction colocando sleeps na aplicação e
executando algumas SQLs no ibexpert para verificar como estava se
comportando e parece que está tudo ok com as transações. Agora o negócio é
esperar os testes.

-=Ma®©oS=-
Marcos R. Weimer
Pessoas quietas têm as mentes mais barulhentas - Stephen Hawking
Viver significa ter algumas alegrias e muito sofrimento - Pepe Mujica
Muitos daqueles que te chamam de louco queriam ter a sua coragem - Silvio
Santos





Em seg., 20 de set. de 2021 às 17:51, Gladiston Santana via lista <
lista em firebase.com.br> escreveu:

> As vezes, o Firedac dá seus próprios commit implicitamente e às vezes se
> mistura com os StartTransaction ou CommitTransaction feito pelo programador
> e isso deixa buracos como uma uma transação pendente que vai gerar um lock
> noutro lugar.
> É como se duas pessoas tentassem montar um motor, se no final faltar uma
> peça no final tem que descobrir qual dos camaradas fez cagad*!
> Para solucionar voce tem que varrer todos os seus starttransaction e vê se
> todos eles estão num bloco try...except onde se falhar rigorosamente dá o
> rollback e se passar tem que terminar em commit, se houver um exit/break
> contornando commit/rollback então parabéns você achou a peça que faltava.
> O legal de fazer as transações no modo manual no fdconnection é que você
> fica sabendo de suas escorregadas logo na hora, já no modo automático o
> firedac tenta contornar qualquer situação daí acontece coisas
> inexplicáveis onde é dificil deugar porque fica macarrônico as linhas e vai
> acabar nas classes do firedac, mas verdadeiramente o erro vem do seu
> programa.
> Bugs no firedac são corrigidos de uma versão para outra, é bem possível que
> o bug que corrigiu era uma falha que você não via na sua aplicação.
> O firedac tem que ter cuidado, tem que ser bem pragmático, create com free,
> startransaction com commit/rollback e assim por diante quando ainda está
> digitando, se esquecer, depois fica dificil achar, em especial para
> dinossauros como eu que insistem em usar bibliotecas ao invés de POO.
> Alias, tenta criar uma query em runtime e tenta não destruir só para ver o
> carretel de objetos vazando memória no final, por isso tem que ser
> pragmático quando usa firedac.
>
> []´s
>
> Em seg., 20 de set. de 2021 às 14:08, Marcos R. Weimer via lista <
> lista em firebase.com.br> escreveu:
>
> > Ola!
> >
> > A algumas semanas atualizamos o delphi para a versão Rio (10.4), porem
> > estamos com problemas nos eventos disparados pelo banco firebird.
> >
> >
> ______________________________________________
> 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://www.firebase.com.br/pesquisa_lista.html
>


Mais detalhes sobre a lista de discussão lista