]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-8545 Upgrade Apache Tomcat from 8.0 to 8.5
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Thu, 5 Jan 2017 14:14:52 +0000 (15:14 +0100)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Fri, 6 Jan 2017 13:06:36 +0000 (14:06 +0100)
pom.xml
server/sonar-server/pom.xml
server/sonar-server/src/main/java/org/sonar/server/app/TomcatConnectors.java
server/sonar-server/src/main/java/org/sonar/server/app/TomcatContexts.java
server/sonar-server/src/test/java/org/sonar/server/app/TomcatConnectorsTest.java

diff --git a/pom.xml b/pom.xml
index 060a80d0c73b889e5e20a5ae8e15d9cd129c9250..9cad53b940fc9257bba9fca53d03167ab391b5e0 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -57,7 +57,7 @@
     <jetty.version>8.1.12.v20130726</jetty.version>
     <logback.version>1.1.7</logback.version>
     <slf4j.version>1.7.21</slf4j.version>
-    <tomcat.version>8.0.32</tomcat.version>
+    <tomcat.version>8.5.9</tomcat.version>
     <elasticsearch.version>2.3.5</elasticsearch.version>
     <orchestrator.version>3.14.0.833</orchestrator.version>
     <okhttp.version>3.3.1</okhttp.version>
           </exclusion>
         </exclusions>
       </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat.embed</groupId>
-        <artifactId>tomcat-embed-logging-juli</artifactId>
-        <version>${tomcat.version}</version>
-      </dependency>
       <dependency>
         <groupId>com.squareup.okhttp3</groupId>
         <artifactId>okhttp</artifactId>
index e420e95efeea0750a22ddf0dc86cdf1c6ea722a4..fe686bff205fc0f39f207b64f4137fc529a10167 100644 (file)
       <groupId>org.apache.tomcat.embed</groupId>
       <artifactId>tomcat-embed-jasper</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.apache.tomcat.embed</groupId>
-      <artifactId>tomcat-embed-logging-juli</artifactId>
-    </dependency>
     <dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
