wtorek, stycznia 25, 2011

Do 3 razy sztuka ;-)

Właśnie skończyłem implementować w Bloggeroidzie "ficzer" polegający na tym, że w razie niepowodzenia operacje sieciowe będą powtarzane. Dokładniej, operacja związana z siecią zostanie zakończona gdy się uda, albo gdy 3 razy się nie uda, ale wtedy wyrzuci wyjątek związany z ostatnią przyczyną niepowodzenia.
Szczerze to trochę już sieciowych rzeczy robię i zwykle jechałem na optymistycznym założeniu, że zadziała i zwykle działało ;-)
W mobile tak dobrze nie jest, bo co jakiś czas dostaję raporty o błędach, które zwykle znikają gdy się spróbuje po raz 2.

Oczywiście istnieją obawy, ba nawet pewność, że skutkiem tego może być to, że niektóre operacje choć będą generowały błędy to będą się udawały... i skończy się na tym, że czasem zamiast 1 postu opublikują się 3 o tej samej treści ;-)

No i jest jeszcze to, że niektóre błędy, np. taki który jest związany z tym, że by móc skorzystać z Picasa Web Albums to trzeba zatwierdzić ich Terms Of Service, pojawi się na pewno za każdym razem z 3 prób i trochę głupio 3 razy próbować gdy wiadomo jaki będzie efekt ;-)

W ogóle w pisaniu często obsługa właśnie sytuacji wyjątkowych to przysłowiowy "pain in the ass", bo w 99% przypadków wszystko działa perfect, ale trzeba się przygotować na sytuacji, które nie powinny się zdarzyć i trzeba jeszcze starać się je ukryć przed użytkownikiem, bo dla niego problem z serwerem czy siecią to nie problem z serwerem czy siecią, a problem ze "źle napisaną aplikacją".
A jak już jest tak, że np. publikując post ze zdjęciami najpierw trzeba wrzucić zdjęcia, a później sam post to jest problem co zrobić jeśli pierwsze się uda, a drugie nie? ;-) Najzdrowiej byłoby wrócić do stanu sprzed operacji, ale to oznacza kolejne ataki serwerów i istnieje ryzyko, że to iż nie udała się ostatnia operacja może być związane z siecią, a wtedy próby kasowania się zapewne nie udadzą ;-)


Podobne postybeta
Google ma dziś zły dzień? ;-)
Niehackerski dzień ;-)
YouTube/Facebook/Instagram dla jedzenia by nie przeszedł ;-)
Podwójne standardy - Tybet a Arabia Saudyjska.
Język Go dla Windows :-)

2 komentarze:

  1. `Oczywiście istnieją obawy, ba nawet pewność, że skutkiem tego może być to, że niektóre operacje choć będą generowały błędy to będą się udawały`

    możesz powiedzieć, kiedy takie coś ma szansę się wydarzyć? zaniepokoiłeś mnie

    OdpowiedzUsuń
  2. Nie ja pisałem stronę serwerową, więc nie mogę mieć pewności co do tego jak działa ;-) Jest możliwe, że serwer w jakimś przypadku wyrzuci błąd już po tym jak dokona publikacji, albo znów serwer zrobi wszystko OK, ale połączenie się urwie po tym gdzieś w sieci, a w wyniku mój program dostanie info o błędzie.
    Wszystko jest możliwe i należy brać to pod uwagę ;-)
    Oczywiście takie zdarzenie powinno być o wiele mniej prawdopodobne niż problem w transmisji.

    OdpowiedzUsuń