[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