You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ki...@apache.org on 2014/05/15 23:37:18 UTC

svn commit: r1595060 - in /hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common: CHANGES.txt src/main/java/org/apache/hadoop/http/HttpServer.java

Author: kihwal
Date: Thu May 15 21:37:18 2014
New Revision: 1595060

URL: http://svn.apache.org/r1595060
Log:
HADOOP-10588. Workaround for jetty6 acceptor startup issue. Contributed by Kihwal Lee.

Modified:
    hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/CHANGES.txt
    hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer.java

Modified: hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1595060&r1=1595059&r2=1595060&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/CHANGES.txt (original)
+++ hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/CHANGES.txt Thu May 15 21:37:18 2014
@@ -18,6 +18,8 @@ Release 0.23.11 - UNRELEASED
     HADOOP-7688. When a servlet filter throws an exception in init(..), 
     the Jetty server failed silently. (Uma Maheswara Rao G via kihwal)
 
+    HADOOP-10588. Workaround for jetty6 acceptor startup issue. (kihwal)
+
   OPTIMIZATIONS
     
   BUG FIXES

Modified: hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer.java?rev=1595060&r1=1595059&r2=1595060&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer.java (original)
+++ hadoop/common/branches/branch-0.23/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer.java Thu May 15 21:37:18 2014
@@ -281,9 +281,42 @@ public class HttpServer implements Filte
     return HttpServer.createDefaultChannelConnector();
   }
   
+
+  private static class SelectChannelConnectorWithSafeStartup
+      extends SelectChannelConnector {
+    public SelectChannelConnectorWithSafeStartup() {
+      super();
+    }
+
+    /* Override the broken isRunning() method (JETTY-1316). This bug is present
+     * in 6.1.26. For the versions wihout this bug, it adds insignificant
+     * overhead.
+     */
+    @Override
+    public boolean isRunning() {
+      if (super.isRunning()) {
+        return true;
+      }
+      // We might be hitting JETTY-1316. If the internal state changed from
+      // STARTING to STARTED in the middle of the check, the above call may
+      // return false.  Check it one more time.
+      LOG.warn("HttpServer Acceptor: isRunning is false. Rechecking.");
+      try {
+        Thread.sleep(10);
+      } catch (InterruptedException ie) {
+        // Mark this thread as interrupted. Someone up in the call chain
+        // might care.
+        Thread.currentThread().interrupt();
+      }
+      boolean runState = super.isRunning();
+      LOG.warn("HttpServer Acceptor: isRunning is " + runState);
+      return runState;
+    }
+  }
+
   @InterfaceAudience.Private
   public static Connector createDefaultChannelConnector() {
-    SelectChannelConnector ret = new SelectChannelConnector();
+    SelectChannelConnector ret = new SelectChannelConnectorWithSafeStartup();
     ret.setLowResourceMaxIdleTime(10000);
     ret.setAcceptQueueSize(128);
     ret.setResolveNames(false);