This method is called when system detects that completion of this
job can no longer alter the overall outcome (for example, when parent task
has already reduced the results). Job is also cancelled when
IgniteFuture.cancel() is called.
Note that job cancellation is only a hint, and just like with
Thread.interrupt() method, it is really up to the actual job
instance to gracefully finish execution and exit.