<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2015-03-01 0:12 GMT+00:00 Giorgio Zoppi <span dir="ltr"><<a href="mailto:giorgio.zoppi@gmail.com" target="_blank">giorgio.zoppi@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Si, <div>Grazie interessanti punti di vista. Il viaggio del apprendista stregone informatico inizia da consegnare:</div><div>1. codice bug free</div><div>2. codice bug free in qualsiasi condizione esterna.</div></div></blockquote><div><br></div><div>Io direi che qui terminerebbe, ammesso che ci si arrivasse mai. Salvo che le due condizioni sono equivalenti (se non hai bachi, non hai bachi manco in condizioni estreme; se hai bachi che si manifestano solo in condizioni estreme, vuole dire che comunque hai bachi). Mi sembra un po' una vana speranza: codice *senza* bachi sopra una certa dimensione non e' che ne veda molto.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>In questo caso si han di fronte tre cose:</div><div>1.  Programmer  bugs </div><div>2. Errori recuperabili (soft error)</div><div>3. Errori non recuperabili.</div><div><br></div><div>Bene. La domanda e' siccome mi interessa la vostra esperienza, come gestite i punti 2, 3.</div></div></blockquote><div><br></div><div>La classificazione che proponi non mi fa impazzire troppo (nel senso che e' molto difficile separare i punti 2 e 3 a priori... mentre e' relativamente chiaro come funziona a posteriori).</div><div><br></div><div>Faccio un esempio: devo parlare con un servizio. Allora vado a risolvere il nome sul DNS. Non ho risposta. Cosa e'? Non ho modo di saperlo. Probabilmente voglio una strategia di retry; se qualcuno si era mangiato il mio pacchetto UDP per caso, probabilmente avro' risposta. Mi sembra un esempio di errore recuperabile. Se invece tutta l'infrastruttura del DNS ha preso fuoco e sta malamente capitolando... diciamo che probabilmente sto per fronteggiare un fallimento totale. Ma ancora... non e' chiaramente un bug (non nel mio software); e' un fallimento esterno.</div><div><br></div><div>Diciamo che in generale quando sono in una condizione che non posso recuperare dentro l'applicativo quello che faccio e' fare in modo che le cose vengano escalate ad un umano (allarmi, ticket). Il resto quando possibile cerco di recuperarlo. Ma anche li... fare il retry di ogni chiamata ad un servizio fallita (seguendo la semantica HTTP) non e' sempre la cosa giusta. A volte e' meglio semplicemente fare fallire la chiamata di piu' alto livello e l'utente provera' a ricaricare, il motivo e' che altrimenti comunque la risposta all'utente e' troppo lenta (e c'e' caso che provera' a ricaricare comunque, con conseguenze consumo di risorse), inoltre rischia di sovraccaricare la rete e/o i servizi accessori. In altri casi il retry e' un salva vita. Poi ci sono casi in cui non ha senso.</div><div> <br></div></div>-- <br><div> .<br>..: -enrico-</div>
</div></div>