Repository: storm
Updated Branches:
  refs/heads/master 29f845b4a -> a1ab78b2b


[STORM-1927] upgrade to jetty 9


Project: http://git-wip-us.apache.org/repos/asf/storm/repo
Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/44855ba6
Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/44855ba6
Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/44855ba6

Branch: refs/heads/master
Commit: 44855ba60e616ebd35bef9f4b7a5ca9013bd5c7e
Parents: d0c5457
Author: Ethan Li <[email protected]>
Authored: Tue Oct 24 17:12:56 2017 -0500
Committer: Ethan Li <[email protected]>
Committed: Fri Oct 27 14:13:41 2017 -0500

----------------------------------------------------------------------
 flux/flux-examples/pom.xml                      |   4 +
 pom.xml                                         |  10 +-
 storm-client/pom.xml                            |   6 +-
 storm-core/pom.xml                              |   6 +-
 storm-core/src/clj/org/apache/storm/ui/core.clj |   6 +-
 .../src/clj/org/apache/storm/ui/helpers.clj     |   8 --
 .../src/jvm/org/apache/storm/ui/UIHelpers.java  | 104 +++++++++++--------
 .../org/apache/storm/daemon/nimbus/Nimbus.java  |   2 +-
 .../apache/storm/daemon/drpc/DRPCServer.java    |  10 +-
 9 files changed, 90 insertions(+), 66 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/storm/blob/44855ba6/flux/flux-examples/pom.xml
----------------------------------------------------------------------
diff --git a/flux/flux-examples/pom.xml b/flux/flux-examples/pom.xml
index 7204270..3a15f2e 100644
--- a/flux/flux-examples/pom.xml
+++ b/flux/flux-examples/pom.xml
@@ -86,6 +86,10 @@
                     <groupId>javax.servlet</groupId>
                     <artifactId>servlet-api</artifactId>
                 </exclusion>
+                <exclusion>
+                    <groupId>javax.servlet</groupId>
+                    <artifactId>javax.servlet-api</artifactId>
+                </exclusion>
             </exclusions>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/storm/blob/44855ba6/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 8b84873..0b740c7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -250,9 +250,9 @@
         <curator.version>4.0.0</curator.version>
         <curator-test.version>2.12.0</curator-test.version>
         <json-simple.version>1.1</json-simple.version>
-        <ring.version>1.3.1</ring.version>
-        <ring-json.version>0.3.1</ring-json.version>
-        <jetty.version>7.6.13.v20130916</jetty.version>
+        <ring.version>1.6.2</ring.version>
+        <ring-json.version>0.4.0</ring-json.version>
+        <jetty.version>9.4.7.v20170914</jetty.version>
         <clojure.tools.logging.version>0.2.3</clojure.tools.logging.version>
         
<clojure.math.numeric-tower.version>0.0.1</clojure.math.numeric-tower.version>
         <carbonite.version>1.5.0</carbonite.version>
@@ -281,7 +281,7 @@
         <hdfs.version>${hadoop.version}</hdfs.version>
         <hbase.version>1.1.0</hbase.version>
         <kryo.version>3.0.3</kryo.version>
-        <servlet.version>2.5</servlet.version>
+        <servlet.version>3.1.0</servlet.version>
         <joda-time.version>2.3</joda-time.version>
         <thrift.version>0.9.3</thrift.version>
         <junit.version>4.11</junit.version>
@@ -726,7 +726,7 @@
             </dependency>
             <dependency>
                 <groupId>javax.servlet</groupId>
-                <artifactId>servlet-api</artifactId>
+                <artifactId>javax.servlet-api</artifactId>
                 <version>${servlet.version}</version>
             </dependency>
             <dependency>

http://git-wip-us.apache.org/repos/asf/storm/blob/44855ba6/storm-client/pom.xml
----------------------------------------------------------------------
diff --git a/storm-client/pom.xml b/storm-client/pom.xml
index b37f458..851206b 100644
--- a/storm-client/pom.xml
+++ b/storm-client/pom.xml
@@ -87,6 +87,10 @@
                     <groupId>javax.servlet</groupId>
                     <artifactId>servlet-api</artifactId>
                 </exclusion>
