Update Jetty to 9.4.30.v20200611. (#10098)

* Update Jetty to 9.4.30.v20200611.

This is the latest version currently available in the 9.4.x line.

* Various adjustments.

* Class name fixes.

* Remove unused HttpClientModule code.

* Add coverage suppressions.

* Another coverage suppression.

* Fix wildcards.
This commit is contained in:
Gian Merlino 2020-07-07 14:24:02 -07:00 committed by GitHub
parent 98ac7dfeff
commit eeaf609fc0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 66 additions and 139 deletions

View File

@ -96,7 +96,10 @@ public class FriendlyServersTest
final HttpClient client = HttpClientInit.createClient(config, lifecycle); final HttpClient client = HttpClientInit.createClient(config, lifecycle);
final StatusResponseHolder response = client final StatusResponseHolder response = client
.go( .go(
new Request(HttpMethod.GET, new URL(StringUtils.format("http://localhost:%d/", serverSocket.getLocalPort()))), new Request(
HttpMethod.GET,
new URL(StringUtils.format("http://localhost:%d/", serverSocket.getLocalPort()))
),
StatusResponseHandler.getInstance() StatusResponseHandler.getInstance()
).get(); ).get();
@ -155,7 +158,10 @@ public class FriendlyServersTest
final HttpClient client = HttpClientInit.createClient(config, lifecycle); final HttpClient client = HttpClientInit.createClient(config, lifecycle);
final StatusResponseHolder response = client final StatusResponseHolder response = client
.go( .go(
new Request(HttpMethod.GET, new URL(StringUtils.format("http://localhost:%d/", serverSocket.getLocalPort()))), new Request(
HttpMethod.GET,
new URL(StringUtils.format("http://localhost:%d/", serverSocket.getLocalPort()))
),
StatusResponseHandler.getInstance() StatusResponseHandler.getInstance()
).get(); ).get();
@ -180,7 +186,7 @@ public class FriendlyServersTest
HttpConfiguration https = new HttpConfiguration(); HttpConfiguration https = new HttpConfiguration();
https.addCustomizer(new SecureRequestCustomizer()); https.addCustomizer(new SecureRequestCustomizer());
SslContextFactory sslContextFactory = new SslContextFactory(); SslContextFactory.Server sslContextFactory = new SslContextFactory.Server();
sslContextFactory.setKeyStorePath(keyStorePath); sslContextFactory.setKeyStorePath(keyStorePath);
sslContextFactory.setKeyStorePassword("abc123"); sslContextFactory.setKeyStorePassword("abc123");
sslContextFactory.setKeyManagerPassword("abc123"); sslContextFactory.setKeyManagerPassword("abc123");

View File

@ -1661,7 +1661,7 @@ name: Jetty
license_category: binary license_category: binary
module: java-core module: java-core
license_name: Apache License version 2.0 license_name: Apache License version 2.0
version: 9.4.12.v20180830 version: 9.4.30.v20200611
libraries: libraries:
- org.eclipse.jetty: jetty-client - org.eclipse.jetty: jetty-client
- org.eclipse.jetty: jetty-continuation - org.eclipse.jetty: jetty-continuation

View File

@ -91,7 +91,7 @@
<guava.version>16.0.1</guava.version> <guava.version>16.0.1</guava.version>
<guice.version>4.1.0</guice.version> <guice.version>4.1.0</guice.version>
<hamcrest.version>1.3</hamcrest.version> <hamcrest.version>1.3</hamcrest.version>
<jetty.version>9.4.12.v20180830</jetty.version> <jetty.version>9.4.30.v20200611</jetty.version>
<jersey.version>1.19.3</jersey.version> <jersey.version>1.19.3</jersey.version>
<jackson.version>2.10.2</jackson.version> <jackson.version>2.10.2</jackson.version>
<codehaus.jackson.version>1.9.13</codehaus.jackson.version> <codehaus.jackson.version>1.9.13</codehaus.jackson.version>
@ -1268,7 +1268,10 @@
<!-- Ignore initialization classes, these are tested by the integration tests. --> <!-- Ignore initialization classes, these are tested by the integration tests. -->
<exclude>org/apache/druid/cli/Cli*</exclude> <exclude>org/apache/druid/cli/Cli*</exclude>
<exclude>org/apache/druid/cli/*JettyServerInitializer*</exclude> <exclude>org/apache/druid/cli/*JettyServerInitializer*</exclude>
<exclude>org/apache/druid/server/initialization/*Module*</exclude>
<exclude>org/apache/druid/server/initialization/jetty/*Module*</exclude>
<exclude>org/apache/druid/guice/http/*</exclude>
<!-- Ignore generated code --> <!-- Ignore generated code -->
<exclude>org/apache/druid/math/expr/antlr/Expr*</exclude> <!-- core --> <exclude>org/apache/druid/math/expr/antlr/Expr*</exclude> <!-- core -->
<exclude>org/apache/druid/**/generated/*Benchmark*</exclude> <!-- benchmarks --> <exclude>org/apache/druid/**/generated/*Benchmark*</exclude> <!-- benchmarks -->

View File

@ -19,6 +19,7 @@
package org.apache.druid.guice.http; package org.apache.druid.guice.http;
import com.google.common.base.Preconditions;
import com.google.common.base.Supplier; import com.google.common.base.Supplier;
import com.google.inject.Binding; import com.google.inject.Binding;
import com.google.inject.Inject; import com.google.inject.Inject;
@ -32,6 +33,7 @@ import javax.net.ssl.SSLContext;
import java.lang.annotation.Annotation; import java.lang.annotation.Annotation;
/** /**
*
*/ */
public abstract class AbstractHttpClientProvider<HttpClientType> implements Provider<HttpClientType> public abstract class AbstractHttpClientProvider<HttpClientType> implements Provider<HttpClientType>
{ {
@ -40,28 +42,10 @@ public abstract class AbstractHttpClientProvider<HttpClientType> implements Prov
private Injector injector; private Injector injector;
public AbstractHttpClientProvider()
{
configKey = Key.get(
new TypeLiteral<Supplier<DruidHttpClientConfig>>()
{
}
);
sslContextKey = Key.get(SSLContext.class);
}
public AbstractHttpClientProvider(Annotation annotation)
{
configKey = Key.get(
new TypeLiteral<Supplier<DruidHttpClientConfig>>()
{
}, annotation
);
sslContextKey = Key.get(SSLContext.class, annotation);
}
public AbstractHttpClientProvider(Class<? extends Annotation> annotation) public AbstractHttpClientProvider(Class<? extends Annotation> annotation)
{ {
Preconditions.checkNotNull(annotation, "annotation");
configKey = Key.get( configKey = Key.get(
new TypeLiteral<Supplier<DruidHttpClientConfig>>() new TypeLiteral<Supplier<DruidHttpClientConfig>>()
{ {
@ -76,20 +60,11 @@ public abstract class AbstractHttpClientProvider<HttpClientType> implements Prov
this.injector = injector; this.injector = injector;
} }
public Key<Supplier<DruidHttpClientConfig>> getConfigKey()
{
return configKey;
}
public Key<SSLContext> getSslContextKey()
{
return sslContextKey;
}
public Provider<Supplier<DruidHttpClientConfig>> getConfigProvider() public Provider<Supplier<DruidHttpClientConfig>> getConfigProvider()
{ {
return injector.getProvider(configKey); return injector.getProvider(configKey);
} }
public Provider<Lifecycle> getLifecycleProvider() public Provider<Lifecycle> getLifecycleProvider()
{ {
return injector.getProvider(Lifecycle.class); return injector.getProvider(Lifecycle.class);

View File

@ -19,8 +19,10 @@
package org.apache.druid.guice.http; package org.apache.druid.guice.http;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import com.google.inject.Binder; import com.google.inject.Binder;
import com.google.inject.Binding;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Module; import com.google.inject.Module;
import org.apache.druid.guice.JsonConfigProvider; import org.apache.druid.guice.JsonConfigProvider;
@ -34,10 +36,12 @@ import org.apache.druid.java.util.http.client.HttpClientConfig;
import org.apache.druid.java.util.http.client.HttpClientInit; import org.apache.druid.java.util.http.client.HttpClientInit;
import org.apache.druid.server.security.Escalator; import org.apache.druid.server.security.Escalator;
import javax.net.ssl.SSLContext;
import java.lang.annotation.Annotation; import java.lang.annotation.Annotation;
import java.util.Set; import java.util.Set;
/** /**
*
*/ */
public class HttpClientModule implements Module public class HttpClientModule implements Module
{ {
@ -55,68 +59,32 @@ public class HttpClientModule implements Module
ImmutableSet.of(EscalatedGlobal.class, EscalatedClient.class); ImmutableSet.of(EscalatedGlobal.class, EscalatedClient.class);
private final String propertyPrefix; private final String propertyPrefix;
private Annotation annotation = null; private final Class<? extends Annotation> annotationClazz;
private Class<? extends Annotation> annotationClazz = null; private final boolean isEscalated;
private boolean isEscalated = false;
public HttpClientModule(String propertyPrefix) public HttpClientModule(String propertyPrefix, Class<? extends Annotation> annotationClazz)
{ {
this.propertyPrefix = propertyPrefix; this.propertyPrefix = Preconditions.checkNotNull(propertyPrefix, "propertyPrefix");
} this.annotationClazz = Preconditions.checkNotNull(annotationClazz, "annotationClazz");
public HttpClientModule(String propertyPrefix, Class<? extends Annotation> annotation) isEscalated = ESCALATING_ANNOTATIONS.contains(this.annotationClazz);
{
this.propertyPrefix = propertyPrefix;
this.annotationClazz = annotation;
isEscalated = ESCALATING_ANNOTATIONS.contains(annotationClazz);
}
public HttpClientModule(String propertyPrefix, Annotation annotation)
{
this.propertyPrefix = propertyPrefix;
this.annotation = annotation;
} }
@Override @Override
public void configure(Binder binder) public void configure(Binder binder)
{ {
if (annotation != null) { JsonConfigProvider.bind(binder, propertyPrefix, DruidHttpClientConfig.class, annotationClazz);
JsonConfigProvider.bind(binder, propertyPrefix, DruidHttpClientConfig.class, annotation); binder.bind(HttpClient.class)
binder.bind(HttpClient.class) .annotatedWith(annotationClazz)
.annotatedWith(annotation) .toProvider(new HttpClientProvider(annotationClazz, isEscalated))
.toProvider(new HttpClientProvider(annotation, isEscalated)) .in(LazySingleton.class);
.in(LazySingleton.class);
} else if (annotationClazz != null) {
JsonConfigProvider.bind(binder, propertyPrefix, DruidHttpClientConfig.class, annotationClazz);
binder.bind(HttpClient.class)
.annotatedWith(annotationClazz)
.toProvider(new HttpClientProvider(annotationClazz, isEscalated))
.in(LazySingleton.class);
} else {
JsonConfigProvider.bind(binder, propertyPrefix, DruidHttpClientConfig.class);
binder.bind(HttpClient.class)
.toProvider(new HttpClientProvider(isEscalated))
.in(LazySingleton.class);
}
} }
public static class HttpClientProvider extends AbstractHttpClientProvider<HttpClient> public static class HttpClientProvider extends AbstractHttpClientProvider<HttpClient>
{ {
private boolean isEscalated; private final boolean isEscalated;
private Escalator escalator; private Escalator escalator;
public HttpClientProvider(boolean isEscalated)
{
this.isEscalated = isEscalated;
}
public HttpClientProvider(Annotation annotation, boolean isEscalated)
{
super(annotation);
this.isEscalated = isEscalated;
}
public HttpClientProvider(Class<? extends Annotation> annotationClazz, boolean isEscalated) public HttpClientProvider(Class<? extends Annotation> annotationClazz, boolean isEscalated)
{ {
super(annotationClazz); super(annotationClazz);
@ -144,8 +112,10 @@ public class HttpClientModule implements Module
) )
.withUnusedConnectionTimeoutDuration(config.getUnusedConnectionTimeout()); .withUnusedConnectionTimeoutDuration(config.getUnusedConnectionTimeout());
if (getSslContextBinding() != null) { final Binding<SSLContext> sslContextBinding = getSslContextBinding();
builder.withSslContext(getSslContextBinding().getProvider().get());
if (sslContextBinding != null) {
builder.withSslContext(sslContextBinding.getProvider().get());
} }
HttpClient client = HttpClientInit.createClient( HttpClient client = HttpClientInit.createClient(

View File

@ -19,7 +19,9 @@
package org.apache.druid.guice.http; package org.apache.druid.guice.http;
import com.google.common.base.Preconditions;
import com.google.inject.Binder; import com.google.inject.Binder;
import com.google.inject.Binding;
import com.google.inject.Module; import com.google.inject.Module;
import org.apache.druid.guice.JsonConfigProvider; import org.apache.druid.guice.JsonConfigProvider;
import org.apache.druid.guice.LazySingleton; import org.apache.druid.guice.LazySingleton;
@ -29,10 +31,12 @@ import org.eclipse.jetty.client.HttpClient;
import org.eclipse.jetty.util.ssl.SslContextFactory; import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.eclipse.jetty.util.thread.QueuedThreadPool;
import javax.net.ssl.SSLContext;
import java.lang.annotation.Annotation; import java.lang.annotation.Annotation;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
/** /**
*
*/ */
public class JettyHttpClientModule implements Module public class JettyHttpClientModule implements Module
{ {
@ -44,60 +48,26 @@ public class JettyHttpClientModule implements Module
} }
private final String propertyPrefix; private final String propertyPrefix;
private Annotation annotation = null; private final Class<? extends Annotation> annotationClazz;
private Class<? extends Annotation> annotationClazz = null;
public JettyHttpClientModule(String propertyPrefix) public JettyHttpClientModule(String propertyPrefix, Class<? extends Annotation> annotationClazz)
{ {
this.propertyPrefix = propertyPrefix; this.propertyPrefix = Preconditions.checkNotNull(propertyPrefix, "propertyPrefix");
} this.annotationClazz = Preconditions.checkNotNull(annotationClazz, "annotationClazz");
public JettyHttpClientModule(String propertyPrefix, Class<? extends Annotation> annotation)
{
this.propertyPrefix = propertyPrefix;
this.annotationClazz = annotation;
}
public JettyHttpClientModule(String propertyPrefix, Annotation annotation)
{
this.propertyPrefix = propertyPrefix;
this.annotation = annotation;
} }
@Override @Override
public void configure(Binder binder) public void configure(Binder binder)
{ {
if (annotation != null) { JsonConfigProvider.bind(binder, propertyPrefix, DruidHttpClientConfig.class, annotationClazz);
JsonConfigProvider.bind(binder, propertyPrefix, DruidHttpClientConfig.class, annotation); binder.bind(HttpClient.class)
binder.bind(HttpClient.class) .annotatedWith(annotationClazz)
.annotatedWith(annotation) .toProvider(new HttpClientProvider(annotationClazz))
.toProvider(new HttpClientProvider(annotation)) .in(LazySingleton.class);
.in(LazySingleton.class);
} else if (annotationClazz != null) {
JsonConfigProvider.bind(binder, propertyPrefix, DruidHttpClientConfig.class, annotationClazz);
binder.bind(HttpClient.class)
.annotatedWith(annotationClazz)
.toProvider(new HttpClientProvider(annotationClazz))
.in(LazySingleton.class);
} else {
JsonConfigProvider.bind(binder, propertyPrefix, DruidHttpClientConfig.class);
binder.bind(HttpClient.class)
.toProvider(new HttpClientProvider())
.in(LazySingleton.class);
}
} }
public static class HttpClientProvider extends AbstractHttpClientProvider<HttpClient> public static class HttpClientProvider extends AbstractHttpClientProvider<HttpClient>
{ {
public HttpClientProvider()
{
}
public HttpClientProvider(Annotation annotation)
{
super(annotation);
}
public HttpClientProvider(Class<? extends Annotation> annotation) public HttpClientProvider(Class<? extends Annotation> annotation)
{ {
super(annotation); super(annotation);
@ -109,9 +79,10 @@ public class JettyHttpClientModule implements Module
final DruidHttpClientConfig config = getConfigProvider().get().get(); final DruidHttpClientConfig config = getConfigProvider().get().get();
final HttpClient httpClient; final HttpClient httpClient;
if (getSslContextBinding() != null) { final Binding<SSLContext> sslContextBinding = getSslContextBinding();
final SslContextFactory sslContextFactory = new SslContextFactory(); if (sslContextBinding != null) {
sslContextFactory.setSslContext(getSslContextBinding().getProvider().get()); final SslContextFactory.Client sslContextFactory = new SslContextFactory.Client();
sslContextFactory.setSslContext(sslContextBinding.getProvider().get());
httpClient = new HttpClient(sslContextFactory); httpClient = new HttpClient(sslContextFactory);
} else { } else {
httpClient = new HttpClient(); httpClient = new HttpClient();

View File

@ -106,7 +106,7 @@ public class ChatHandlerServerModule implements Module
node, node,
config, config,
TLSServerConfig, TLSServerConfig,
injector.getExistingBinding(Key.get(SslContextFactory.class)), injector.getExistingBinding(Key.get(SslContextFactory.Server.class)),
injector.getInstance(TLSCertificateChecker.class) injector.getInstance(TLSCertificateChecker.class)
); );
} }

View File

@ -132,7 +132,7 @@ public class CliIndexerServerModule implements Module
node, node,
makeAdjustedServerConfig(config), makeAdjustedServerConfig(config),
TLSServerConfig, TLSServerConfig,
injector.getExistingBinding(Key.get(SslContextFactory.class)), injector.getExistingBinding(Key.get(SslContextFactory.Server.class)),
injector.getInstance(TLSCertificateChecker.class) injector.getInstance(TLSCertificateChecker.class)
); );
} }

View File

@ -94,6 +94,7 @@ import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
/** /**
*
*/ */
public class JettyServerModule extends JerseyServletModule public class JettyServerModule extends JerseyServletModule
{ {
@ -168,7 +169,7 @@ public class JettyServerModule extends JerseyServletModule
node, node,
config, config,
TLSServerConfig, TLSServerConfig,
injector.getExistingBinding(Key.get(SslContextFactory.class)), injector.getExistingBinding(Key.get(SslContextFactory.Server.class)),
injector.getInstance(TLSCertificateChecker.class) injector.getInstance(TLSCertificateChecker.class)
); );
} }
@ -197,7 +198,7 @@ public class JettyServerModule extends JerseyServletModule
DruidNode node, DruidNode node,
ServerConfig config, ServerConfig config,
TLSServerConfig tlsServerConfig, TLSServerConfig tlsServerConfig,
Binding<SslContextFactory> sslContextFactoryBinding, Binding<SslContextFactory.Server> sslContextFactoryBinding,
TLSCertificateChecker certificateChecker TLSCertificateChecker certificateChecker
) )
{ {
@ -245,7 +246,8 @@ public class JettyServerModule extends JerseyServletModule
serverConnectors.add(connector); serverConnectors.add(connector);
} }
final SslContextFactory sslContextFactory; final SslContextFactory.Server sslContextFactory;
if (node.isEnableTlsPort()) { if (node.isEnableTlsPort()) {
log.info("Creating https connector with port [%d]", node.getTlsPort()); log.info("Creating https connector with port [%d]", node.getTlsPort());
if (sslContextFactoryBinding == null) { if (sslContextFactoryBinding == null) {
@ -498,7 +500,7 @@ public class JettyServerModule extends JerseyServletModule
} }
} }
private static class IdentityCheckOverrideSslContextFactory extends SslContextFactory private static class IdentityCheckOverrideSslContextFactory extends SslContextFactory.Server
{ {
private final TLSServerConfig tlsServerConfig; private final TLSServerConfig tlsServerConfig;
private final TLSCertificateChecker certificateChecker; private final TLSCertificateChecker certificateChecker;
@ -508,7 +510,7 @@ public class JettyServerModule extends JerseyServletModule
TLSCertificateChecker certificateChecker TLSCertificateChecker certificateChecker
) )
{ {
super(false); super();
this.tlsServerConfig = tlsServerConfig; this.tlsServerConfig = tlsServerConfig;
this.certificateChecker = certificateChecker; this.certificateChecker = certificateChecker;
} }