Repository: ambari
Updated Branches:
  refs/heads/trunk e11aa3b9b -> e0ee23f38


Revert "AMBARI-17991 Ambari agent unable to register with server when server 
response is too big (dsen)"

This reverts commit c03b6d4b01fbc336c296c9a1a92ca1308cba6ffc.


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

Branch: refs/heads/trunk
Commit: e0ee23f38b494bfa620fa1f78e493858371d431a
Parents: e11aa3b
Author: Jonathan Hurley <[email protected]>
Authored: Fri Aug 5 14:18:53 2016 -0400
Committer: Jonathan Hurley <[email protected]>
Committed: Fri Aug 5 14:18:53 2016 -0400

----------------------------------------------------------------------
 .../src/main/python/ambari_agent/security.py    |   2 +-
 ambari-funtest/pom.xml                          |  10 +-
 .../ambari-logsearch-portal/pom.xml             |  25 ---
 ambari-project/pom.xml                          |  22 +--
 ambari-server/pom.xml                           |  23 ++-
 .../ambari/server/api/AmbariErrorHandler.java   |  14 +-
 .../ambari/server/controller/AmbariServer.java  | 159 +++++++++++++------
 .../server/stack/ConfigurationDirectory.java    |   4 +-
 .../apache/ambari/server/utils/JsonUtils.java   |   4 +-
 .../server/api/AmbariErrorHandlerTest.java      |   3 +-
 .../audit/request/DefaultEventCreatorTest.java  |   5 +-
 11 files changed, 145 insertions(+), 126 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/e0ee23f3/ambari-agent/src/main/python/ambari_agent/security.py
----------------------------------------------------------------------
diff --git a/ambari-agent/src/main/python/ambari_agent/security.py 
b/ambari-agent/src/main/python/ambari_agent/security.py
index 3cc07fc..72ae954 100644
--- a/ambari-agent/src/main/python/ambari_agent/security.py
+++ b/ambari-agent/src/main/python/ambari_agent/security.py
@@ -98,7 +98,7 @@ class VerifiedHTTPSConnection(httplib.HTTPSConnection):
     if self.sock:
       self.sock.close()
     logger.info("SSL Connect being called.. connecting to the server")
-    sock = socket.create_connection((self.host, self.port), 90)
+    sock = socket.create_connection((self.host, self.port), 60)
     sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
     if self._tunnel_host:
       self.sock = sock

http://git-wip-us.apache.org/repos/asf/ambari/blob/e0ee23f3/ambari-funtest/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-funtest/pom.xml b/ambari-funtest/pom.xml
index 66678c2..ebc34ec 100644
--- a/ambari-funtest/pom.xml
+++ b/ambari-funtest/pom.xml
@@ -302,14 +302,8 @@
     </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>
     </dependency>
     <dependency>
       <groupId>org.apache.ant</groupId>

