private boolean maybeFail() { // Might have failed. // Have to check segments before checking for failure because of race conditions. if(allSegmentsCompletedOrFailed()) { InsertException e = null; synchronized(this) { if(failing == null) return false; e = failing; if(hasFinished()) { if(logMINOR) Logger.minor(this, "Maybe fail returning true because already finished"); return true; } status = Status.FAILED; } if(logMINOR) Logger.minor(this, "Maybe fail returning true with error "+e); callback.onFailed(e); return true; } else { return false; } }