Standardize long-running, daemon-like, threads in hadoop daemons
----------------------------------------------------------------

                 Key: HADOOP-2062
                 URL: https://issues.apache.org/jira/browse/HADOOP-2062
             Project: Hadoop
          Issue Type: Improvement
          Components: dfs, mapred
            Reporter: Arun C Murthy
            Assignee: Arun C Murthy
             Fix For: 0.16.0


There are several long-running, independent, threads in hadoop daemons (atleast 
in the JobTracker - e.g. ExpireLaunchingTasks, ExpireTrackers, TaskCommitQueue 
etc.) which need to be alive as long as the daemon itself and hence should be 
impervious to various errors and exceptions (e.g. HADOOP-2051). 

Currently, each of them seem to be hand-crafted (again, specifically the 
JobTracker) and different from the other.

I propose we standardize on an implementation of a long-running, impervious, 
daemon-thread which can be used all over the shop. That thread should be 
explicitly shut-down by the hadoop daemon and shouldn't be vulnerable to any 
exceptions/errors.

This mostly likely will look like this:

{noformat}
public abstract class DaemonThread extends Thread {

  public static final Log LOG = LogFactory.getLog(DaemonThread.class);

  {
    setDaemon(true);                              // always a daemon
  }

  public abstract void innerLoop() throws InterruptedException;
  
  public final void run() {
    while (!isInterrupted()) {
      try {
        innerLoop();
      } catch (InterruptedException ie) {
        LOG.warn(getName() + " interrupted, exiting...");
      } catch (Throwable t) {
        LOG.error(getName() + " got an exception: " + 
                  StringUtils.stringifyException(t));
      }
    }
  }
}

{noformat}

In fact, we could probably hijack org.apache.hadoop.util.Daemon since it isn't 
used anywhere (Doug is it still used in nutch?) or atleast sub-class that.

Thoughts? Could someone from hdfs/hbase chime in?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to