[
http://issues.apache.org/jira/browse/HADOOP-375?page=comments#action_12423263 ]
Doug Cutting commented on HADOOP-375:
-------------------------------------
I'm confused by the 'started' field added to StatusHttpServer. It is set at
the end of the 'start' method. Then in DataNode, you add the code:
this.infoServer.start();
+ while (!this.infoServer.started()) {
+ try {
+ wait(1);
+ } catch (InterruptedException ie){}
+ }
+ infoPort = this.infoServer.getPort();
Won't started() always be true here? Why the loop? Why call wait(1)? Wait()
is used with notify(), and there are no calls to notify(), and a 1ms wait makes
for a rather tight loop. Did you mean Thread.sleep(1000)?
> Introduce a way for datanodes to register their HTTP info ports with the
> NameNode
> ---------------------------------------------------------------------------------
>
> Key: HADOOP-375
> URL: http://issues.apache.org/jira/browse/HADOOP-375
> Project: Hadoop
> Issue Type: Bug
> Components: dfs
> Affects Versions: 0.5.0
> Reporter: Devaraj Das
> Assigned To: Devaraj Das
> Attachments: content_browsing.new.patch, content_browsing.new.patch
>
>
> If we have multiple datanodes within a single machine the Jetty servers
> (other than the first one) won't be able to bind to the fixed HTTP port. So,
> one solution is to have the datanodes pick a free port (starting from a
> configured port value) and then inform namenode about it so that the namenode
> can then do redirects, etc.
> Johan Oskarson reported this problem.
> If a computer have a second dfs data dir in the config it doesn't start
> properly because of:
> Exception in thread "main" java.io.IOException: Problem starting http server
> at
> org.apache.hadoop.mapred.StatusHttpServer.start(StatusHttpServer.java:182)
> at org.apache.hadoop.dfs.DataNode.<init>(DataNode.java:170)
> at
> org.apache.hadoop.dfs.DataNode.makeInstanceForDir(DataNode.java:1045)
> at org.apache.hadoop.dfs.DataNode.run(DataNode.java:999)
> at org.apache.hadoop.dfs.DataNode.runAndWait(DataNode.java:1015)
> at org.apache.hadoop.dfs.DataNode.main(DataNode.java:1066)
> Caused by: org.mortbay.util.MultiException[java.net.BindException: Address
> already in use]
> at org.mortbay.http.HttpServer.doStart(HttpServer.java:731)
> at org.mortbay.util.Container.start(Container.java:72)
> at
> org.apache.hadoop.mapred.StatusHttpServer.start(StatusHttpServer.java:159)
> ... 5 more
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira