[firebase-br] RES: Deadlock on execute procedure
rodrigo
firebase em dominioinf.com.br
Quinta Outubro 28 15:18:37 -03 2021
Aproveitando o gancho, existe alguma forma de fazer um commit automático?
Eu nunca deixo uma transação aberta por muito tempo, mas por alguma falha de meu sistema,
Pode ser que em algum lugar fique, teria como? Tipo 10 segundo commit se tiver aberta?
Grato
Enviado do Email para Windows
De: Carlos Matos via lista
Enviado:quinta-feira, 28 de outubro de 2021 06:36
Para: 'Carlos H. Cantu'; 'FireBase'
Cc:Carlos Matos
Assunto: Re: [firebase-br] Deadlock on execute procedure
Carlos,
Isto não é verdade. Fiz vários testes e com o parâmetros read_committed e
no_rec_version (wait desta forma está implícito), a 2ª transação aguarda
sempre pelo commit da 2ª e nunca dá qualquer erro, tenha a 1ª feito Commit
ou Rollback. Testei e posso enviar um testcase se for necessário.
Apenas falha, como já disse, se as transações concorrentes forem dentro da
mesma instancia, isto é:
t1.starttrasaction;
update some_table set campo = '12345' where chave = 1;
t2.starttransaction;
update some_table set campo = '12345' where chave = 1; // Aqui vai dar
Deadlock
se a situação for esta:
t1.starttrasaction;
update some_table set campo = '12345' where chave = 1;
showessage('Stop');
e a seguir executar outra instancia da aplicação, este 2ª instancia vai
aguardar indefinidamente até que a 1ª faça o Commit, sem dar qualquer erro.
Ou é defeito ou é mesmo assim que as transações no Firebird se comportam,
não sei, mas é o que acontece.
-----Mensagem original-----
De: lista <lista-bounces em firebase.com.br> Em Nome De Carlos H. Cantu via
lista
Enviada: 28 de outubro de 2021 00:22
Para: FireBase <lista em firebase.com.br>
Cc: Carlos H. Cantu <listas em warmboot.com.br>
Assunto: Re: [firebase-br] Deadlock on execute procedure
WAIT apenas faz esperar pela decisão da outra transação, mas se a outra
transação der commit ao invés de rollback, vai dar update conflict do mesmo
jeito.
Sugiro que leia o artigo que te mandei no email anterior.
[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 4 - www.firebase.com.br/guiafb4.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br
CMvl> Não estou a usar datawares.
CMvl> Estou usando Delphi a acessando as bds do firebird através das
componentes IBX.
CMvl> Fiz um teste e se usar na transação os parâmetros:
CMvl> Read_committed
CMvl> No_rec_version
CMvl> E sendo que assim o parâmetro wait está implícito (testei e está
CMvl> se facto), havendo um update concorrente com outra transação, esta
CMvl> 2.ªtransacao deveria esperar que a 1.a faça o commit, mas não,
CMvl> está a dar erro.
CMvl> Será que isto apenas acontece se estivermos a falar de instâncias
CMvl> diferentes, ou seja, o mesmo programa chamado duas vezes?!!!
CMvl> Será que o problema é, estando eu com duas transações iniciaras na
CMvl> mesma instância do programa, a 2.ª quando apanha um update
CMvl> concorrente, gera o erro ignorando o parâmetro wait?!!!
CMvl> --
CMvl> Carlos Matos
CMvl> Ligado 27 de outubro de 2021 às 21:58:41, Gladiston Santana via
CMvl> lista (lista em firebase.com.br(mailto:lista em firebase.com.br)) escreveu:
>> se estiver usando datawares (dbedit, dbcombobox, dbmemo, ....) e
>> depois dispara uma stored talvez seu problema esteja num
>> autocommit=true do firedac, isto é, não é tudo na mesma transação,
>> ele tá abrindo e fechando e em algum momento que disparar a stored
>> vai encontrar seu trabalho em edição e causando o lock. Mais ainda se
>> houver triggers encolvidas. Dá uma olhada nisso. Procedimentos
>> longos, eu gosto de fazer as transações manualmente ou pô-los em
>> execute block, mesmo que chamasse uma SP lá dentro apenas para garantir
tudo no mesmo lugar.
>>
>> Em qua., 27 de out. de 2021 às 11:13, Carlos Matos via lista <
>> lista em firebase.com.br> escreveu:
>>
>> > Estou tendo um problema há vários meses.
>> >
>> > Estou a usar o Firebird 4 e tenho uma unit onde faço várias
>> > operações, select, update, insert e no final estou a executar um
>> > procedimento, ou seja, um Stored Procedure do Firebird.
>> >
>> > Tudo isto está na mesma transação.
>> >
>> >
>> ______________________________________________
>> 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
CMvl> ______________________________________________
CMvl> FireBase-BR (www.firebase.com.br) - Hospedado em
CMvl> www.locador.com.br Para saber como gerenciar/excluir seu cadastro na
lista, use:
CMvl> http://www.firebase.com.br/fb/artigo.php?id=1107
CMvl> Para consultar mensagens antigas:
CMvl> http://www.firebase.com.br/pesquisa_lista.html
______________________________________________
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
______________________________________________
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
--
Este email foi escaneado pelo Avast antivírus.
https://www.avast.com/antivirus
Mais detalhes sobre a lista de discussão lista