+                <exclusion>
+                    <groupId>javax.servlet</groupId>
+                    <artifactId>javax.servlet-api</artifactId>
+                </exclusion>
             </exclusions>
         </dependency>
 
@@ -158,7 +162,7 @@
         <!-- servlet -->
         <dependency>
             <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
+            <artifactId>javax.servlet-api</artifactId>
         </dependency>
 
         <!-- belows are transitive dependencies which are version managed in 
storm pom -->

http://git-wip-us.apache.org/repos/asf/storm/blob/44855ba6/storm-core/pom.xml
----------------------------------------------------------------------
diff --git a/storm-core/pom.xml b/storm-core/pom.xml
index 7f5b6f2..70abfbc 100644
--- a/storm-core/pom.xml
+++ b/storm-core/pom.xml
@@ -186,6 +186,10 @@
                     <groupId>javax.servlet</groupId>
                     <artifactId>servlet-api</artifactId>
                 </exclusion>
+                <exclusion>
+                    <groupId>javax.servlet</groupId>
+                    <artifactId>javax.servlet-api</artifactId>
+                </exclusion>
             </exclusions>
         </dependency>
         <dependency>
@@ -276,7 +280,7 @@
         </dependency>
         <dependency>
             <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
+            <artifactId>javax.servlet-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>

http://git-wip-us.apache.org/repos/asf/storm/blob/44855ba6/storm-core/src/clj/org/apache/storm/ui/core.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/org/apache/storm/ui/core.clj 
b/storm-core/src/clj/org/apache/storm/ui/core.clj
index 574c934..247ff4a 100644
--- a/storm-core/src/clj/org/apache/storm/ui/core.clj
+++ b/storm-core/src/clj/org/apache/storm/ui/core.clj
@@ -1616,6 +1616,7 @@
       (UIHelpers/stormRunJetty  (int (conf UI-PORT))
                                 (conf UI-HOST)
                                 https-port
+                                header-buffer-size
                                 (reify IConfigurator
                                   (execute [this server]
                                     (UIHelpers/configSsl server
@@ -1628,9 +1629,8 @@
                                       https-ts-password
                                       https-ts-type
                                       https-need-client-auth
-                                      https-want-client-auth)
-                                    (doseq [connector (.getConnectors server)]
-                                      (.setRequestHeaderSize connector 
header-buffer-size))
+                                      https-want-client-auth
+                                      header-buffer-size)
                                     (UIHelpers/configFilter server 
(ring.util.servlet/servlet app) filters-confs)))))
    (catch Exception ex
      (log-error ex))))

http://git-wip-us.apache.org/repos/asf/storm/blob/44855ba6/storm-core/src/clj/org/apache/storm/ui/helpers.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/org/apache/storm/ui/helpers.clj 
b/storm-core/src/clj/org/apache/storm/ui/helpers.clj
index ac1ecd1..5764529 100644
--- a/storm-core/src/clj/org/apache/storm/ui/helpers.clj
+++ b/storm-core/src/clj/org/apache/storm/ui/helpers.clj
@@ -28,14 +28,6 @@
   (:import [org.apache.storm.logging.filters AccessLoggingFilter])
   (:import [java.util EnumSet]
            [java.net URLEncoder])
