Description
Currently when driver sends an event to kill a task, in IMRU task close handler, we set a flag for the Call() method to return from next iteration. If the Call() method stuck in reading messages, we throw IMRUTaskSystemException so that for the IMRU driver to receive IFailedTask. After the drive killed all the tasks, the drive will resubmit tasks if the system is recoverable.
In REEF-1447, the proposed solution for exceptions throw from task close handler is to fail the Evaluator. With the current IMRU task close handler, this would make all evaluators fail after the tasks are killed by driver. If we want to treat the exception in close handler as FailedEvaluator, we must gracefully handle the task close event instead of throw an exception.
I would like to re-propose the cancellation token solution we discussed before. Pass a cancellation token from task all the way to the NodeStruct.GetData(). When the task close handler is called, cancel the cancellation token for the task to return properly.
This will involve some GC/Network method signature changes, some are internal some are public.
Let me know if you have any concerns about this solution.
Attachments
Issue Links
- Is contained by
-
REEF-1223 IMRU Fault Tolerance - restart failed evaluators
- Resolved