Skip to content

Commit 3645dec

Browse files
committed
Upgrade async http client
Current usages of async http client when making SSL connections is having issues. Upgrading the client, similar to pinot in this PR apache/pinot#7968
1 parent 1c80a63 commit 3645dec

File tree

3 files changed

+40
-45
lines changed

3 files changed

+40
-45
lines changed

subprojects/parseq-http-client/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ ext {
33
}
44

55
dependencies {
6-
compile group: 'com.ning', name: 'async-http-client', version:'1.9.21'
6+
implementation group: 'org.asynchttpclient', name: 'async-http-client', version:'2.12.3'
77
}
Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package com.linkedin.parseq.httpclient;
22

3+
import java.io.IOException;
34
import java.util.concurrent.atomic.AtomicReference;
45

5-
import com.ning.http.client.AsyncHttpClient;
6-
import com.ning.http.client.AsyncHttpClientConfig;
6+
import org.asynchttpclient.AsyncHttpClient;
7+
import org.asynchttpclient.AsyncHttpClientConfig;
8+
import org.asynchttpclient.DefaultAsyncHttpClientConfig.Builder;
9+
import org.asynchttpclient.Dsl;
10+
711

812
public class HttpClient {
913

@@ -15,9 +19,9 @@ public class HttpClient {
1519
* then new client is created with default configuration.
1620
* @return raw http client
1721
*/
18-
public static synchronized AsyncHttpClient getNingClient() {
22+
public static synchronized AsyncHttpClient getAsyncHttpClient() {
1923
if (_client.get() == null) {
20-
initialize(new AsyncHttpClientConfig.Builder().build());
24+
initialize(new Builder().build());
2125
}
2226
return _client.get();
2327
}
@@ -29,43 +33,43 @@ public static synchronized AsyncHttpClient getNingClient() {
2933
*/
3034
@SuppressWarnings("resource")
3135
public static synchronized void initialize(AsyncHttpClientConfig cfg) {
32-
if (!_client.compareAndSet(null, new AsyncHttpClient(cfg))) {
36+
if (!_client.compareAndSet(null, Dsl.asyncHttpClient(cfg))) {
3337
throw new RuntimeException("async http client concurrently initialized");
3438
}
3539
}
3640

37-
public static void close() {
41+
public static void close() throws IOException {
3842
if (_client.get() != null) {
3943
_client.get().close();
4044
}
4145
}
4246

4347
public static WrappedRequestBuilder get(String url) {
44-
return new WrappedRequestBuilder(getNingClient().prepareGet(url), "GET " + url);
48+
return new WrappedRequestBuilder(getAsyncHttpClient().prepareGet(url), "GET " + url);
4549
}
4650

4751
public static WrappedRequestBuilder connect(String url) {
48-
return new WrappedRequestBuilder(getNingClient().prepareConnect(url), "CONNECT " + url);
52+
return new WrappedRequestBuilder(getAsyncHttpClient().prepareConnect(url), "CONNECT " + url);
4953
}
5054

5155
public static WrappedRequestBuilder options(String url) {
52-
return new WrappedRequestBuilder(getNingClient().prepareOptions(url), "OPTIONS " + url);
56+
return new WrappedRequestBuilder(getAsyncHttpClient().prepareOptions(url), "OPTIONS " + url);
5357
}
5458

5559
public static WrappedRequestBuilder head(String url) {
56-
return new WrappedRequestBuilder(getNingClient().prepareHead(url), "HEAD " + url);
60+
return new WrappedRequestBuilder(getAsyncHttpClient().prepareHead(url), "HEAD " + url);
5761
}
5862

5963
public static WrappedRequestBuilder post(String url) {
60-
return new WrappedRequestBuilder(getNingClient().preparePost(url), "POST " + url);
64+
return new WrappedRequestBuilder(getAsyncHttpClient().preparePost(url), "POST " + url);
6165
}
6266

6367
public static WrappedRequestBuilder put(String url) {
64-
return new WrappedRequestBuilder(getNingClient().preparePut(url), "PUT " + url);
68+
return new WrappedRequestBuilder(getAsyncHttpClient().preparePut(url), "PUT " + url);
6569
}
6670

6771
public static WrappedRequestBuilder delete(String url) {
68-
return new WrappedRequestBuilder(getNingClient().prepareDelete(url), "DELETE " + url);
72+
return new WrappedRequestBuilder(getAsyncHttpClient().prepareDelete(url), "DELETE " + url);
6973
}
7074

7175
}

subprojects/parseq-http-client/src/main/java/com/linkedin/parseq/httpclient/WrappedRequestBuilder.java

Lines changed: 22 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,21 @@
1010
import com.linkedin.parseq.Task;
1111
import com.linkedin.parseq.promise.Promises;
1212
import com.linkedin.parseq.promise.SettablePromise;
13-
import com.ning.http.client.AsyncHttpClient.BoundRequestBuilder;
14-
import com.ning.http.client.AsyncCompletionHandler;
15-
import com.ning.http.client.BodyGenerator;
16-
import com.ning.http.client.ConnectionPoolPartitioning;
17-
import com.ning.http.client.FluentCaseInsensitiveStringsMap;
18-
import com.ning.http.client.Param;
19-
import com.ning.http.client.ProxyServer;
20-
import com.ning.http.client.Realm;
21-
import com.ning.http.client.Request;
22-
import com.ning.http.client.Response;
23-
import com.ning.http.client.SignatureCalculator;
24-
import com.ning.http.client.cookie.Cookie;
25-
import com.ning.http.client.multipart.Part;
26-
import com.ning.http.client.uri.Uri;
13+
import org.asynchttpclient.BoundRequestBuilder;
14+
15+
import org.asynchttpclient.AsyncCompletionHandler;
16+
import org.asynchttpclient.request.body.generator.BodyGenerator;
17+
import org.asynchttpclient.channel.ChannelPoolPartitioning;
18+
import io.netty.handler.codec.http.HttpHeaders;
19+
import org.asynchttpclient.Param;
20+
import org.asynchttpclient.proxy.ProxyServer;
21+
import org.asynchttpclient.Realm;
22+
import org.asynchttpclient.Request;
23+
import org.asynchttpclient.Response;
24+
import org.asynchttpclient.SignatureCalculator;
25+
import io.netty.handler.codec.http.cookie.Cookie;
26+
import org.asynchttpclient.request.body.multipart.Part;
27+
import org.asynchttpclient.uri.Uri;
2728

2829
public class WrappedRequestBuilder {
2930

@@ -58,12 +59,12 @@ public WrappedRequestBuilder addBodyPart(Part part) {
5859
}
5960

6061
public WrappedRequestBuilder setInetAddress(InetAddress address) {
61-
_delegate.setInetAddress(address);
62+
_delegate.setAddress(address);
6263
return this;
6364
}
6465

6566
public WrappedRequestBuilder setLocalInetAddress(InetAddress address) {
66-
_delegate.setLocalInetAddress(address);
67+
_delegate.setLocalAddress(address);
6768
return this;
6869
}
6970

@@ -101,11 +102,6 @@ public WrappedRequestBuilder setBody(InputStream stream) {
101102
return this;
102103
}
103104

104-
public WrappedRequestBuilder setContentLength(int length) {
105-
_delegate.setContentLength(length);
106-
return this;
107-
}
108-
109105
public WrappedRequestBuilder setBody(String data) {
110106
_delegate.setBody(data);
111107
return this;
@@ -121,7 +117,7 @@ public WrappedRequestBuilder setCookies(Collection<Cookie> cookies) {
121117
return this;
122118
}
123119

124-
public WrappedRequestBuilder setHeaders(FluentCaseInsensitiveStringsMap headers) {
120+
public WrappedRequestBuilder setHeaders(HttpHeaders headers) {
125121
_delegate.setHeaders(headers);
126122
return this;
127123
}
@@ -222,7 +218,7 @@ public WrappedRequestBuilder setRealm(Realm realm) {
222218
}
223219

224220
public WrappedRequestBuilder setFollowRedirects(boolean followRedirects) {
225-
_delegate.setFollowRedirects(followRedirects);
221+
_delegate.setFollowRedirect(followRedirects);
226222
return this;
227223
}
228224

@@ -241,13 +237,8 @@ public WrappedRequestBuilder setMethod(String method) {
241237
return this;
242238
}
243239

244-
public WrappedRequestBuilder setBodyEncoding(String charset) {
245-
_delegate.setBodyEncoding(charset);
246-
return this;
247-
}
248-
249-
public WrappedRequestBuilder setConnectionPoolKeyStrategy(ConnectionPoolPartitioning connectionPoolKeyStrategy) {
250-
_delegate.setConnectionPoolKeyStrategy(connectionPoolKeyStrategy);
240+
public WrappedRequestBuilder setConnectionPoolKeyStrategy(ChannelPoolPartitioning connectionPoolKeyStrategy) {
241+
_delegate.setChannelPoolPartitioning(connectionPoolKeyStrategy);
251242
return this;
252243
}
253244

@@ -257,7 +248,7 @@ public Task<Response> task(final String desc) {
257248
_delegate.execute(new AsyncCompletionHandler<Response>() {
258249

259250
@Override
260-
public Response onCompleted(final Response response) throws Exception {
251+
public Response onCompleted(final Response response) {
261252
result.done(response);
262253
return response;
263254
}

0 commit comments

Comments
 (0)