-  (:import [org.eclipse.jetty.server Server]
-           [org.eclipse.jetty.server.nio SelectChannelConnector]
-           [org.eclipse.jetty.server.ssl SslSocketConnector]
-           [org.eclipse.jetty.servlet ServletHolder FilterMapping]
-           [org.eclipse.jetty.util.ssl SslContextFactory]
-           [org.eclipse.jetty.server DispatcherType]
-           [org.eclipse.jetty.servlets CrossOriginFilter]
-           (org.json.simple JSONValue))
   (:require [ring.util servlet]
             [ring.util.response :as response])
   (:require [compojure.route :as route]

http://git-wip-us.apache.org/repos/asf/storm/blob/44855ba6/storm-core/src/jvm/org/apache/storm/ui/UIHelpers.java
----------------------------------------------------------------------
diff --git a/storm-core/src/jvm/org/apache/storm/ui/UIHelpers.java 
b/storm-core/src/jvm/org/apache/storm/ui/UIHelpers.java
index d43873f..7555998 100644
--- a/storm-core/src/jvm/org/apache/storm/ui/UIHelpers.java
+++ b/storm-core/src/jvm/org/apache/storm/ui/UIHelpers.java
@@ -19,29 +19,33 @@ package org.apache.storm.ui;
 
 import com.google.common.base.Joiner;
 import com.google.common.collect.ImmutableMap;
-
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.net.URLEncoder;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import javax.servlet.DispatcherType;
+import javax.servlet.Servlet;
 import org.apache.storm.generated.ExecutorInfo;
 import org.apache.storm.logging.filters.AccessLoggingFilter;
 import org.apache.storm.utils.ObjectReader;
-import org.eclipse.jetty.server.Connector;
-import org.eclipse.jetty.server.DispatcherType;
+import org.eclipse.jetty.http.HttpVersion;
+import org.eclipse.jetty.server.HttpConfiguration;
+import org.eclipse.jetty.server.HttpConnectionFactory;
+import org.eclipse.jetty.server.SecureRequestCustomizer;
 import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.nio.SelectChannelConnector;
-import org.eclipse.jetty.server.ssl.SslSocketConnector;
+import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.server.SslConnectionFactory;
 import org.eclipse.jetty.servlet.FilterHolder;
-import org.eclipse.jetty.servlet.FilterMapping;
 import org.eclipse.jetty.servlet.ServletContextHandler;
 import org.eclipse.jetty.servlet.ServletHolder;
 import org.eclipse.jetty.servlets.CrossOriginFilter;
 import org.eclipse.jetty.util.ssl.SslContextFactory;
 import org.json.simple.JSONValue;
 
-import javax.servlet.Servlet;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.net.URLEncoder;
-import java.util.*;
-
 public class UIHelpers {
 
     private static final Object[][] PRETTY_SEC_DIVIDERS = {
@@ -110,20 +114,20 @@ public class UIHelpers {
                 "errorMessage", String.format("User %s is not authorized.", 
user));
     }
 
-    private static SslSocketConnector mkSslConnector(Integer port, String 
ksPath, String ksPassword, String ksType,
+    private static ServerConnector mkSslConnector(Server server, Integer port, 
String ksPath, String ksPassword, String ksType,
                                                      String keyPassword, 
String tsPath, String tsPassword, String tsType,
-                                                     Boolean needClientAuth, 
Boolean wantClientAuth) {
+                                                     Boolean needClientAuth, 
Boolean wantClientAuth, Integer headerBufferSize) {
         SslContextFactory factory = new SslContextFactory();
         factory.setExcludeCipherSuites("SSL_RSA_WITH_RC4_128_MD5", 
"SSL_RSA_WITH_RC4_128_SHA");
         factory.setExcludeProtocols("SSLv3");
-        factory.setAllowRenegotiate(false);
+        factory.setRenegotiationAllowed(false);
         factory.setKeyStorePath(ksPath);
         factory.setKeyStoreType(ksType);
         factory.setKeyStorePassword(ksPassword);
         factory.setKeyManagerPassword(keyPassword);
 
         if (tsPath != null && tsPassword != null && tsType != null) {
-            factory.setTrustStore(tsPath);
+            factory.setTrustStorePath(tsPath);
             factory.setTrustStoreType(tsType);
             factory.setTrustStorePassword(tsPassword);
         }
@@ -134,16 +138,31 @@ public class UIHelpers {
             factory.setWantClientAuth(true);
         }
 
-        SslSocketConnector sslConnector = new SslSocketConnector(factory);
+        HttpConfiguration httpsConfig = new HttpConfiguration();
+        httpsConfig.addCustomizer(new SecureRequestCustomizer());
+        if (null != headerBufferSize) {
+            httpsConfig.setRequestHeaderSize(headerBufferSize);
+        }
+        ServerConnector sslConnector = new ServerConnector(server,
+                new SslConnectionFactory(factory, 
HttpVersion.HTTP_1_1.asString()),
+                new HttpConnectionFactory(httpsConfig));
         sslConnector.setPort(port);
         return sslConnector;
     }
 
     public static void configSsl(Server server, Integer port, String ksPath, 
String ksPassword, String ksType,
-                                 String keyPassword, String tsPath, String 
tsPassword, String tsType, Boolean needClientAuth, Boolean wantClientAuth) {
+                                 String keyPassword, String tsPath, String 
tsPassword, String tsType,
+                                 Boolean needClientAuth, Boolean 
wantClientAuth) {
+        configSsl(server, port, ksPath, ksPassword, ksType, keyPassword,
+                tsPath, tsPassword, tsType, needClientAuth, wantClientAuth, 
null);
+    }
+
+    public static void configSsl(Server server, Integer port, String ksPath, 
String ksPassword, String ksType,
+                                 String keyPassword, String tsPath, String 
tsPassword, String tsType,
+                                 Boolean needClientAuth, Boolean 
wantClientAuth, Integer headerBufferSize) {
         if (port > 0) {
-            server.addConnector(mkSslConnector(port, ksPath, ksPassword, 
ksType, keyPassword,
-                    tsPath, tsPassword, tsType, needClientAuth, 
wantClientAuth));
+            server.addConnector(mkSslConnector(server, port, ksPath, 
ksPassword, ksType, keyPassword,
+                    tsPath, tsPassword, tsType, needClientAuth, 
wantClientAuth, headerBufferSize));
         }
     }
 
@@ -197,37 +216,38 @@ public class UIHelpers {
                 } else {
                     filterHolder.setInitParameters(new HashMap<String, 
String>());
                 }
-                context.addFilter(filterHolder, "/*", FilterMapping.ALL);
+                context.addFilter(filterHolder, "/*", 
EnumSet.allOf(DispatcherType.class));
             }
         }
         context.addFilter(mkAccessLoggingFilterHandle(), "/*", 
EnumSet.allOf(DispatcherType.class));
     }
