You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-issues@hadoop.apache.org by "Patrick Kling (JIRA)" <ji...@apache.org> on 2010/11/02 04:45:28 UTC

[jira] Updated: (HADOOP-7001) Allow configuration changes without restarting configured nodes

     [ https://issues.apache.org/jira/browse/HADOOP-7001?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Patrick Kling updated HADOOP-7001:
----------------------------------

    Attachment: HADOOP-7001.3.patch

Here is an updated patch. Navigating to the ReconfigurationServlet for a Reconfigurable node now reloads the configuration files from disk and shows a list of all properties that have changed (along with their old and new values). If there are any changes to properties that cannot be reconfigured at run time, a warning is shown. After reviewing the changes, the admin can approve them, at which point they are applied through the methods in the Reconfigurable interface.

The code for computing the diff between the old and the new configuration is in ReconfigurationUtil, which should make it easy to add this functionality to existing command line tools.

For this revision, I didn't end up going with the PropertyChangeListener API, since there doesn't seem to be an ideal source object with which to register listeners while still keeping this change generic enough to be useful for all configured nodes in the system.

The review board revision corresponding to this patch can be found at: https://reviews.apache.org/r/21/

> Allow configuration changes without restarting configured nodes
> ---------------------------------------------------------------
>
>                 Key: HADOOP-7001
>                 URL: https://issues.apache.org/jira/browse/HADOOP-7001
>             Project: Hadoop Common
>          Issue Type: Task
>            Reporter: Patrick Kling
>            Assignee: Patrick Kling
>         Attachments: HADOOP-7001.2.patch, HADOOP-7001.3.patch, HADOOP-7001.patch, reconfigurable.patch
>
>
> Currently, changing the configuration on a node (e.g., the name node) requires that we restart the node. We propose a change that would allow us to make configuration changes without restarting. Nodes that support configuration changes at run time should implement the following interface:
> interface ChangeableConfigured extends Configured {
>    void changeConfiguration(Configuration newConf) throws ConfigurationChangeException;
> }
> The contract of changeConfiguration is as follows:
> The node will compare newConf to the existing configuration. For each configuration property that is set to a different value than in the current configuration, the node will either adjust its behaviour to conform to the new configuration or throw a ConfigurationChangeException if this change is not possible at run time. If a configuration property is set in the current configuration but is unset in newConf, the node should use its default value for this property. After a successful invocation of changeConfiguration, the behaviour of the configured node should be indistinguishable from the behaviour of a node that was configured with newConf at creation.
> It should be easy to change existing nodes to implement this interface. We can start by throwing the exception for all changes and then gradually start supporting more and more changes at run time. (We might even consider replacing Configured with ChangeableConfigured entirely, but I think the proposal above afford greater flexibility).

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