diff options
author | Simone Bordet | 2014-05-05 13:35:11 +0000 |
---|---|---|
committer | Simone Bordet | 2014-05-05 14:28:40 +0000 |
commit | 2346f1ebfbaa6621dd40982ea2c58caa5aaf24d4 (patch) | |
tree | 2200251c538e92ab8170a2d23a9068021343ab23 | |
parent | 97fd4e48a66f5748f284603b32242796590a1038 (diff) | |
download | org.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.java | 26 |
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 |