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

Gladiston Santana gladiston em vidy.com.br
Segunda Setembro 20 17:49:43 -03 2021


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


Mais detalhes sobre a lista de discussão lista