index 2111ccaa2aa9f3cc72520114e4b9861e17c66384..1ce5611e932fbeeefc7e7d1979e34ed5f9f946aa 100644 (file)
@@ -42,7 +42,6 @@ class TomcatConnectors {
 
   static void configure(Tomcat tomcat, Props props) {
     Connector httpConnector = newHttpConnector(props);
-    tomcat.setConnector(httpConnector);
     tomcat.getService().addConnector(httpConnector);
   }
 
index b15d76e08545cb0d8195903ab97c1cc40988c1c9..a12cc406cf1fe2e93949229eda321012dc07ee2d 100644 (file)
@@ -19,9 +19,6 @@
  */
 package org.sonar.server.app;
 
-import static java.lang.String.format;
-import static org.apache.commons.lang.StringUtils.isEmpty;
-
 import com.google.common.annotations.VisibleForTesting;
 import java.io.File;
 import java.io.IOException;
@@ -36,6 +33,9 @@ import org.sonar.api.utils.log.Loggers;
 import org.sonar.process.ProcessProperties;
 import org.sonar.process.Props;
 
+import static java.lang.String.format;
+import static org.apache.commons.lang.StringUtils.isEmpty;
+
 /**
  * Configures Tomcat contexts:
  * <ul>
@@ -98,7 +98,6 @@ public class TomcatContexts {
     try {
       StandardContext context = (StandardContext) tomcat.addWebapp(contextPath, dir.getAbsolutePath());
       context.setClearReferencesHttpClientKeepAliveThread(false);
-      context.setClearReferencesStatic(false);
       context.setClearReferencesStopThreads(false);
       context.setClearReferencesStopTimerThreads(false);
       context.setClearReferencesStopTimerThreads(false);
index 0ab6b24c9bf9408370cc1b0484b7460665beeb4d..057ac23e02ab68549ea57b775ece36a3bfe6cc9f 100644 (file)
@@ -38,9 +38,8 @@ import static org.mockito.Mockito.verify;
 
 public class TomcatConnectorsTest {
 
-  Tomcat tomcat = mock(Tomcat.class, Mockito.RETURNS_DEEP_STUBS);
-
-  // ---- connectors
+  private static final int DEFAULT_PORT = 9000;
+  private Tomcat tomcat = mock(Tomcat.class, Mockito.RETURNS_DEEP_STUBS);
 
   @Test
   public void configure_thread_pool() {
@@ -52,53 +51,27 @@ public class TomcatConnectorsTest {
 
     TomcatConnectors.configure(tomcat, props);
 
-    verify(tomcat).setConnector(argThat(new PropertiesMatcher(
-      ImmutableMap.<String, Object>of("minSpareThreads", 2, "maxThreads", 30, "acceptCount", 20))));
+    verifyHttpConnector(DEFAULT_PORT, ImmutableMap.of("minSpareThreads", 2, "maxThreads", 30, "acceptCount", 20));
   }
 
   @Test
-  public void configure_default_thread_pool() {
+  public void configure_defaults() {
     Props props = new Props(new Properties());
 
     TomcatConnectors.configure(tomcat, props);
 
-    verify(tomcat).setConnector(argThat(new PropertiesMatcher(
-      ImmutableMap.<String, Object>of("minSpareThreads", 5, "maxThreads", 50, "acceptCount", 25))));
+    verifyHttpConnector(DEFAULT_PORT, ImmutableMap.of("minSpareThreads", 5, "maxThreads", 50, "acceptCount", 25));
   }
 
   @Test
   public void different_thread_pools_for_connectors() {
     Properties p = new Properties();
-    p.setProperty("sonar.web.port", "9000");
     p.setProperty("sonar.web.http.minThreads", "2");
     Props props = new Props(p);
 
     TomcatConnectors.configure(tomcat, props);
 
-    verify(tomcat.getService()).addConnector(argThat(new ArgumentMatcher<Connector>() {
-      @Override
-      public boolean matches(Object o) {
-        Connector c = (Connector) o;
-        return c.getPort() == 9000 && c.getProperty("minSpareThreads").equals(2);
-      }
-    }));
-  }
-
-  @Test
-  public void http_connector_is_enabled() {
-    Properties p = new Properties();
-    p.setProperty("sonar.web.port", "9000");
-    Props props = new Props(p);
-
-    TomcatConnectors.configure(tomcat, props);
-
-    verify(tomcat.getService()).addConnector(argThat(new ArgumentMatcher<Connector>() {
-      @Override
-      public boolean matches(Object o) {
-        Connector c = (Connector) o;
-        return c.getScheme().equals("http") && c.getPort() == 9000 && c.getProtocol().equals(TomcatConnectors.HTTP_PROTOCOL);
-      }
-    }));
+    verifyHttpConnector(DEFAULT_PORT, ImmutableMap.of("minSpareThreads", 2));
   }
 
   @Test
@@ -149,11 +122,9 @@ public class TomcatConnectorsTest {
 
   @Test
   public void test_max_http_header_size_for_http_connection() {
-    Properties properties = new Properties();
+    TomcatConnectors.configure(tomcat, new Props(new Properties()));
 
-    Props props = new Props(properties);
-    TomcatConnectors.configure(tomcat, props);
-    verifyConnectorProperty(tomcat, "http", "maxHttpHeaderSize", TomcatConnectors.MAX_HTTP_HEADER_SIZE_BYTES);
+    verifyHttpConnector(DEFAULT_PORT, ImmutableMap.of("maxHttpHeaderSize", TomcatConnectors.MAX_HTTP_HEADER_SIZE_BYTES));
   }
 
   @Test
@@ -171,32 +142,27 @@ public class TomcatConnectorsTest {
     }));
   }
 
-  private static void verifyConnectorProperty(Tomcat tomcat, final String connectorScheme,
-                                              final String property, final Object propertyValue) {
+  private void verifyHttpConnector(int expectedPort, Map<String,Object> expectedProps) {
     verify(tomcat.getService()).addConnector(argThat(new ArgumentMatcher<Connector>() {
       @Override
       public boolean matches(Object o) {
         Connector c = (Connector) o;
-        return c.getScheme().equals(connectorScheme) && c.getProperty(property).equals(propertyValue);
-      }
-    }));
-  }
-
-  private static class PropertiesMatcher extends ArgumentMatcher<Connector> {
-    private final Map<String, Object> expected;
-
-    PropertiesMatcher(Map<String, Object> expected) {
-      this.expected = expected;
-    }
-
-    public boolean matches(Object o) {
-      Connector c = (Connector) o;
-      for (Map.Entry<String, Object> entry : expected.entrySet()) {
-        if (!entry.getValue().equals(c.getProperty(entry.getKey()))) {
+        if (!c.getScheme().equals("http")) {
+          return false;
+        }
+        if (!c.getProtocol().equals(TomcatConnectors.HTTP_PROTOCOL)) {
           return false;
         }
+        if (c.getPort() != expectedPort) {
+          return false;
+        }
+        for (Map.Entry<String, Object> expectedProp : expectedProps.entrySet()) {
+          if (!expectedProp.getValue().equals(c.getProperty(expectedProp.getKey()))) {
+            return false;
+          }
+        }
+        return true;
       }
-      return true;
-    }
+    }));
   }
 }