Complete a job. This will run the callback if
- the job is done
- there is a callback
- the callback has not yet been called
There is a small chance for a race condition if two callers run
this at the same time. That should never happen.
We use a Hadoop config var to notify this class on the completion
of a job. Hadoop will call us multiple times in the event of
failure. Even if the failure is that the client callback failed.
See LauncherDelegator for the HADOOP_END_RETRY* vars that are set.