hadoop-common-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Steve Loughran (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HADOOP-3628) Add a lifecycle interface for Hadoop components: namenodes, job clients, etc.
Date Tue, 24 Jun 2008 10:38:45 GMT

    [ https://issues.apache.org/jira/browse/HADOOP-3628?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12607547#action_12607547
] 

Steve Loughran commented on HADOOP-3628:
----------------------------------------

The interface I've been using in my prototype. Init is for intialisation (and subclassing),
start() starts all worker threads; ping() implements internal health. terminate() shuts things
down. Everything throws exceptions except terminate(), that is required to do best effort
shutdown (catching, logging and continuing)

public interface HadoopComponentLifecycle {

    /**
     * Initialize; read in and validate values.
     * @throws IOException for any initialisation failure
     */
    public void init() throws IOException;

    /**
     * Start any work (in separate threads)
     *
     * @throws IOException for any initialisation failure
     */
    public void start() throws IOException;

    /**
     * Ping: only valid when started.
     * @throws IOException for any ping failure
     */
    void ping() throws IOException;

    /**
     * Shut down. This must be idempotent and turn errors into log/warn events -do your best
to clean up
     * even in the face of adversity.
     */
    void terminate();


    /**
     * Get the current state
     * @return the lifecycle state
     */
    State getLifecycleState();

    /**
     * The lifecycle state. Failure is a wierd one as it often takes a side effecting test
(or an oursider) to observe
     */
    public enum State {
        CREATED,
        INITIALIZED,
        STARTED,
        FAILED,
        TERMINATED
    }
}


> Add a lifecycle interface for Hadoop components: namenodes, job clients, etc.
> -----------------------------------------------------------------------------
>
>                 Key: HADOOP-3628
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3628
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: dfs, mapred
>    Affects Versions: 0.19.0
>            Reporter: Steve Loughran
>
> I'd like to propose we have a standard interface for hadoop components, the things that
get started or stopped when you bring up a namenode. currently, some of these classes have
a stop() or shutdown() method, with no standard name/interface, but no way of seeing if they
are live, checking their health of shutting them down reliably. Indeed, there is a tendency
for the spawned threads to not want to die; to require the entire process to be killed to
stop the workers. 
> Having a standard interface would make it easier for 
>  * management tools to manage the different things
>  * monitoring the state of things
>  * subclassing
> The latter is interesting as right now TaskTracker and JobTracker start up threads in
their constructor; that's very dangerous as subclasses may have their methods called before
they are full initialised. Adding this interface would be the right time to clean up the startup
process so that subclassing is less risky.

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


Mime
View raw message