[firebase-br] Reconexão

firebase em dominioinf.com.br firebase em dominioinf.com.br
Qui Fev 26 19:14:32 -03 2015


Boa noite Gladiston,

Obrigado pela resposta.

Sim, gostaria de simular um problema de rede e não de desconexão pelo 
usuario.

Imagine a situação.

Tenho um database ligado em rede e 20 tabelas abertas. Estou chutando 
esse valor,
dependendo dos modulos que o cliente usa, podem ser mais ou menos 
tabelas abertas.

Vamos supor que o cliente esta la fazendo uma venda, e derepente cai a 
rede.
O meu sistema avisa o cliente atravez de uma mensagem que a rede esta 
inativa, se
ele deseja tentar reconectar.

Então se o cliente clicar em reconectar, o database reconecta caso a 
rede ja
esteja restabelecida. Mas todos os datasets
que estão abertos fecham. E é essa situação que acaba gerando varios 
problemas,
porque as tabelas que estavam abertas e sendo utilizadas, agora estão 
fechadas.

Esse é o meu problema.

Gostaria de saber se tem como fazer algo para que os datasets não fechem 
quando
haver uma falha de rede, ou reabrirem quando o database se reconectar, 
sei la.

Grato

Rodrigo


Em 2015-02-26 13:30, Gladiston Santana escreveu:
> A capacidade de resiliência de uma conexão em servidores remotos é na 
> maior
> parte igual entre todos.
> Mas você tem que estabelecer a diferença entre *perda* de conexão e 
> conexão
> *terminada*.
> Perda de conexão é algo físico, ocorre abruptamente em qualquer lugar, 
> se
> não for recuperada e isso não depende do seu programa, mas do protocolo 
> de
> rede então o servidor queima essa conexão dando rollback em tudo que 
> estava
> pendente alí. Isso é igual a todos os servidores RDBMS.
> Conexão terminada está associado a métodos de programação que 
> finalizaram a
> sessão por alguma razão que não envolve nenhum problema com o hardware.
> O IBO sabe quando a conexão é terminada e  programaticamente voce pode
> estabeceler uma nova conexão, mas o problema é que você tem de saber o 
> que
> se estava fazendo para recuperar-se da situação. Imagina que isso 
> aconteceu
> quando um loop populava uma lista de clientes, então o código que refaz 
> a
> conexão tem de ser sensivel ao contexto, você vai saber onde uma perda 
> de
> conexão vai ocorrer? pouco provável, então o mais sensato é seu codigo 
> que
> usa momentos de acesso a dados ser sensivel a perda da conexão e chamar
> metodos de recuperação. Ou seja, não basta ter um evento OnDisconect, 
> suas
> leituras ao banco tem que usar uma especie de try...except e contornar 
> o
> erro.
> 
> Programadores que usam objetos visuais colocam seus componentes de 
> conexão
> a banco de dados num datamodulo e os forms recebem apenas os 
> datasources,
> toda conexão/reconexão é avaliada num unico lugar, isto é, no 
> datamodulo.
> Com isso, diminuem a chance de problemas.
> Eu uso uma abordagem diferente, prefiro que cada form tenha sua própria
> conexão e resiliência, faço isso componetizando ou criando classes.
> Também há a possibilidade de programar usando datasnap, este sim, 
> resolve
> seu problema com resiliencia do começo ao fim. Tudo foi cacheado, e
> trabalha-se offline o tempo todo até encontrar um .apply
> 
> inte+
> 
> 
> Em 23 de fevereiro de 2015 18:44, <firebase em dominioinf.com.br> 
> escreveu:
> 
>> Bom dia Gladiston,
>> 
>> Obrigado pela resposta.
>> 
>> Sobre o commitaction não é o problema.
>> 
>> O problema é com a reconexão. O sistema fica com varios datasets 
>> abertos e
>> são muitos.
>> Quando ocorre uma queda de conexão, o sistema tenta reconectar e 
>> consegue,
>> o problema
>> é que quando o IBODatabase fecha, ele fecha todos os datasets que 
>> estão
>> ligados a ele,
>> e como não faço ideia de quantos sao e como estao abertos (suas 
>> instruções
>> sql), eu tenho que reiniciar o sistema
>> e abri-lo novamente, para todos os datasets se reorganizarem.
>> 
>> Isso não ocorre no mysql por exemplo. Quando a conexão cai, usando o 
>> zeos
>> com zconection.reconect o sistema reconecta
>> e todos os datasets que estavam abertos, permanecem abertos, e o 
>> sistema
>> refaz a ultima operação sem problema
>> nenhum.
>> 
>> Gostaria de saber se existe algo parecido no IBO.
> ______________________________________________
> 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




Mais detalhes sobre a lista de discussão lista