http://git-wip-us.apache.org/repos/asf/ambari/blob/e0ee23f3/ambari-logsearch/ambari-logsearch-portal/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/pom.xml 
b/ambari-logsearch/ambari-logsearch-portal/pom.xml
index 7a46fe5..0a24759 100755
--- a/ambari-logsearch/ambari-logsearch-portal/pom.xml
+++ b/ambari-logsearch/ambari-logsearch-portal/pom.xml
@@ -596,31 +596,6 @@
     </dependency>
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-security</artifactId>
-      <version>${jetty-version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-server</artifactId>
-      <version>${jetty-version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-servlet</artifactId>
-      <version>${jetty-version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-servlets</artifactId>
-      <version>${jetty-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-webapp</artifactId>
       <version>${jetty-version}</version>
       <exclusions>

http://git-wip-us.apache.org/repos/asf/ambari/blob/e0ee23f3/ambari-project/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-project/pom.xml b/ambari-project/pom.xml
index 2615b46..c7a0a6a 100644
--- a/ambari-project/pom.xml
+++ b/ambari-project/pom.xml
@@ -29,7 +29,6 @@
   <properties>
     <ambari.dir>${project.parent.basedir}</ambari.dir>
     <powermock.version>1.6.3</powermock.version>
-    <jetty.version>8.1.19.v20160209</jetty.version>
   </properties>
   <profiles>
     <profile>
@@ -261,37 +260,32 @@
       <dependency>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-server</artifactId>
-        <version>${jetty.version}</version>
+        <version>9.2.11.v20150529</version>
       </dependency>
       <dependency>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-security</artifactId>
-        <version>${jetty.version}</version>
+        <version>9.2.11.v20150529</version>
       </dependency>
       <dependency>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-servlet</artifactId>
-        <version>${jetty.version}</version>
+        <version>9.2.11.v20150529</version>
       </dependency>
       <dependency>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-servlets</artifactId>
-        <version>${jetty.version}</version>
+        <version>9.2.11.v20150529</version>
       </dependency>
       <dependency>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-webapp</artifactId>
-        <version>${jetty.version}</version>
+        <version>9.2.11.v20150529</version>
       </dependency>
       <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>

http://git-wip-us.apache.org/repos/asf/ambari/blob/e0ee23f3/ambari-server/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-server/pom.xml b/ambari-server/pom.xml
index 72d4257..814973b 100644
--- a/ambari-server/pom.xml
+++ b/ambari-server/pom.xml
@@ -45,6 +45,7 @@
     <tarballResourcesFolder>src/main/resources</tarballResourcesFolder>
     <skipPythonTests>false</skipPythonTests>
     <hadoop.version>2.7.1</hadoop.version>
+    <jetty.version>9.2.11.v20150529</jetty.version>
     <empty.dir>src/main/package</empty.dir> <!-- any directory in project with 
not very big amount of files (not to waste-load them) -->
   </properties>
   <build>
@@ -1089,32 +1090,22 @@
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-security</artifactId>
-      <version>${jetty.version}</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-servlet</artifactId>
-      <version>${jetty.version}</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-servlets</artifactId>
-      <version>${jetty.version}</version>
     </dependency>
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-webapp</artifactId>
-      <version>${jetty.version}</version>
     </dependency>
     <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>
     </dependency>
     <dependency>
       <groupId>org.apache.ant</groupId>
@@ -1124,7 +1115,6 @@
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-server</artifactId>
-      <version>${jetty.version}</version>
     </dependency>
     <dependency>
       <groupId>commons-logging</groupId>
@@ -1278,7 +1268,7 @@
     <dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
-      <version>2.7</version>
+      <version>2.2.2</version>
     </dependency>
     <dependency>
       <groupId>org.postgresql</groupId>
@@ -1369,6 +1359,11 @@
       <version>${jetty.version}</version>
     </dependency>
     <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-util-ajax</artifactId>
+      <version>${jetty.version}</version>
+    </dependency>
+    <dependency>
       <groupId>commons-cli</groupId>
       <artifactId>commons-cli</artifactId>
       <version>1.3.1</version>

http://git-wip-us.apache.org/repos/asf/ambari/blob/e0ee23f3/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/e0ee23f3/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 a6d8d6a..bd96868 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
@@ -119,11 +119,15 @@ import org.apache.ambari.server.view.ViewDirectoryWatcher;
 import org.apache.ambari.server.view.ViewRegistry;
 import org.apache.ambari.server.view.ViewThrottleFilter;
 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;
@@ -409,10 +413,11 @@ 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());
+        setHeaderSize(httpConfigurationTwoWay);
 
         String keystore = configsMap.get(Configuration.SRVR_KSTR_DIR_KEY) + 
File.separator
             + configsMap.get(Configuration.KSTR_NAME_KEY);
@@ -422,21 +427,20 @@ public class AmbariServer {
 
         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());
-        
sslConnectorTwoWay.setRequestHeaderSize(configs.getHttpRequestHeaderSize());
-        
sslConnectorTwoWay.setResponseHeaderSize(configs.getHttpResponseHeaderSize());
+        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);
@@ -445,32 +449,43 @@ 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());
+        setHeaderSize(httpConfigurationOneWay);
+
+        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());
-        
sslConnectorOneWay.setRequestHeaderSize(configs.getHttpRequestHeaderSize());
-        
sslConnectorOneWay.setResponseHeaderSize(configs.getHttpResponseHeaderSize());
 
-        // 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(),
-          "qtp-ambari-agent", configs.getAgentThreadPoolSize());
+            AGENT_THREAD_POOL_NAME, configs.getAgentThreadPoolSize());
 
         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",
-          configs.getAgentThreadPoolSize());
+        configureJettyThreadPool(serverForAgent, 
agentConnector.getAcceptors(), AGENT_THREAD_POOL_NAME,
+            configs.getAgentThreadPoolSize());
 
         serverForAgent.addConnector(agentConnector);
       }
@@ -533,7 +548,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) +
@@ -546,26 +561,35 @@ 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;
+
+        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());
+        httpConfigurationSSL.addCustomizer(new SecureRequestCustomizer());
+        setHeaderSize(httpConfigurationSSL);
+
+        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  {
-        apiConnector = new SelectChannelConnector();
+        HttpConfiguration httpConfiguration = new HttpConfiguration();
+        httpConfiguration.setSecurePort(configs.getClientApiPort());
+        setHeaderSize(httpConfiguration);
+
+        apiConnector = new ServerConnector(server, new 
HttpConnectionFactory(httpConfiguration));
         apiConnector.setPort(configs.getClientApiPort());
-        apiConnector.setMaxIdleTime(configs.getConnectionMaxIdleTime());
+        apiConnector.setIdleTimeout(configs.getConnectionMaxIdleTime());
       }
 