-    
-    private static Server removeNonSslConnector(Server server) {
-        for (Connector c : server.getConnectors()) {
-            if (c != null && !(c instanceof SslSocketConnector)) {
-                server.removeConnector(c);
-            }
-        }
-        return server;
-    }
 
     /**
      * Construct a Jetty Server instance.
      */
     public static Server jettyCreateServer(Integer port, String host, Integer 
httpsPort) {
-        SelectChannelConnector connector = new SelectChannelConnector();
-        connector.setPort(ObjectReader.getInt(port, 80));
-        connector.setHost(host);
-        connector.setMaxIdleTime(200000);
+        return jettyCreateServer(port, host, httpsPort, null);
+    }
 
+    /**
+     * Construct a Jetty Server instance.
+     */
+    public static Server jettyCreateServer(Integer port, String host, Integer 
httpsPort, Integer headerBufferSize) {
         Server server = new Server();
-        server.addConnector(connector);
-        server.setSendDateHeader(true);
 
-        if (httpsPort != null && httpsPort > 0) {
-            removeNonSslConnector(server);
+        if (httpsPort == null || httpsPort <= 0) {
+            HttpConfiguration httpConfig = new HttpConfiguration();
+            httpConfig.setSendDateHeader(true);
+            if (null != headerBufferSize) {
+                httpConfig.setRequestHeaderSize(headerBufferSize);
+            }
+            ServerConnector httpConnector = new ServerConnector(server, new 
HttpConnectionFactory(httpConfig));
+            httpConnector.setPort(ObjectReader.getInt(port, 80));
+            httpConnector.setIdleTimeout(200000);
+            httpConnector.setHost(host);
+            server.addConnector(httpConnector);
         }
+
         return server;
     }
 
@@ -235,16 +255,16 @@ public class UIHelpers {
      * Modified version of run-jetty
      * Assumes configurator sets handler.
      */
-    public static void stormRunJetty(Integer port, String host, Integer 
httpsPort, IConfigurator configurator) throws Exception {
-        Server s = jettyCreateServer(port, host, httpsPort);
+    public static void stormRunJetty(Integer port, String host, Integer 
httpsPort, Integer headerBufferSize, IConfigurator configurator) throws 
Exception {
+        Server s = jettyCreateServer(port, host, httpsPort, headerBufferSize);
         if (configurator != null) {
             configurator.execute(s);
         }
         s.start();
     }
 
-    public static void stormRunJetty(Integer port, IConfigurator configurator) 
throws Exception {
-        stormRunJetty(port, null, null, configurator);
+    public static void stormRunJetty(Integer port, Integer headerBufferSize, 
IConfigurator configurator) throws Exception {
+        stormRunJetty(port, null, null, headerBufferSize, configurator);
     }
 
     public static String wrapJsonInCallback(String callback, String response) {

http://git-wip-us.apache.org/repos/asf/storm/blob/44855ba6/storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java
----------------------------------------------------------------------
diff --git 
a/storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java 
b/storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java
index 3b914ba..73ceb42 100644
--- a/storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java
+++ b/storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java
@@ -185,7 +185,7 @@ import org.slf4j.LoggerFactory;
 
 public class Nimbus implements Iface, Shutdownable, DaemonCommon {
     private static final Logger LOG = LoggerFactory.getLogger(Nimbus.class);
-    
+
     //    Metrics
     private static final Meter submitTopologyWithOptsCalls = 
StormMetricsRegistry.registerMeter("nimbus:num-submitTopologyWithOpts-calls");
     private static final Meter submitTopologyCalls = 
StormMetricsRegistry.registerMeter("nimbus:num-submitTopology-calls");

http://git-wip-us.apache.org/repos/asf/storm/blob/44855ba6/storm-webapp/src/main/java/org/apache/storm/daemon/drpc/DRPCServer.java
----------------------------------------------------------------------
diff --git 
a/storm-webapp/src/main/java/org/apache/storm/daemon/drpc/DRPCServer.java 
b/storm-webapp/src/main/java/org/apache/storm/daemon/drpc/DRPCServer.java
index e3ef31c..2dc5434 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/drpc/DRPCServer.java
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/drpc/DRPCServer.java
@@ -20,11 +20,11 @@ package org.apache.storm.daemon.drpc;
 
 import com.codahale.metrics.Meter;
 import com.google.common.annotations.VisibleForTesting;
-
 import java.util.Arrays;
+import java.util.EnumSet;
 import java.util.List;
 import java.util.Map;
-
+import javax.servlet.DispatcherType;
 import org.apache.storm.Config;
 import org.apache.storm.DaemonConfig;
 import org.apache.storm.daemon.drpc.webapp.DRPCApplication;
@@ -41,8 +41,8 @@ import org.apache.storm.ui.UIHelpers;
 import org.apache.storm.utils.ObjectReader;
 import org.apache.storm.utils.Utils;
 import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ServerConnector;
 import org.eclipse.jetty.servlet.FilterHolder;
-import org.eclipse.jetty.servlet.FilterMapping;
 import org.eclipse.jetty.servlet.ServletContextHandler;
 import org.eclipse.jetty.servlet.ServletHolder;
 import org.glassfish.jersey.servlet.ServletContainer;
@@ -64,7 +64,7 @@ public class DRPCServer implements AutoCloseable {
     public static void addRequestContextFilter(ServletContextHandler context, 
String configName, Map<String, Object> conf) {
         IHttpCredentialsPlugin auth = AuthUtils.GetHttpCredentialsPlugin(conf, 
(String)conf.get(configName));
         ReqContextFilter filter = new ReqContextFilter(auth);
-        context.addFilter(new FilterHolder(filter), "/*", FilterMapping.ALL);
+        context.addFilter(new FilterHolder(filter), "/*", 
EnumSet.allOf(DispatcherType.class));
     }
  
     private static ThriftServer mkHandlerServer(final DistributedRPC.Iface 
service, Integer port, Map<String, Object> conf) {
@@ -210,7 +210,7 @@ public class DRPCServer implements AutoCloseable {
     public int getHttpServerPort() {
         assert httpServer.getConnectors().length == 1;
         
-        return httpServer.getConnectors()[0].getLocalPort();
+        return ((ServerConnector) 
(httpServer.getConnectors()[0])).getLocalPort();
     }
 
     /**

Reply via email to