Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimone Bordet2014-05-05 13:35:11 +0000
committerSimone Bordet2014-05-05 14:28:40 +0000
commit2346f1ebfbaa6621dd40982ea2c58caa5aaf24d4 (patch)
tree2200251c538e92ab8170a2d23a9068021343ab23
parent97fd4e48a66f5748f284603b32242796590a1038 (diff)
downloadorg.eclipse.jetty.project-2346f1ebfbaa6621dd40982ea2c58caa5aaf24d4.tar.gz
org.eclipse.jetty.project-2346f1ebfbaa6621dd40982ea2c58caa5aaf24d4.tar.xz
org.eclipse.jetty.project-2346f1ebfbaa6621dd40982ea2c58caa5aaf24d4.zip
Dispatching execution of blocking code to a different thread to avoid
to block the selector thread.
-rw-r--r--jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ConnectHandler.java26
1 files changed, 18 insertions, 8 deletions
diff --git a/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ConnectHandler.java b/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ConnectHandler.java
index 49dd797c26..5a55014597 100644
--- a/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ConnectHandler.java
+++ b/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ConnectHandler.java
@@ -28,7 +28,6 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.Executor;
-
import javax.servlet.AsyncContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
@@ -432,8 +431,7 @@ public class ConnectHandler extends HandlerWrapper
protected class ConnectManager extends SelectorManager
{
-
- private ConnectManager(Executor executor, Scheduler scheduler, int selectors)
+ protected ConnectManager(Executor executor, Scheduler scheduler, int selectors)
{
super(executor, scheduler, selectors);
}
@@ -455,10 +453,16 @@ public class ConnectHandler extends HandlerWrapper
}
@Override
- protected void connectionFailed(SocketChannel channel, Throwable ex, Object attachment)
+ protected void connectionFailed(SocketChannel channel, final Throwable ex, final Object attachment)
{
- ConnectContext connectContext = (ConnectContext)attachment;
- onConnectFailure(connectContext.request, connectContext.response, connectContext.asyncContext, ex);
+ getExecutor().execute(new Runnable()
+ {
+ public void run()
+ {
+ ConnectContext connectContext = (ConnectContext)attachment;
+ onConnectFailure(connectContext.request, connectContext.response, connectContext.asyncContext, ex);
+ }
+ });
}
}
@@ -518,8 +522,14 @@ public class ConnectHandler extends HandlerWrapper
public void onOpen()
{
super.onOpen();
- onConnectSuccess(connectContext, this);
- fillInterested();
+ getExecutor().execute(new Runnable()
+ {
+ public void run()
+ {
+ onConnectSuccess(connectContext, UpstreamConnection.this);
+ fillInterested();
+ }
+ });
}
@Override

Back to the top