-      apiConnector.setRequestHeaderSize(configs.getHttpRequestHeaderSize());
-      apiConnector.setResponseHeaderSize(configs.getHttpResponseHeaderSize());
-
       // Client Jetty thread pool
       configureJettyThreadPool(server, apiConnector.getAcceptors(), 
CLIENT_THREAD_POOL_NAME, configs.getClientThreadPoolSize());
       server.addConnector(apiConnector);
@@ -650,13 +674,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.
@@ -702,9 +751,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);
   }
 
   /**
@@ -727,6 +776,14 @@ public class AmbariServer {
   }
 
   /**
+   * Propagate header size to Jetty HTTP configuration
+   */
+  private void setHeaderSize(HttpConfiguration httpConfiguration) {
+    
httpConfiguration.setResponseHeaderSize(configs.getHttpResponseHeaderSize());
+    httpConfiguration.setRequestHeaderSize(configs.getHttpRequestHeaderSize());
+  }
+
+  /**
    * Performs basic configuration of root handler with static values and values
    * from configuration file.
    *

http://git-wip-us.apache.org/repos/asf/ambari/blob/e0ee23f3/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationDirectory.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationDirectory.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationDirectory.java
index cfdf9fc..44cdf2b 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationDirectory.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationDirectory.java
@@ -25,7 +25,7 @@ import org.apache.ambari.server.state.stack.ConfigurationXml;
 import org.apache.ambari.server.utils.JsonUtils;
 import org.apache.ambari.server.utils.XmlUtils;
 import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang.StringUtils;
+import org.eclipse.jetty.util.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -73,7 +73,7 @@ public class ConfigurationDirectory extends 
StackDefinitionDirectory {
    */
   public ConfigurationDirectory(String directoryName, String 
propertiesDirectoryName) {
     super(directoryName);
-    if(!StringUtils.isBlank(propertiesDirectoryName)) {
+    if(!StringUtil.isBlank(propertiesDirectoryName)) {
       propertiesDirFile = new File(propertiesDirectoryName);
     }
     parsePath();

http://git-wip-us.apache.org/repos/asf/ambari/blob/e0ee23f3/ambari-server/src/main/java/org/apache/ambari/server/utils/JsonUtils.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/utils/JsonUtils.java 
b/ambari-server/src/main/java/org/apache/ambari/server/utils/JsonUtils.java
index ff4bc1d..63c88d8 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/utils/JsonUtils.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/utils/JsonUtils.java
@@ -19,7 +19,7 @@ package org.apache.ambari.server.utils;
 
 import com.google.gson.JsonParser;
 import com.google.gson.JsonSyntaxException;
-import org.apache.commons.lang.StringUtils;
+import org.eclipse.jetty.util.StringUtil;
 
 /**
  * Static Helper methods for Json processing.
@@ -35,7 +35,7 @@ public class JsonUtils {
    */
   public static boolean isValidJson(String jsonString) {
 
-    if(StringUtils.isBlank(jsonString)) {
+    if(StringUtil.isBlank(jsonString)) {
       return false;
     }
     try {

http://git-wip-us.apache.org/repos/asf/ambari/blob/e0ee23f3/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 5ecadca..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
@@ -26,6 +26,7 @@ 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.junit.Test;
@@ -65,7 +66,7 @@ public class AmbariErrorHandlerTest {
     server.start();
 
     Connector connector = server.getConnectors()[0];
-    int localPort = server.getConnectors()[0].getLocalPort();
+    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/e0ee23f3/ambari-server/src/test/java/org/apache/ambari/server/audit/request/DefaultEventCreatorTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/audit/request/DefaultEventCreatorTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/audit/request/DefaultEventCreatorTest.java
index 778b3ed..1e063ec 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/audit/request/DefaultEventCreatorTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/audit/request/DefaultEventCreatorTest.java
@@ -232,6 +232,7 @@ public class DefaultEventCreatorTest {
         return null;
       }
 
+      @Override
       public String changeSessionId() {
         return null;
       }
@@ -281,6 +282,7 @@ public class DefaultEventCreatorTest {
         return null;
       }
 
+      @Override
       public <T extends HttpUpgradeHandler> T upgrade(Class<T> aClass) throws 
IOException, ServletException {
         return null;
       }
@@ -310,6 +312,7 @@ public class DefaultEventCreatorTest {
         return 0;
       }
 
+      @Override
       public long getContentLengthLong() {
         return 0;
       }
@@ -509,4 +512,4 @@ public class DefaultEventCreatorTest {
     Assert.assertEquals(expected, actual);
   }
 
-}
+}
\ No newline at end of file

Reply via email to