next up previous contents index
Next: Persistência Up: Distribuição Previous: Mecanismo de Transporte

Interrupções do Canal

 

Na ocorrência de quebra do canal entre um CIF e o respectivo SIF, as comunicações entre eles ficam obviamente impossibilitadas, pelo menos temporariamente. Tentativas de reestabelecimento podem ser feitas por parte do nível imediatamente superior, onde residem o GSvc, GClt e GDist, por forma a que a ligação perdida seja reestabelecida.

Não se encontra definida qual a forma de tratar estes casos. O modelo de distribuição, apresentado acima, não prevê um mecanismo de suporte a faltas. Existem várias hipóteses de acção numa situação destas.

Uma possibilidade é abortar o lado do cliente uma vez que, para ele, prosseguir, sem o resultado da operação interrompida, poderia corresponder a uma situação incorrecta. Por outro lado, no caso de uma invocação remota típica, as relações cliente-servidor encontram-se muitas vezes encadeadas, estando os vários CIFs e SIFs repartidos por ambos os contextos. Assim sendo, a quebra de uma ligação iria culminar na morte de ambos os contextos, propagando-se, possivelmente a outros dependentes deles. Este caso, embora extremo, não faz com a transparência do modelo seja comprometida. Além das concessões necessárias feitas a alguns dos aspectos mencionados acima.

Outra possibilidade, porventura mais adequada, seria a utilização de excepções para tratar estes problemas. Assim, as várias classes teriam que incluir nos respectivos códigos suporte para upcalls não transparentes, em que o utilizador iria colocar as acções específicas de tratamento de erros de comunicação. Sendo mais elegante, está, contudo menos adaptada ao modelo geral da aplicação, se bem que algumas acomodações seriam possíveis.



David M. M. de Matos
Thu Jun 29 14:58:09 MET DST 1995