AMBARI-14231. Upgrading Ambari Jetty Server from Jetty 8 to Jetty 9. (Nisarg, 
Ashwin, Ravi and Varun via Jaimin)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/9d39ab2e
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/9d39ab2e
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/9d39ab2e

Branch: refs/heads/branch-dev-patch-upgrade
Commit: 9d39ab2e4cfb8534ce18acbb3589edfa475152bc
Parents: b880a7d
Author: Jaimin Jetly <jai...@hortonworks.com>
Authored: Thu Jan 14 17:52:01 2016 -0800
Committer: Jaimin Jetly <jai...@hortonworks.com>
Committed: Thu Jan 14 17:52:11 2016 -0800

----------------------------------------------------------------------
 ambari-funtest/pom.xml                          |   8 +-
 ambari-project/pom.xml                          |  24 +--
 ambari-server/pom.xml                           |  25 ++-
 .../ambari/server/api/AmbariErrorHandler.java   |  14 +-
 .../ambari/server/controller/AmbariServer.java  | 181 ++++++++++++-------
 .../server/api/AmbariErrorHandlerTest.java      |  11 +-
 .../controller/AmbariHandlerListTest.java       |   4 +-
 ambari-web/pom.xml                              |  17 --
 8 files changed, 161 insertions(+), 123 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/9d39ab2e/ambari-funtest/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-funtest/pom.xml b/ambari-funtest/pom.xml
index d84b1c8..b9c591f 100644
--- a/ambari-funtest/pom.xml
+++ b/ambari-funtest/pom.xml
@@ -311,12 +311,8 @@
     </dependency>
     <!--jsp support for jetty -->
     <dependency>
-      <groupId>org.mortbay.jetty</groupId>
-      <artifactId>jsp-api-2.1-glassfish</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.mortbay.jetty</groupId>
-      <artifactId>jsp-2.1-glassfish</artifactId>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-jsp</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.ant</groupId>

http://git-wip-us.apache.org/repos/asf/ambari/blob/9d39ab2e/ambari-project/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-project/pom.xml b/ambari-project/pom.xml
index 68bdb94..f19ca14 100644
--- a/ambari-project/pom.xml
+++ b/ambari-project/pom.xml
@@ -260,38 +260,32 @@
       <dependency>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-server</artifactId>
-        <version>8.1.17.v20150415</version>
+        <version>9.2.11.v20150529</version>
       </dependency>
       <dependency>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-security</artifactId>
-        <version>8.1.17.v20150415</version>
+        <version>9.2.11.v20150529</version>
       </dependency>
       <dependency>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-servlet</artifactId>
-        <version>8.1.17.v20150415</version>
+        <version>9.2.11.v20150529</version>
       </dependency>
       <dependency>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-servlets</artifactId>
-        <version>8.1.17.v20150415</version>
+        <version>9.2.11.v20150529</version>
       </dependency>
       <dependency>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-webapp</artifactId>
-        <version>8.1.17.v20150415</version>
+        <version>9.2.11.v20150529</version>
       </dependency>
-      <!--jsp support for jetty -->
       <dependency>
-        <groupId>org.mortbay.jetty</groupId>
-        <artifactId>jsp-api-2.1-glassfish</artifactId>
-        <version>2.1.v20100127</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mortbay.jetty</groupId>
-        <artifactId>jsp-2.1-glassfish</artifactId>
-        <version>2.1.v20100127</version>
+        <groupId>org.eclipse.jetty</groupId>
+        <artifactId>jetty-jsp</artifactId>
+        <version>9.2.11.v20150529</version>
       </dependency>
       <dependency>
         <groupId>org.apache.ant</groupId>
@@ -327,7 +321,7 @@
       <dependency>
         <groupId>javax.servlet</groupId>
         <artifactId>javax.servlet-api</artifactId>
-        <version>3.0.1</version>
+        <version>3.1.0</version>
       </dependency>
       <dependency>
         <groupId>com.sun.jersey</groupId>

http://git-wip-us.apache.org/repos/asf/ambari/blob/9d39ab2e/ambari-server/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-server/pom.xml b/ambari-server/pom.xml
index c0010fb..eb977ad 100644
--- a/ambari-server/pom.xml
+++ b/ambari-server/pom.xml
@@ -48,6 +48,7 @@
     <tarballResourcesFolder>src/main/resources</tarballResourcesFolder>
     <skipPythonTests>false</skipPythonTests>
     <hadoop.version>2.7.1</hadoop.version>
