[firebase-br] RES: Lock conflict on no wait transaction + IBO

Felipe Aron felipearon em gmail.com
Ter Ago 20 10:45:48 -03 2013


Felix eu utilizo o modo "off-line". Sempre carrego as informações e utilizo
o banco somente na gravação.

O problema no meu cenário foi:

Maquina01 - Abriu o cadastro do produto em modo "offline"

Maquina02 - Abriu a tela de inclusão de pedido (também offline) e
selecionou o produto que esta sendo alterado. Nesse momento apenas fez o
"Select" e jogou o produto na Grid (offline).

É bem provável que esse "Select" não tenha fechado a transação. Ao dar um
"Close()" na IBOQuery é dado um Roollback automático?



Em 20 de agosto de 2013 10:30, Felix - SOL Informática <
felix em solsistemas.com> escreveu:

> Sugiro que separe em tabelas distintas as informações "fisicas" do cadastro
> (nome, endereco, telefone) e as "dinamicas" (ultima compra, total em
> debito,
> quantidade de itens comprados)
>
> Ao abrir a ficha para edicao, o usuario tem acesso somente as "fisicas"; as
> "dinamicas" nao devem ser alteradas (nao manter esta transacao aberta),
> logo
> não haverá conflito quando outro operador lançar um pedido.
>
> MAS se operadores diferentes abrirem o mesmo cadastro para edição voce tera
> conflito. Eu faço a edição em modo "off line" - carrego os campos e encerro
> a transacao de leitura; o outro usuario irá carregar dessa mesma maneira.
> Aquele que tentar salvar por ultimo recebe uma mensagem de alerta sobre os
> dados terem sido atualizados e que sua edição não tem mais validade.
>
> Francisco Felix
> www.solsistemas.com
>
>
> -----Mensagem original-----
> De: lista [mailto:lista-bounces em firebase.com.br] Em nome de Felipe Aron
> Enviada em: terça-feira, 20 de agosto de 2013 09:53
> Para: FireBase
> Assunto: [firebase-br] Lock conflict on no wait transaction + IBO
>
> E ai pessoALL tudo bem?
>
> Hoje pude acompanhar em tempo real o problema do Firebird "*Lock conflict
> on no wait transaction*":
>
> http://www.firebirdfaq.org/faq109/
>
> O cliente teve esse erro ao alterar o cadastro do produto, e constatei que
> numa outra máquina estava fazendo um novo pedido selecionando o mesmo
> registro.
>
> O Select (leitura) possui uma transação enquanto o Update (gravação) possui
> outra.
>
> Entendi a questão do NO WAIT (leitura da FAQ) porém não vejo com bons olhos
> habilitar o WAIT pois no meu cenário pode "travar" a ação do usuário - no
> caso a alteração do produto.
>
> Estou usando os componentes IBO (Database, Transaction, Query).
>
> Qual seria a forma ideal para tratar essa exceção?
>
> Deixando a Transaction de leitura como "readOnly" resolveria? Existe alguma
> configuração na Query de somente-leitura (usado somente para Selects) para
> não deixar a transação pendente?
>
> Desde já agradeço pela ajuda! :D
>
> --
> Analista-Programador
> #FollowMe: @felipearon <http://twitter.com/felipearon> (
> http://felipearon.net)
> ______________________________________________
> 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
>



-- 
Analista-Programador
#FollowMe: @felipearon <http://twitter.com/felipearon> (
http://felipearon.net)



Mais detalhes sobre a lista de discussão lista