Skip to content

Commit 32ed634

Browse files
committed
Fix for http://java.net/jira/browse/GRIZZLY-1081. Custom threadpool is ignored when set in AsyncHttpClientConfigBuilder.
1 parent 3287745 commit 32ed634

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

src/main/java/com/ning/http/client/providers/grizzly/GrizzlyAsyncHttpProvider.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
import org.glassfish.grizzly.ssl.SSLEngineConfigurator;
8282
import org.glassfish.grizzly.ssl.SSLFilter;
8383
import org.glassfish.grizzly.strategies.SameThreadIOStrategy;
84+
import org.glassfish.grizzly.strategies.WorkerThreadIOStrategy;
8485
import org.glassfish.grizzly.utils.BufferOutputStream;
8586
import org.glassfish.grizzly.utils.DelayedExecutor;
8687
import org.glassfish.grizzly.utils.IdleTimeoutFilter;
@@ -104,6 +105,7 @@
104105
import java.util.Map;
105106
import java.util.concurrent.Callable;
106107
import java.util.concurrent.ExecutionException;
108+
import java.util.concurrent.ExecutorService;
107109
import java.util.concurrent.Semaphore;
108110
import java.util.concurrent.TimeUnit;
109111
import java.util.concurrent.TimeoutException;
@@ -225,6 +227,10 @@ public void close() {
225227
try {
226228
connectionManager.destroy();
227229
clientTransport.stop();
230+
final ExecutorService service = clientConfig.executorService();
231+
if (service != null) {
232+
service.shutdown();
233+
}
228234
if (timeoutExecutor != null) {
229235
timeoutExecutor.stop();
230236
}
@@ -277,8 +283,6 @@ protected <T> ListenableFuture<T> execute(final Connection c,
277283

278284

279285
protected void initializeTransport(AsyncHttpClientConfig clientConfig) {
280-
281-
282286

283287
final FilterChainBuilder fcb = FilterChainBuilder.stateless();
284288
fcb.add(new AsyncHttpClientTransportFilter());
@@ -354,7 +358,7 @@ public void onTimeout(Connection connection) {
354358
}
355359
fcb.add(eventFilter);
356360
fcb.add(clientFilter);
357-
361+
358362
GrizzlyAsyncHttpProviderConfig providerConfig =
359363
(GrizzlyAsyncHttpProviderConfig) clientConfig.getAsyncHttpProviderConfig();
360364
if (providerConfig != null) {
@@ -363,10 +367,10 @@ public void onTimeout(Connection connection) {
363367
if (customizer != null) {
364368
customizer.customize(clientTransport, fcb);
365369
} else {
366-
clientTransport.setIOStrategy(SameThreadIOStrategy.getInstance());
370+
doDefaultTransportConfig();
367371
}
368372
} else {
369-
clientTransport.setIOStrategy(SameThreadIOStrategy.getInstance());
373+
doDefaultTransportConfig();
370374
}
371375

372376
clientTransport.setProcessor(fcb.build());
@@ -401,6 +405,16 @@ void touchConnection(final Connection c, final Request request) {
401405

402406

403407
// --------------------------------------------------------- Private Methods
408+
409+
private void doDefaultTransportConfig() {
410+
final ExecutorService service = clientConfig.executorService();
411+
if (service != null) {
412+
clientTransport.setIOStrategy(WorkerThreadIOStrategy.getInstance());
413+
clientTransport.setWorkerThreadPool(service);
414+
} else {
415+
clientTransport.setIOStrategy(SameThreadIOStrategy.getInstance());
416+
}
417+
}
404418

405419

406420
private <T> CompletionHandler<WriteResult> createWriteCompletionHandler(final GrizzlyResponseFuture<T> future) {

0 commit comments

Comments
 (0)