[ 
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

        

Reply via email to