diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e134d3..e9dfce0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,16 @@ Parallec Change Log ========== + + +## Version 0.20.0-SNAPSHOT + +_2016-09-30_ + +* Issue [#37](https://github.com/eBay/parallec/issues/37). Upgraded Async-http-client to version 2.0.15. This version has not been tested in PROD environment. The client auth plugin is to be tested. The code is in branch `issue37` + + + ## Version 0.10.1-beta diff --git a/pom.xml b/pom.xml index b86daa4..704d768 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 io.parallec parallec-core - 0.10.1-beta + 0.20.1-SNAPSHOT jar io.parallec:parallec-core https://github.com/eBay/parallec @@ -56,7 +56,7 @@ 1.10 2.3 - 1.6.5 + 2.0.15 2.3.3 2.3.3 @@ -119,11 +119,18 @@ commons-lang3 ${commons-lang3.version} - + + + org.asynchttpclient + async-http-client + ${async-http-client.version} + + + com.typesafe.akka akka-actor_2.10 @@ -205,8 +212,8 @@ org.apache.maven.plugins maven-compiler-plugin - 1.7 - 1.7 + 1.8 + 1.8 @@ -257,8 +264,8 @@ org.apache.maven.plugins maven-compiler-plugin - 1.6 - 1.6 + 1.8 + 1.8 diff --git a/src/main/java/io/parallec/core/ParallelClient.java b/src/main/java/io/parallec/core/ParallelClient.java index d3b41d1..db116ef 100644 --- a/src/main/java/io/parallec/core/ParallelClient.java +++ b/src/main/java/io/parallec/core/ParallelClient.java @@ -25,7 +25,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.ning.http.client.AsyncHttpClient; +import org.asynchttpclient.AsyncHttpClient; /** * diff --git a/src/main/java/io/parallec/core/ParallelTask.java b/src/main/java/io/parallec/core/ParallelTask.java index 53a08b0..df12284 100644 --- a/src/main/java/io/parallec/core/ParallelTask.java +++ b/src/main/java/io/parallec/core/ParallelTask.java @@ -52,7 +52,7 @@ import akka.actor.ActorRef; -import com.ning.http.client.AsyncHttpClient; +import org.asynchttpclient.AsyncHttpClient; /** * The key class represents a onetime execution on multiple requests. It diff --git a/src/main/java/io/parallec/core/ParallelTaskBuilder.java b/src/main/java/io/parallec/core/ParallelTaskBuilder.java index dbafb2d..a136863 100644 --- a/src/main/java/io/parallec/core/ParallelTaskBuilder.java +++ b/src/main/java/io/parallec/core/ParallelTaskBuilder.java @@ -48,7 +48,7 @@ import org.slf4j.LoggerFactory; import com.google.common.base.Strings; -import com.ning.http.client.AsyncHttpClient; +import org.asynchttpclient.AsyncHttpClient; // TODO: Auto-generated Javadoc diff --git a/src/main/java/io/parallec/core/actor/ExecutionManager.java b/src/main/java/io/parallec/core/actor/ExecutionManager.java index c754b35..1cca6cb 100644 --- a/src/main/java/io/parallec/core/actor/ExecutionManager.java +++ b/src/main/java/io/parallec/core/actor/ExecutionManager.java @@ -68,7 +68,7 @@ import akka.actor.UntypedActor; import com.google.common.base.Strings; -import com.ning.http.client.AsyncHttpClient; +import org.asynchttpclient.AsyncHttpClient; /** * This is the Akka Actor that executes the ParallelTask. diff --git a/src/main/java/io/parallec/core/actor/HttpWorker.java b/src/main/java/io/parallec/core/actor/HttpWorker.java index c8f6775..49e5715 100644 --- a/src/main/java/io/parallec/core/actor/HttpWorker.java +++ b/src/main/java/io/parallec/core/actor/HttpWorker.java @@ -24,7 +24,7 @@ import io.parallec.core.util.PcHttpUtils; import io.parallec.core.util.PcStringUtils; -import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; @@ -32,6 +32,11 @@ import java.util.Map; import java.util.concurrent.TimeUnit; +import org.asynchttpclient.AsyncCompletionHandler; +import org.asynchttpclient.AsyncHttpClient; +import org.asynchttpclient.BoundRequestBuilder; +import org.asynchttpclient.ListenableFuture; +import org.asynchttpclient.Response; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,13 +48,7 @@ import akka.actor.UntypedActor; import com.google.common.base.Strings; -import com.ning.http.client.AsyncCompletionHandler; -import com.ning.http.client.AsyncHttpClient; -import com.ning.http.client.AsyncHttpClient.BoundRequestBuilder; -import com.ning.http.client.ListenableFuture; -import com.ning.http.client.Response; -// TODO: Auto-generated Javadoc /** * This is an akka actor with async http client. * @@ -367,18 +366,24 @@ public ResponseOnSingeRequest onComplete(Response response) { cancelCancellable(); try { Map> responseHeaders = null; + //TODO FIX NOT TESTED if (responseHeaderMeta != null) { responseHeaders = new LinkedHashMap>(); if (responseHeaderMeta.isGetAll()) { - for (Map.Entry> header : response - .getHeaders()) { - responseHeaders.put(header.getKey().toLowerCase(Locale.ROOT), header.getValue()); + for (Map.Entry header : response.getHeaders() + .entries()) { + List list = new ArrayList(); + list.add( header.getValue()); + responseHeaders.put(header.getKey().toLowerCase(Locale.ROOT), + list); } } else { for (String key : responseHeaderMeta.getKeys()) { - if (response.getHeaders().containsKey(key)) { + if (response.getHeaders().contains(key)) { + List list = new ArrayList(); + list.add(response.getHeaders().get(key)); responseHeaders.put(key.toLowerCase(Locale.ROOT), - response.getHeaders().get(key)); + list ); } } } @@ -389,7 +394,7 @@ public ResponseOnSingeRequest onComplete(Response response) { reply(response.getResponseBody(), false, null, null, statusCode, statusCodeInt, responseHeaders); - } catch (IOException e) { + } catch (Exception e) { getLogger().error("fail response.getResponseBody " + e); } diff --git a/src/main/java/io/parallec/core/actor/OperationWorker.java b/src/main/java/io/parallec/core/actor/OperationWorker.java index 8c663d4..7785038 100644 --- a/src/main/java/io/parallec/core/actor/OperationWorker.java +++ b/src/main/java/io/parallec/core/actor/OperationWorker.java @@ -43,7 +43,7 @@ import akka.actor.Props; import akka.actor.UntypedActor; -import com.ning.http.client.AsyncHttpClient; +import org.asynchttpclient.AsyncHttpClient; diff --git a/src/main/java/io/parallec/core/bean/HttpMeta.java b/src/main/java/io/parallec/core/bean/HttpMeta.java index 9d96ffa..1e993f0 100644 --- a/src/main/java/io/parallec/core/bean/HttpMeta.java +++ b/src/main/java/io/parallec/core/bean/HttpMeta.java @@ -19,11 +19,10 @@ import io.parallec.core.resources.HttpMethod; import io.parallec.core.util.PcConstants; +import org.asynchttpclient.AsyncHttpClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.ning.http.client.AsyncHttpClient; - // TODO: Auto-generated Javadoc /** * The metadata about the HTTP request (url/port/header/concurrency etc) It does diff --git a/src/main/java/io/parallec/core/resources/AsyncHttpClientFactoryEmbed.java b/src/main/java/io/parallec/core/resources/AsyncHttpClientFactoryEmbed.java index 03b5bf2..5126846 100644 --- a/src/main/java/io/parallec/core/resources/AsyncHttpClientFactoryEmbed.java +++ b/src/main/java/io/parallec/core/resources/AsyncHttpClientFactoryEmbed.java @@ -32,12 +32,13 @@ import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; +import org.asynchttpclient.AsyncHttpClient; +import org.asynchttpclient.AsyncHttpClientConfig; +import org.asynchttpclient.DefaultAsyncHttpClient; +import org.asynchttpclient.DefaultAsyncHttpClientConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.ning.http.client.AsyncHttpClient; -import com.ning.http.client.AsyncHttpClientConfigBean; - /** * The Class HttpClientFactoryEmbed. @@ -65,29 +66,28 @@ public AsyncHttpClientFactoryEmbed() { try { // create and configure async http client - AsyncHttpClientConfigBean configFastClient = new AsyncHttpClientConfigBean(); - + AsyncHttpClientConfig configFastClient = new DefaultAsyncHttpClientConfig.Builder() + .setConnectTimeout(ParallecGlobalConfig.ningFastClientConnectionTimeoutMillis) + .setRequestTimeout(ParallecGlobalConfig.ningFastClientConnectionTimeoutMillis) + .build(); logger.info( "FastClient: ningFastClientConnectionTimeoutMillis: {}", ParallecGlobalConfig.ningFastClientConnectionTimeoutMillis); - configFastClient - .setConnectionTimeOutInMs(ParallecGlobalConfig.ningFastClientConnectionTimeoutMillis); - + logger.info("FastClient: ningFastClientRequestTimeoutMillis: {}", ParallecGlobalConfig.ningFastClientRequestTimeoutMillis); - configFastClient - .setRequestTimeoutInMs(ParallecGlobalConfig.ningFastClientRequestTimeoutMillis); - fastClient = new AsyncHttpClient(configFastClient); + fastClient = new DefaultAsyncHttpClient(configFastClient); + // TODO added // configFastClient.setMaxRequestRetry(3); - AsyncHttpClientConfigBean configSlowClient = new AsyncHttpClientConfigBean(); - configSlowClient - .setConnectionTimeOutInMs(ParallecGlobalConfig.ningSlowClientConnectionTimeoutMillis); - configSlowClient - .setRequestTimeoutInMs(ParallecGlobalConfig.ningSlowClientRequestTimeoutMillis); - slowClient = new AsyncHttpClient(configSlowClient); + //TODO UNTESTED + AsyncHttpClientConfig configSlowClient = new DefaultAsyncHttpClientConfig.Builder() + .setConnectTimeout(ParallecGlobalConfig.ningSlowClientConnectionTimeoutMillis) + .setRequestTimeout(ParallecGlobalConfig.ningSlowClientRequestTimeoutMillis) + .build(); + slowClient = new DefaultAsyncHttpClient(configSlowClient); disableCertificateVerification(); } catch (Exception e) { diff --git a/src/main/java/io/parallec/core/resources/HttpClientStore.java b/src/main/java/io/parallec/core/resources/HttpClientStore.java index 0d6349f..2d4481e 100644 --- a/src/main/java/io/parallec/core/resources/HttpClientStore.java +++ b/src/main/java/io/parallec/core/resources/HttpClientStore.java @@ -12,11 +12,14 @@ */ package io.parallec.core.resources; +import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; -import com.ning.http.client.AsyncHttpClient; +import org.asynchttpclient.AsyncHttpClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** @@ -35,6 +38,10 @@ */ public class HttpClientStore { + /** The logger. */ + private static Logger logger = LoggerFactory + .getLogger(HttpClientStore.class); + /** The http client type current default. */ private HttpClientType httpClientTypeCurrentDefault; @@ -93,7 +100,11 @@ public void shutdown() { for (Entry entry : map.entrySet()) { AsyncHttpClient client = entry.getValue(); if (client != null) - client.close(); + try { + client.close(); + } catch (IOException ex) { + logger.error("error",ex); + } } } diff --git a/src/main/java/io/parallec/core/util/PcHttpUtils.java b/src/main/java/io/parallec/core/util/PcHttpUtils.java index 40b0dd6..798d934 100644 --- a/src/main/java/io/parallec/core/util/PcHttpUtils.java +++ b/src/main/java/io/parallec/core/util/PcHttpUtils.java @@ -20,7 +20,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.ning.http.client.AsyncHttpClient.BoundRequestBuilder; +import org.asynchttpclient.BoundRequestBuilder; /**