protected void onFailure(FetchException e, boolean forceFatal, ClientContext context) { if(logMINOR) Logger.minor(this, "onFailure( "+e+" , "+forceFatal+")", e); if(parent.isCancelled() || cancelled) { if(logMINOR) Logger.minor(this, "Failing: cancelled"); e = new FetchException(FetchExceptionMode.CANCELLED); forceFatal = true; } if(!(e.isFatal() || forceFatal) ) { if(retry(context)) { if(logMINOR) Logger.minor(this, "Retrying"); return; } } // :( unregisterAll(context); synchronized(this) { finished = true; } if(e.isFatal() || forceFatal) parent.fatallyFailedBlock(context); else parent.failedBlock(context); rcb.onFailure(e, this, context); }