You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2013/04/30 12:39:36 UTC
svn commit: r1477543 - in /tomcat/trunk/java/org/apache: catalina/connector/
coyote/ coyote/ajp/ coyote/http11/ coyote/spdy/
Author: markt
Date: Tue Apr 30 10:39:36 2013
New Revision: 1477543
URL: http://svn.apache.org/r1477543
Log:
Remove the request.isAsyncOperation() method and the associated plumbing as res.getWriteListener() != null does the same thing with less code.
Add a (currently unimplemented) dispatch() line from READ_WRITE_OP to the state diagram.
Modified:
tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
tomcat/trunk/java/org/apache/catalina/connector/Request.java
tomcat/trunk/java/org/apache/coyote/ActionCode.java
tomcat/trunk/java/org/apache/coyote/AsyncStateMachine.java
tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java
tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
tomcat/trunk/java/org/apache/coyote/spdy/SpdyProcessor.java
Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=1477543&r1=1477542&r2=1477543&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Tue Apr 30 10:39:36 2013
@@ -345,44 +345,37 @@ public class CoyoteAdapter implements Ad
}
}
-
- if (!request.isAsyncDispatching() && request.isAsync() &&
- request.isAsyncOperation()) {
- if (status == SocketStatus.OPEN_WRITE) {
- if (res.getWriteListener() == null) {
- success = false;
- } else {
- ClassLoader oldCL =
- Thread.currentThread().getContextClassLoader();
- ClassLoader newCL =
- request.getContext().getLoader().getClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(newCL);
- res.getWriteListener().onWritePossible();
- } finally {
- Thread.currentThread().setContextClassLoader(oldCL);
- }
- success = true;
+ // Check to see if non-blocking writes are reads are being used
+ if (!request.isAsyncDispatching() && request.isAsync()) {
+ if (res.getWriteListener() != null &&
+ status == SocketStatus.OPEN_WRITE) {
+ ClassLoader oldCL =
+ Thread.currentThread().getContextClassLoader();
+ ClassLoader newCL =
+ request.getContext().getLoader().getClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(newCL);
+ res.getWriteListener().onWritePossible();
+ } finally {
+ Thread.currentThread().setContextClassLoader(oldCL);
}
- } else if (status == SocketStatus.OPEN_READ) {
- if (req.getReadListener() == null) {
- success = false;
- } else {
- ClassLoader oldCL =
- Thread.currentThread().getContextClassLoader();
- ClassLoader newCL =
- request.getContext().getLoader().getClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(newCL);
- req.getReadListener().onDataAvailable();
- if (request.getInputStream().isFinished()) {
- req.getReadListener().onAllDataRead();
- }
- } finally {
- Thread.currentThread().setContextClassLoader(oldCL);
+ success = true;
+ } else if (req.getReadListener() != null &&
+ status == SocketStatus.OPEN_READ) {
+ ClassLoader oldCL =
+ Thread.currentThread().getContextClassLoader();
+ ClassLoader newCL =
+ request.getContext().getLoader().getClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(newCL);
+ req.getReadListener().onDataAvailable();
+ if (request.getInputStream().isFinished()) {
+ req.getReadListener().onAllDataRead();
}
- success = true;
+ } finally {
+ Thread.currentThread().setContextClassLoader(oldCL);
}
+ success = true;
}
}
Modified: tomcat/trunk/java/org/apache/catalina/connector/Request.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Request.java?rev=1477543&r1=1477542&r2=1477543&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/Request.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/Request.java Tue Apr 30 10:39:36 2013
@@ -1661,16 +1661,6 @@ public class Request
return result.get();
}
- public boolean isAsyncOperation() {
- if (asyncContext == null) {
- return false;
- }
-
- AtomicBoolean result = new AtomicBoolean(false);
- coyoteRequest.action(ActionCode.ASYNC_IS_ASYNC_OPERATION, result);
- return result.get();
- }
-
@Override
public boolean isAsyncSupported() {
if (this.asyncSupported == null) {
Modified: tomcat/trunk/java/org/apache/coyote/ActionCode.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ActionCode.java?rev=1477543&r1=1477542&r2=1477543&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ActionCode.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ActionCode.java Tue Apr 30 10:39:36 2013
@@ -176,11 +176,6 @@ public enum ActionCode {
ASYNC_IS_ASYNC,
/**
- * Callback to determine if async read/write is in progress
- */
- ASYNC_IS_ASYNC_OPERATION,
-
- /**
* Callback to determine if async dispatch is in progress
*/
ASYNC_IS_STARTED,
Modified: tomcat/trunk/java/org/apache/coyote/AsyncStateMachine.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/AsyncStateMachine.java?rev=1477543&r1=1477542&r2=1477543&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/AsyncStateMachine.java (original)
+++ tomcat/trunk/java/org/apache/coyote/AsyncStateMachine.java Tue Apr 30 10:39:36 2013
@@ -71,26 +71,28 @@ import org.apache.tomcat.util.res.String
* | | | | | | | /-----------| |
* | | | ^ |dispatch() | | / |
* | | | | | | | / |
- * | | | | \|/ / \|/ / postProcess() |
+ * | | | | \|/ / \|/ / postProcess() |
* | | | | MUST_DISPATCH / STARTED<---------<---------| |
- * | | | | | / /| \ | |
- * | | | | |postProcess() / / | \ | |
- * ^ | ^ | | / dispatch()/ | \ | |
- * | | | | | / / | \ | |
- * | | | | | |---------- / -----------/ |auto \ | |
- * | | | | | | / | \ | |
- * | | | | | | |-----/ | | | |
- * | | | | auto \|/ \|/ \|/ \|/ | | |
- * | | | |---<------DISPATCHING<-----------------TIMING_OUT | | |
- * | | | dispatch() | | |asyncOperation() ^ |
- * | | | | | \|/ | ^
- * | | |-------<----------------------------------<------| | READ_WRITE_OP->-----| |
- * | | complete() | | | |
- * | | | | | error() |
- * |<- | ----<-------------------<-------------------------------<--| | |->-----------|
- * | error() |
- * | complete() |
- * |---------------------------------------------------------------------|
+ * | | | | | / / | | | |
+ * | | | | |postProcess() / / | | ^ |
+ * ^ | ^ | | / / | |asyncOperation() | |
+ * | | | | | / / | | | |
+ * | | | | | |---------- / ----------/ | |--READ_WRITE_OP-->---| |
+ * | | | | | | / dispatch() | | | | |
+ * | | | | | | |-----/ auto| | | | error()|
+ * | | | | auto \|/ \|/ \|/ | dispatch()| | |->--------|
+ * | | | |---<------DISPATCHING<--------<------------- | ------<----| |
+ * | | | /|\ | |
+ * | | | | dispatch() \|/ |
+ * | | | |-----------------------TIMING_OUT |
+ * | | | | | |
+ * | | |-------<----------------------------------<------| | |
+ * | | complete() | |
+ * | | | |
+ * |<- | ----<-------------------<-------------------------------<--| |
+ * | error() |
+ * | complete() |
+ * |----------------------------------------------------------------------------|
* </pre>
*/
public class AsyncStateMachine<S> {
@@ -153,10 +155,6 @@ public class AsyncStateMachine<S> {
return state.isAsync();
}
- public boolean isAsyncOperation() {
- return state == AsyncState.READ_WRITE_OP;
- }
-
public boolean isAsyncDispatching() {
return state.isDispatching();
}
Modified: tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java?rev=1477543&r1=1477542&r2=1477543&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java Tue Apr 30 10:39:36 2013
@@ -456,8 +456,6 @@ public abstract class AbstractAjpProcess
((AtomicBoolean) param).set(asyncStateMachine.isAsyncDispatching());
} else if (actionCode == ActionCode.ASYNC_IS_ASYNC) {
((AtomicBoolean) param).set(asyncStateMachine.isAsync());
- } else if (actionCode == ActionCode.ASYNC_IS_ASYNC_OPERATION) {
- ((AtomicBoolean) param).set(asyncStateMachine.isAsyncOperation());
} else if (actionCode == ActionCode.ASYNC_IS_TIMINGOUT) {
((AtomicBoolean) param).set(asyncStateMachine.isAsyncTimingOut());
} else if (actionCode == ActionCode.ASYNC_IS_ERROR) {
Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=1477543&r1=1477542&r2=1477543&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Tue Apr 30 10:39:36 2013
@@ -797,8 +797,6 @@ public abstract class AbstractHttp11Proc
((AtomicBoolean) param).set(asyncStateMachine.isAsyncDispatching());
} else if (actionCode == ActionCode.ASYNC_IS_ASYNC) {
((AtomicBoolean) param).set(asyncStateMachine.isAsync());
- } else if (actionCode == ActionCode.ASYNC_IS_ASYNC_OPERATION) {
- ((AtomicBoolean) param).set(asyncStateMachine.isAsyncOperation());
} else if (actionCode == ActionCode.ASYNC_IS_TIMINGOUT) {
((AtomicBoolean) param).set(asyncStateMachine.isAsyncTimingOut());
} else if (actionCode == ActionCode.ASYNC_IS_ERROR) {
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java?rev=1477543&r1=1477542&r2=1477543&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Tue Apr 30 10:39:36 2013
@@ -196,7 +196,7 @@ public class Http11NioProcessor extends
if (status == SocketStatus.OPEN_WRITE && isRegisteredForWrite(attach)) {
return SocketState.LONG;
}
- }catch (IllegalStateException x) {
+ } catch (IllegalStateException x) {
attach.interestOps(attach.interestOps() | SelectionKey.OP_WRITE);
}
} else if (status == SocketStatus.OPEN_READ) {
Modified: tomcat/trunk/java/org/apache/coyote/spdy/SpdyProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/spdy/SpdyProcessor.java?rev=1477543&r1=1477542&r2=1477543&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/spdy/SpdyProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/spdy/SpdyProcessor.java Tue Apr 30 10:39:36 2013
@@ -372,8 +372,6 @@ public class SpdyProcessor extends Abstr
((AtomicBoolean) param).set(asyncStateMachine.isAsyncDispatching());
} else if (actionCode == ActionCode.ASYNC_IS_ASYNC) {
((AtomicBoolean) param).set(asyncStateMachine.isAsync());
- } else if (actionCode == ActionCode.ASYNC_IS_ASYNC_OPERATION) {
- ((AtomicBoolean) param).set(asyncStateMachine.isAsyncOperation());
} else if (actionCode == ActionCode.ASYNC_IS_TIMINGOUT) {
((AtomicBoolean) param).set(asyncStateMachine.isAsyncTimingOut());
} else if (actionCode == ActionCode.ASYNC_IS_ERROR) {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org