Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Invalid
-
0.19.0
-
None
-
None
-
None
Description
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.
Attachments
Attachments
Issue Links
- is part of
-
HDFS-326 Add a lifecycle interface for Hadoop components: namenodes, job clients, etc.
- Resolved