+    <jetty.version>9.2.11.v20150529</jetty.version>
   </properties>
   <build>
     <plugins>
@@ -1324,6 +1325,11 @@
           </execution>
         </executions>
       </plugin>
+      <plugin>
+        <groupId>org.eclipse.jetty</groupId>
+        <artifactId>jetty-maven-plugin</artifactId>
+        <version>${jetty.version}</version>
+      </plugin>
     </plugins>
     <resources>
       <resource>
@@ -1765,14 +1771,9 @@
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-webapp</artifactId>
     </dependency>
-    <!--jsp support for jetty -->
-    <dependency>
-      <groupId>org.mortbay.jetty</groupId>
-      <artifactId>jsp-api-2.1-glassfish</artifactId>
-    </dependency>
     <dependency>
-      <groupId>org.mortbay.jetty</groupId>
-      <artifactId>jsp-2.1-glassfish</artifactId>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-jsp</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.ant</groupId>
@@ -2027,6 +2028,16 @@
       <artifactId>hadoop-auth</artifactId>
       <version>${hadoop.version}</version>
     </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-util</artifactId>
+      <version>${jetty.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-util-ajax</artifactId>
+      <version>${jetty.version}</version>
+    </dependency>
   </dependencies>
 
   <pluginRepositories>

http://git-wip-us.apache.org/repos/asf/ambari/blob/9d39ab2e/ambari-server/src/main/java/org/apache/ambari/server/api/AmbariErrorHandler.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/api/AmbariErrorHandler.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/api/AmbariErrorHandler.java
index c4a80f2..373face 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/api/AmbariErrorHandler.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/api/AmbariErrorHandler.java
@@ -25,7 +25,8 @@ import org.apache.ambari.server.configuration.Configuration;
 import 
org.apache.ambari.server.security.authorization.jwt.JwtAuthenticationProperties;
 import org.eclipse.jetty.http.HttpStatus;
 import org.eclipse.jetty.http.MimeTypes;
-import org.eclipse.jetty.server.AbstractHttpConnection;
+import org.eclipse.jetty.server.HttpChannel;
+import org.eclipse.jetty.server.HttpConnection;
 import org.eclipse.jetty.server.Request;
 import org.eclipse.jetty.server.handler.ErrorHandler;
 
@@ -50,15 +51,14 @@ public class AmbariErrorHandler extends ErrorHandler {
 
   @Override
   public void handle(String target, Request baseRequest, HttpServletRequest 
request, HttpServletResponse response) throws IOException {
-    AbstractHttpConnection connection = 
AbstractHttpConnection.getCurrentConnection();
-    connection.getRequest().setHandled(true);
-
-    response.setContentType(MimeTypes.TEXT_PLAIN);
+    HttpChannel httpChannel = 
HttpConnection.getCurrentConnection().getHttpChannel();
+    httpChannel.getRequest().setHandled(true);
+    response.setContentType(MimeTypes.Type.TEXT_PLAIN.asString());
 
     Map<String, Object> errorMap = new LinkedHashMap<String, Object>();
-    int code = connection.getResponse().getStatus();
+    int code = httpChannel.getResponse().getStatus();
     errorMap.put("status", code);
-    String message = connection.getResponse().getReason();
+    String message = httpChannel.getResponse().getReason();
     if (message == null) {
       message = HttpStatus.getMessage(code);
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/9d39ab2e/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
index 353a972..02a2d57 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
@@ -19,19 +19,16 @@
 package org.apache.ambari.server.controller;
 
 
-import java.io.File;
-import java.io.IOException;
-import java.net.Authenticator;
-import java.net.BindException;
-import java.net.PasswordAuthentication;
-import java.net.URL;
-import java.util.EnumSet;
-import java.util.Enumeration;
-import java.util.Map;
-
-import javax.crypto.BadPaddingException;
-import javax.servlet.DispatcherType;
-
+import com.google.common.util.concurrent.ServiceManager;
+import com.google.gson.Gson;
+import com.google.inject.Guice;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+import com.google.inject.Scopes;
+import com.google.inject.Singleton;
+import com.google.inject.name.Named;
+import com.google.inject.persist.Transactional;
+import com.sun.jersey.spi.container.servlet.ServletContainer;
 import org.apache.ambari.eventdb.webservice.WorkflowJsonService;
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.StateRecoveryManager;
@@ -108,11 +105,15 @@ import org.apache.ambari.server.utils.RetryHelper;
 import org.apache.ambari.server.utils.StageUtils;
 import org.apache.ambari.server.view.ViewRegistry;
 import org.apache.velocity.app.Velocity;
+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.ServerConnector;
 import org.eclipse.jetty.server.SessionIdManager;
 import org.eclipse.jetty.server.SessionManager;
-import org.eclipse.jetty.server.nio.SelectChannelConnector;
-import org.eclipse.jetty.server.ssl.SslSelectChannelConnector;
+import org.eclipse.jetty.server.SslConnectionFactory;
 import org.eclipse.jetty.servlet.DefaultServlet;
 import org.eclipse.jetty.servlet.FilterHolder;
 import org.eclipse.jetty.servlet.ServletContextHandler;
@@ -131,16 +132,18 @@ import 
org.springframework.web.context.request.RequestContextListener;
 import org.springframework.web.context.support.GenericWebApplicationContext;
 import org.springframework.web.filter.DelegatingFilterProxy;
 
-import com.google.common.util.concurrent.ServiceManager;
-import com.google.gson.Gson;
-import com.google.inject.Guice;
-import com.google.inject.Inject;
-import com.google.inject.Injector;
-import com.google.inject.Scopes;
-import com.google.inject.Singleton;
-import com.google.inject.name.Named;
-import com.google.inject.persist.Transactional;
-import com.sun.jersey.spi.container.servlet.ServletContainer;
+import javax.crypto.BadPaddingException;
+import javax.servlet.DispatcherType;
+import java.io.File;
+import java.io.IOException;
+import java.net.Authenticator;
+import java.net.BindException;
+import java.net.PasswordAuthentication;
+import java.net.URL;
+import java.util.EnumSet;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
 
 @Singleton
 public class AmbariServer {
@@ -355,10 +358,10 @@ public class AmbariServer {
       if (configs.getAgentSSLAuthentication()) {
         //Secured connector for 2-way auth
         SslContextFactory contextFactoryTwoWay = new SslContextFactory();
-        disableInsecureProtocols(contextFactoryTwoWay);
-
-        SslSelectChannelConnector sslConnectorTwoWay = new 
SslSelectChannelConnector(contextFactoryTwoWay);
-        sslConnectorTwoWay.setPort(configs.getTwoWayAuthPort());
+        HttpConfiguration httpConfigurationTwoWay = new HttpConfiguration();
+        httpConfigurationTwoWay.setSecureScheme("https");
+        httpConfigurationTwoWay.setSecurePort(configs.getTwoWayAuthPort());
+        httpConfigurationTwoWay.addCustomizer(new SecureRequestCustomizer());
 
         String keystore = configsMap.get(Configuration.SRVR_KSTR_DIR_KEY) + 
File.separator
             + configsMap.get(Configuration.KSTR_NAME_KEY);
@@ -367,19 +370,21 @@ public class AmbariServer {
             + configsMap.get(Configuration.TSTR_NAME_KEY);
 
         String srvrCrtPass = configsMap.get(Configuration.SRVR_CRT_PASS_KEY);
-        sslConnectorTwoWay.setKeystore(keystore);
-        sslConnectorTwoWay.setTruststore(truststore);
-        sslConnectorTwoWay.setPassword(srvrCrtPass);
-        sslConnectorTwoWay.setKeyPassword(srvrCrtPass);
-        sslConnectorTwoWay.setTrustPassword(srvrCrtPass);
-        
sslConnectorTwoWay.setKeystoreType(configsMap.get(Configuration.KSTR_TYPE_KEY));
-        
sslConnectorTwoWay.setTruststoreType(configsMap.get(Configuration.TSTR_TYPE_KEY));
-        sslConnectorTwoWay.setNeedClientAuth(configs.getTwoWaySsl());
+
+        contextFactoryTwoWay.setKeyStorePath(keystore);
+        contextFactoryTwoWay.setTrustStorePath(truststore);
+        contextFactoryTwoWay.setKeyManagerPassword(srvrCrtPass);
+        contextFactoryTwoWay.setKeyStorePassword(srvrCrtPass);
+        contextFactoryTwoWay.setTrustStorePassword(srvrCrtPass);
+        
contextFactoryTwoWay.setKeyStoreType(configsMap.get(Configuration.KSTR_TYPE_KEY));
+        
contextFactoryTwoWay.setTrustStoreType(configsMap.get(Configuration.TSTR_TYPE_KEY));
+        contextFactoryTwoWay.setNeedClientAuth(configs.getTwoWaySsl());
+        disableInsecureProtocols(contextFactoryTwoWay);
 
         //SSL Context Factory
         SslContextFactory contextFactoryOneWay = new SslContextFactory(true);
         contextFactoryOneWay.setKeyStorePath(keystore);
-        contextFactoryOneWay.setTrustStore(truststore);
+        contextFactoryOneWay.setTrustStorePath(truststore);
         contextFactoryOneWay.setKeyStorePassword(srvrCrtPass);
         contextFactoryOneWay.setKeyManagerPassword(srvrCrtPass);
         contextFactoryOneWay.setTrustStorePassword(srvrCrtPass);
@@ -388,15 +393,27 @@ public class AmbariServer {
         contextFactoryOneWay.setNeedClientAuth(false);
         disableInsecureProtocols(contextFactoryOneWay);
 
-        //Secured connector for 1-way auth
-        SslSelectChannelConnector sslConnectorOneWay = new 
SslSelectChannelConnector(contextFactoryOneWay);
+        HttpConfiguration httpConfigurationOneWay = new HttpConfiguration();
+        httpConfigurationOneWay.setSecureScheme("https");
+        httpConfigurationOneWay.setSecurePort(configs.getOneWayAuthPort());
+        httpConfigurationOneWay.addCustomizer(new SecureRequestCustomizer());
+
+        Map <String, Integer> agentSelectorAcceptorMap = 
getDesiredAgentAcceptorSelector(serverForAgent);
+        // SSL for 1-way auth
+        ServerConnector sslConnectorOneWay = new 
ServerConnector(serverForAgent,
+            agentSelectorAcceptorMap.get("desiredAcceptors"), 
agentSelectorAcceptorMap.get("desiredSelectors"),
+            new SslConnectionFactory(contextFactoryOneWay, 
HttpVersion.HTTP_1_1.asString()),
+            new HttpConnectionFactory(httpConfigurationOneWay));
+
         sslConnectorOneWay.setPort(configs.getOneWayAuthPort());
 
-        // because there are two connectors sharing the same pool, cut each's
-        // acceptors in half
-        int sslAcceptors = sslConnectorOneWay.getAcceptors();
-        sslConnectorOneWay.setAcceptors(Math.max(2, sslAcceptors / 2));
-        sslConnectorTwoWay.setAcceptors(Math.max(2, sslAcceptors / 2));
+        // SSL for 2-way auth
+        ServerConnector sslConnectorTwoWay = new 
ServerConnector(serverForAgent,
+            agentSelectorAcceptorMap.get("desiredAcceptors"), 
agentSelectorAcceptorMap.get("desiredSelectors"),
+            new SslConnectionFactory(contextFactoryTwoWay, 
HttpVersion.HTTP_1_1.asString()),
+            new HttpConnectionFactory(httpConfigurationTwoWay));
+
+        sslConnectorTwoWay.setPort(configs.getTwoWayAuthPort());
 
         // Agent Jetty thread pool
         configureJettyThreadPool(serverForAgent, 
sslConnectorOneWay.getAcceptors(),
@@ -405,9 +422,9 @@ public class AmbariServer {
         serverForAgent.addConnector(sslConnectorOneWay);
         serverForAgent.addConnector(sslConnectorTwoWay);
       } else {
-        SelectChannelConnector agentConnector = new SelectChannelConnector();
+        ServerConnector agentConnector = new ServerConnector(serverForAgent);
         agentConnector.setPort(configs.getOneWayAuthPort());
-        agentConnector.setMaxIdleTime(configs.getConnectionMaxIdleTime());
+        agentConnector.setIdleTimeout(configs.getConnectionMaxIdleTime());
 
         // Agent Jetty thread pool
         configureJettyThreadPool(serverForAgent, 
agentConnector.getAcceptors(), "qtp-ambari-agent",
@@ -473,7 +490,7 @@ public class AmbariServer {
       }
 
       /* Configure the API server to use the NIO connectors */
-      SelectChannelConnector apiConnector;
+      ServerConnector apiConnector;
 
       if (configs.getApiSSLAuthentication()) {
         String httpsKeystore = 
configsMap.get(Configuration.CLIENT_API_SSL_KSTR_DIR_NAME_KEY) +
@@ -486,21 +503,30 @@ public class AmbariServer {
 
         SslContextFactory contextFactoryApi = new SslContextFactory();
         disableInsecureProtocols(contextFactoryApi);
-        SslSelectChannelConnector sapiConnector = new 
SslSelectChannelConnector(contextFactoryApi);
-        sapiConnector.setPort(configs.getClientSSLApiPort());
-        sapiConnector.setKeystore(httpsKeystore);
-        sapiConnector.setTruststore(httpsTruststore);
-        sapiConnector.setPassword(httpsCrtPass);
-        sapiConnector.setKeyPassword(httpsCrtPass);
-        sapiConnector.setTrustPassword(httpsCrtPass);
-        
sapiConnector.setKeystoreType(configsMap.get(Configuration.CLIENT_API_SSL_KSTR_TYPE_KEY));
-        
sapiConnector.setTruststoreType(configsMap.get(Configuration.CLIENT_API_SSL_KSTR_TYPE_KEY));
-        sapiConnector.setMaxIdleTime(configs.getConnectionMaxIdleTime());
-        apiConnector = sapiConnector;
-      } else {
-        apiConnector = new SelectChannelConnector();
+
+        contextFactoryApi.setKeyStorePath(httpsKeystore);
+        contextFactoryApi.setTrustStorePath(httpsTruststore);
+        contextFactoryApi.setKeyManagerPassword(httpsCrtPass);
+        contextFactoryApi.setKeyStorePassword(httpsCrtPass);
+        contextFactoryApi.setTrustStorePassword(httpsCrtPass);
+        
contextFactoryApi.setKeyStoreType(configsMap.get(Configuration.CLIENT_API_SSL_KSTR_TYPE_KEY));
+        
contextFactoryApi.setTrustStoreType(configsMap.get(Configuration.CLIENT_API_SSL_KSTR_TYPE_KEY));
+
+        HttpConfiguration httpConfigurationSSL = new HttpConfiguration();
+        httpConfigurationSSL.setSecurePort(configs.getClientSSLApiPort());
+
+        ServerConnector https = new ServerConnector(server, new 
SslConnectionFactory(contextFactoryApi, "http/1.1"),
+            new HttpConnectionFactory(httpConfigurationSSL));
+        https.setPort(configs.getClientSSLApiPort());
+        https.setIdleTimeout(configs.getConnectionMaxIdleTime());
+        apiConnector = https;
+      } else  {
+        HttpConfiguration httpConfiguration = new HttpConfiguration();
+        httpConfiguration.setSecurePort(configs.getClientApiPort());
+
+        apiConnector = new ServerConnector(server, new 
HttpConnectionFactory(httpConfiguration));
         apiConnector.setPort(configs.getClientApiPort());
-        apiConnector.setMaxIdleTime(configs.getConnectionMaxIdleTime());
+        apiConnector.setIdleTimeout(configs.getConnectionMaxIdleTime());
       }
 
       // Client Jetty thread pool
@@ -578,13 +604,38 @@ public class AmbariServer {
   }
 
   /**
+   *  Calculate desired Acceptor and Selector for Jetty agent ServerConnector
+   * @param serverForAgent
+   *        the Jetty server instance which will have the selector and 
Acceptor set on it
+   * @return jettySelectorAcceptorMap
+   *         Map with "desiredAcceptors" and "desiredSelectors" keys
+   */
+  protected Map<String, Integer> getDesiredAgentAcceptorSelector(Server 
serverForAgent) {
+    ServerConnector serverConnector =  new ServerConnector(serverForAgent);
+    Map <String, Integer> jettySelectorAcceptorMap = new HashMap<>();
+    // By default Jetty-9 assigns Math.max(1, Math.min(4, (cores available to 
JVM)/8)) acceptors to a ServerConnector
+    int defaultAcceptors =  serverConnector.getAcceptors();
+
+    // By default Jetty-9 assigns Math.max(1, Math.min(4, (cores available to 
JVM)/2))) selectors to a ServerConnector
+    int defaultSelectors = 
serverConnector.getSelectorManager().getSelectorCount();
+
+    // because there are two connectors sharing the same pool, cut each's
+    // acceptors and selectors in half
+    int desiredAcceptors = Math.max(2, defaultAcceptors / 2);
+    int desiredSelectors = Math.max(2, defaultSelectors / 2);
+    jettySelectorAcceptorMap.put("desiredAcceptors", desiredAcceptors);
+    jettySelectorAcceptorMap.put("desiredSelectors", desiredSelectors);
+    return jettySelectorAcceptorMap;
+  }
+
+  /**
    * The Jetty thread pool consists of three basic types of threads:
    * <ul>
    * <li>Acceptors</li>
    * <li>Selectors</li>
    * <li>Threads which can actually do stuff</li>
    * <ul>
-   * The {@link SelectChannelConnector} uses the
+   * The {@link ServerConnector} uses the
    * {@link Runtime#availableProcessors()} as a way to determine how many
    * acceptors and selectors to create. If the number of processors is too
    * great, then there will be no threads left to fullfil connection requests.
@@ -630,9 +681,9 @@ public class AmbariServer {
         threadPoolName, acceptorThreads * 2, configuredThreadPoolSize,
         Runtime.getRuntime().availableProcessors());
 
-    QueuedThreadPool qtp = new QueuedThreadPool(configuredThreadPoolSize);
+    final QueuedThreadPool qtp = server.getBean(QueuedThreadPool.class);
     qtp.setName(threadPoolName);
-    server.setThreadPool(qtp);
+    qtp.setMaxThreads(configuredThreadPoolSize);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/9d39ab2e/ambari-server/src/test/java/org/apache/ambari/server/api/AmbariErrorHandlerTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/api/AmbariErrorHandlerTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/api/AmbariErrorHandlerTest.java
index 8b4f99c..30c22a2 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/api/AmbariErrorHandlerTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/api/AmbariErrorHandlerTest.java
@@ -20,13 +20,15 @@ package org.apache.ambari.server.api;
 
 import com.google.gson.Gson;
 import com.google.gson.JsonSyntaxException;
-import com.sun.jersey.api.client.*;
+import com.sun.jersey.api.client.Client;
+import com.sun.jersey.api.client.ClientResponse;
+import com.sun.jersey.api.client.WebResource;
 import org.apache.ambari.server.configuration.Configuration;
+import org.eclipse.jetty.server.Connector;
 import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ServerConnector;
 import org.eclipse.jetty.servlet.DefaultServlet;
 import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
 import org.junit.Test;
 
 import javax.servlet.ServletException;
@@ -63,7 +65,8 @@ public class AmbariErrorHandlerTest {
 
     server.start();
 
-    int localPort = server.getConnectors()[0].getLocalPort();
+    Connector connector = server.getConnectors()[0];
+    int localPort = ((ServerConnector)connector).getLocalPort();
 
     Client client = new Client();
     WebResource resource = client.resource("http://localhost:"; + localPort + 
"/");

http://git-wip-us.apache.org/repos/asf/ambari/blob/9d39ab2e/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariHandlerListTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariHandlerListTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariHandlerListTest.java
index 2e2cc45..9a4cca1 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariHandlerListTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariHandlerListTest.java
@@ -140,10 +140,10 @@ public class AmbariHandlerListTest {
     expect(viewEntity.getClassLoader()).andReturn(classLoader).anyTimes();
 
     expect(handler.isStarted()).andReturn(true).anyTimes();
-    
handler.handle("/api/v1/views/TEST/versions/1.0.0/instances/INSTANCE_1/resources/test",
-        baseRequest, request, response);
 
     replay(handler, viewRegistry, viewEntity);
+    
handler.handle("/api/v1/views/TEST/versions/1.0.0/instances/INSTANCE_1/resources/test",
+        baseRequest, request, response);
 
     AmbariHandlerList handlerList = getAmbariHandlerList(handler);
     handlerList.viewRegistry = viewRegistry;

http://git-wip-us.apache.org/repos/asf/ambari/blob/9d39ab2e/ambari-web/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-web/pom.xml b/ambari-web/pom.xml
index d160e37..761a3f0 100644
--- a/ambari-web/pom.xml
+++ b/ambari-web/pom.xml
@@ -196,23 +196,6 @@
               <commandlineArgs>${args.npm} test</commandlineArgs>
             </configuration>
           </execution>
-          <execution>
-            <id>gzip ambari-web content</id>
-            <phase>prepare-package</phase>
-            <goals>
-              <goal>exec</goal>
-            </goals>
-            <configuration>
-              <executable>${executable.gzip}</executable>
-              <workingDirectory>${basedir}</workingDirectory>
-              <arguments>
-                <argument>-f</argument>
-                <argument>public/javascripts/app.js</argument>
-                <argument>public/javascripts/vendor.js</argument>
-                <argument>public/stylesheets/app.css</argument>
-              </arguments>
-            </configuration>
-          </execution>
         </executions>
       </plugin>
       <plugin>

Reply via email to