Skip to content
Merged
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 @@ -17,6 +17,7 @@ public class ClickHouseProperties {
private int socketTimeout;
private int connectionTimeout;
private int dataTransferTimeout;
@Deprecated
private int keepAliveTimeout;
private int timeToLiveMillis;
private int defaultMaxPerRoute;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
package ru.yandex.clickhouse.util;

import org.apache.http.Header;
import org.apache.http.HeaderElement;
import org.apache.http.HeaderElementIterator;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpResponse;
import org.apache.http.*;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.config.ConnectionConfig;
import org.apache.http.config.RegistryBuilder;
Expand All @@ -13,6 +9,7 @@
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.DefaultConnectionReuseStrategy;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
Expand All @@ -21,7 +18,6 @@
import org.apache.http.protocol.HTTP;
import org.apache.http.protocol.HttpContext;
import ru.yandex.clickhouse.settings.ClickHouseProperties;
import ru.yandex.clickhouse.util.guava.StreamUtils;
import ru.yandex.clickhouse.util.ssl.NonValidatingTrustManager;

import javax.net.ssl.HostnameVerifier;
Expand Down Expand Up @@ -59,7 +55,7 @@ public ClickHouseHttpClientBuilder(ClickHouseProperties properties) {
public CloseableHttpClient buildClient() throws Exception {
return HttpClientBuilder.create()
.setConnectionManager(getConnectionManager())
.setKeepAliveStrategy(createKeepAliveStrategy())
.setConnectionReuseStrategy(getConnectionReuseStrategy())
.setDefaultConnectionConfig(getConnectionConfig())
.setDefaultRequestConfig(getRequestConfig())
.setDefaultHeaders(getDefaultHeaders())
Expand All @@ -68,6 +64,18 @@ public CloseableHttpClient buildClient() throws Exception {
.build();
}

private ConnectionReuseStrategy getConnectionReuseStrategy() {
return new DefaultConnectionReuseStrategy() {
@Override
public boolean keepAlive(HttpResponse httpResponse, HttpContext httpContext) {
if (httpResponse.getStatusLine().getStatusCode() != HttpURLConnection.HTTP_OK) {
return false;
}
return super.keepAlive(httpResponse, httpContext);
}
};
}

private PoolingHttpClientConnectionManager getConnectionManager()
throws CertificateException, NoSuchAlgorithmException, KeyStoreException, KeyManagementException, IOException {
RegistryBuilder<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
Expand Down