JobEndNotifier isnt synchronized, doesnt check state before acting
------------------------------------------------------------------
Key: HADOOP-3415
URL: https://issues.apache.org/jira/browse/HADOOP-3415
Project: Hadoop Core
Issue Type: Bug
Components: mapred
Affects Versions: 0.16.3
Reporter: Steve Loughran
Priority: Minor
JobEndNotifier is pretty hazardous inside.
1. the static startNotifier isnt synchronized, and doesnt check for being
already running before it creates a new worker thread. It should be
sycnhronized and a no-op if there is a live thread.
2. stopNotifier() should be a no-op if already stopped. It MUST NOT call
thread.interrupt() in such a state, as thread may be null.
3. the registerNotification method also assumes that the static queue is non
null.
Things would be a lot safer by making this class part of a JobTracker, not a
singleton with static methods, as then you could more safely make assumptions
about object state. This would not only eliminate a lot of reentrancy problems,
but tie the life of the notifier to that of its owner, the JobTracker.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.