Kihwal Lee commented on HDFS-13195:

The HttpServer2's conf servlet is supposed to show the http server conf. And it 
is common to use a separate instance of conf for a service to avoid unintended 
runtime conf change propagation. As it is a common pattern and code, I do not 
feel comfortable about changing it only for datanode.  We can discuss about a 
general semantics change of the conf servlet here if necessary. E.g. separate 
the conf that the http server uses from what it serves through the servlet. 
That way, each hadoop service can set the conf instance that it wants to show, 
or it can even decide to show nothing.  Optionally, we can also introduce a 
separate servlet for DatanodeHttpServer, just to show the datanode config.

> DataNode conf page  cannot display the current value after reconfig
> -------------------------------------------------------------------
>                 Key: HDFS-13195
>                 URL: https://issues.apache.org/jira/browse/HDFS-13195
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: datanode
>    Affects Versions: 2.7.1
>            Reporter: maobaolong
>            Assignee: maobaolong
>            Priority: Minor
>             Fix For: 2.7.1
>         Attachments: HDFS-13195-branch-2.7.001.patch, HDFS-13195.001.patch
> Now the branch-2.7 support dfs.datanode.data.dir reconfig, but after i 
> reconfig this key, the conf page's value is still the old config value.
> The reason is that:
> {code:java}
> public DatanodeHttpServer(final Configuration conf,
>       final DataNode datanode,
>       final ServerSocketChannel externalHttpChannel)
>     throws IOException {
>     this.conf = conf;
>     Configuration confForInfoServer = new Configuration(conf);
>     confForInfoServer.setInt(HttpServer2.HTTP_MAX_THREADS, 10);
>     HttpServer2.Builder builder = new HttpServer2.Builder()
>         .setName("datanode")
>         .setConf(confForInfoServer)
>         .setACL(new AccessControlList(conf.get(DFS_ADMIN, " ")))
>         .hostName(getHostnameForSpnegoPrincipal(confForInfoServer))
>         .addEndpoint(URI.create("http://localhost:0";))
>         .setFindPort(true);
>     this.infoServer = builder.build();
> {code}
> The confForInfoServer is a new configuration instance, while the dfsadmin 
> reconfig the datanode's config, the config result cannot reflect to 
> confForInfoServer, so we should use the datanode's conf.

This message was sent by Atlassian JIRA

To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to