// Exception occurred when processing this task locally, set exception and // send it back to the caller. Can be called lots of times (e.g., once per // MRTask.map call that throws). @Override public boolean onExceptionalCompletion(Throwable ex, CountedCompleter caller) { if (_computed) return false; synchronized (this) { // Filter dup calls to onExCompletion if (_computed) return false; _computed = true; } _dt.setException(ex); sendAck(); return false; }