Sr-11-wyk-1.0-Slajd19
RPC w sytuacjach awaryjnych (1)
Pierwsza kategoria błędów polega na niemożliwości odnalezienia serwera przez klienta. Niemożliwość taka może wynikać z problemów z lokalizacją serwera, jego wyłączeniem lub z zastosowaniem nowego interfejsu programowego. Serwer, który zmienia interfejs dostępu do usług dokonuje jednocześnie aktualizacji pieńka pośredniczącego w dostępie do niego. Klient stosujący stary pieniek nie będzie w takiej sytuacji w stanie dołączyć się do takiego serwera. Przedstawione typy błędów należy w jakiś sposób obsłużyć, najlepiej z zachowaniem przezroczystości wywołania metody. Jest to możliwe przy zastosowaniu mechanizmu wyjątków w nowszych językach programowania, takich jak język Java. W języku C można w tym samym celu zastosować np. sygnały.
Druga kategoria błędów występujących podczas realizacji zdalnych wywołań procedur to zaginięcie komunikatu z żądaniem klienta. Jest to kategoria, której poprawne obsłużenie jest najprostsze. Klient wysyłając komunikat z żądaniem ustawia czasomierz i po upływie ustalonego czasu uznaje, że komunikat nie dotarł do serwera, ponieważ nie odebrano odpowiedzi. W efekcie następuje retransmisja żądania. Jeżeli komunikat faktycznie został zagubiony, serwer obsłuży retransmitowane żądanie tak, jakby to był oryginał. Jeżeli komunikat jednak dotarł do serwera, to mechanizm wywołań zdalnych należy rozbudować o środki do wykrywania powielonych wywołań. W przypadku przeciążonego serwera klient może po kilku retransmisjach zrezygnować z wysyłania kolejnych. Następuje wtedy przejście do obsługi błędu typy „brak dostępu do serwera”.