Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
package com.facebook.presto.cli;

import com.facebook.presto.client.ClientSession;
import com.facebook.presto.client.SocketChannelSocketFactory;
import com.facebook.presto.client.StatementClient;
import com.google.common.net.HostAndPort;
import okhttp3.OkHttpClient;
Expand All @@ -29,6 +28,7 @@
import static com.facebook.presto.client.GCSOAuthInterceptor.GCS_CREDENTIALS_PATH_KEY;
import static com.facebook.presto.client.GCSOAuthInterceptor.GCS_OAUTH_SCOPES_KEY;
import static com.facebook.presto.client.OkHttpUtil.basicAuth;
import static com.facebook.presto.client.OkHttpUtil.forceHttp11OnJava11OrLater;
import static com.facebook.presto.client.OkHttpUtil.setupCookieJar;
import static com.facebook.presto.client.OkHttpUtil.setupGCSOauth;
import static com.facebook.presto.client.OkHttpUtil.setupHttpProxy;
Expand Down Expand Up @@ -76,7 +76,8 @@ public QueryRunner(

OkHttpClient.Builder builder = new OkHttpClient.Builder();

builder.socketFactory(new SocketChannelSocketFactory());
// Avoids threads hanging using http2 on java 11 or later
forceHttp11OnJava11OrLater(builder);

setupTimeouts(builder, 30, SECONDS);
setupCookieJar(builder);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,15 @@

import com.facebook.airlift.security.pem.PemReader;
import com.google.common.base.CharMatcher;
import com.google.common.base.StandardSystemProperty;
import com.google.common.net.HostAndPort;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Credentials;
import okhttp3.Interceptor;
import okhttp3.JavaNetCookieJar;
import okhttp3.OkHttpClient;
import okhttp3.Protocol;
import okhttp3.Response;

import javax.net.ssl.KeyManager;
Expand All @@ -46,6 +48,7 @@
import java.security.cert.CertificateNotYetValidException;
import java.security.cert.X509Certificate;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
Expand Down Expand Up @@ -277,4 +280,25 @@ public static void setupGCSOauth(OkHttpClient.Builder clientBuilder, String cred
GCSOAuthInterceptor handler = new GCSOAuthInterceptor(credentialPath, gcsOAuthScopesString);
clientBuilder.addInterceptor(handler);
}

public static void forceHttp11OnJava11OrLater(OkHttpClient.Builder builder)
{
if (isJava11OrLater()) {
builder.protocols(Collections.singletonList(Protocol.HTTP_1_1));
}
}

private static boolean isJava11OrLater()
{
try {
String javaVersion = StandardSystemProperty.JAVA_VERSION.value();
if (javaVersion == null) {
return false;
}
return Integer.parseInt(javaVersion.split("\\.")[0]) >= 11;
}
catch (NumberFormatException e) {
return false;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import static com.facebook.presto.client.OkHttpUtil.forceHttp11OnJava11OrLater;
import static com.facebook.presto.client.OkHttpUtil.userAgent;
import static com.google.common.base.Strings.nullToEmpty;
import static java.lang.Integer.parseInt;
Expand All @@ -42,10 +43,7 @@ public class PrestoDriver

private static final String DRIVER_URL_START = "jdbc:presto:";

private final OkHttpClient httpClient = new OkHttpClient.Builder()
.addInterceptor(userAgent(DRIVER_NAME + "/" + DRIVER_VERSION))
.socketFactory(new SocketChannelSocketFactory())
.build();
private final OkHttpClient httpClient = buildHttpClient();

static {
String version = nullToEmpty(PrestoDriver.class.getPackage().getImplementationVersion());
Expand Down Expand Up @@ -137,4 +135,14 @@ public Logger getParentLogger()
// TODO: support java.util.Logging
throw new SQLFeatureNotSupportedException();
}

private static OkHttpClient buildHttpClient()
{
OkHttpClient.Builder builder = new OkHttpClient.Builder()
.addInterceptor(userAgent(DRIVER_NAME + '/' + DRIVER_VERSION))
.socketFactory(new SocketChannelSocketFactory());
// Avoids threads hanging using http2 on java 11 or later
forceHttp11OnJava11OrLater(builder);
return builder.build();
}
}