You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2014/03/14 13:09:48 UTC
svn commit: r1577501 - in /tomcat/trunk/java/org/apache/coyote/http11:
InternalNio2InputBuffer.java InternalNio2OutputBuffer.java
upgrade/Nio2ServletInputStream.java upgrade/Nio2ServletOutputStream.java
Author: remm
Date: Fri Mar 14 12:09:48 2014
New Revision: 1577501
URL: http://svn.apache.org/r1577501
Log:
Start harmonizing exception types (todo: same thing for completion handlers).
Modified:
tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java
tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java
tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletInputStream.java
tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletOutputStream.java
Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java?rev=1577501&r1=1577500&r2=1577501&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java Fri Mar 14 12:09:48 2014
@@ -18,8 +18,8 @@ package org.apache.coyote.http11;
import java.io.EOFException;
import java.io.IOException;
+import java.net.SocketTimeoutException;
import java.nio.ByteBuffer;
-import java.nio.channels.ClosedChannelException;
import java.nio.channels.CompletionHandler;
import java.nio.channels.ReadPendingException;
import java.nio.charset.StandardCharsets;
@@ -754,7 +754,7 @@ public class InternalNio2InputBuffer ext
boolean notify = false;
synchronized (completionHandler) {
if (nBytes.intValue() < 0) {
- failed(new ClosedChannelException(), attachment);
+ failed(new EOFException(sm.getString("iib.eof.error")), attachment);
return;
}
readPending = false;
@@ -819,9 +819,10 @@ public class InternalNio2InputBuffer ext
try {
nRead = socket.getSocket().read(byteBuffer)
.get(socket.getTimeout(), TimeUnit.MILLISECONDS).intValue();
- } catch (InterruptedException | ExecutionException
- | TimeoutException e) {
- throw new EOFException(sm.getString("iib.eof.error"));
+ } catch (InterruptedException | ExecutionException e) {
+ throw new IOException(e);
+ } catch (TimeoutException e) {
+ throw new SocketTimeoutException();
}
if (nRead > 0) {
if (!flipped) {
Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java?rev=1577501&r1=1577500&r2=1577501&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java Fri Mar 14 12:09:48 2014
@@ -17,6 +17,7 @@
package org.apache.coyote.http11;
+import java.io.EOFException;
import java.io.IOException;
import java.net.SocketTimeoutException;
import java.nio.ByteBuffer;
@@ -116,7 +117,7 @@ public class InternalNio2OutputBuffer ex
boolean notify = false;
synchronized (completionHandler) {
if (nBytes.intValue() < 0) {
- failed(new IOException(sm.getString("iob.failedwrite")), attachment);
+ failed(new EOFException(sm.getString("iob.failedwrite")), attachment);
return;
}
if (bufferedWrites.size() > 0) {
@@ -163,7 +164,7 @@ public class InternalNio2OutputBuffer ex
boolean notify = false;
synchronized (completionHandler) {
if (nBytes.longValue() < 0) {
- failed(new IOException(sm.getString("iob.failedwrite")), attachment);
+ failed(new EOFException(sm.getString("iob.failedwrite")), attachment);
return;
}
if (bufferedWrites.size() > 0 || arrayHasData(attachment)) {
@@ -381,9 +382,7 @@ public class InternalNio2OutputBuffer ex
flipped = true;
}
socket.getSocket().write(byteBuffer).get(socket.getTimeout(), TimeUnit.MILLISECONDS);
- } catch (InterruptedException e) {
- throw new IOException(e);
- } catch (ExecutionException e) {
+ } catch (InterruptedException | ExecutionException e) {
throw new IOException(e);
} catch (TimeoutException e) {
throw new SocketTimeoutException();
Modified: tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletInputStream.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletInputStream.java?rev=1577501&r1=1577500&r2=1577501&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletInputStream.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletInputStream.java Fri Mar 14 12:09:48 2014
@@ -18,9 +18,9 @@ package org.apache.coyote.http11.upgrade
import java.io.EOFException;
import java.io.IOException;
+import java.net.SocketTimeoutException;
import java.nio.ByteBuffer;
import java.nio.channels.AsynchronousCloseException;
-import java.nio.channels.ClosedChannelException;
import java.nio.channels.CompletionHandler;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
@@ -50,7 +50,7 @@ public class Nio2ServletInputStream exte
public void completed(Integer nBytes, SocketWrapper<Nio2Channel> attachment) {
synchronized (completionHandler) {
if (nBytes.intValue() < 0) {
- failed(new ClosedChannelException(), attachment);
+ failed(new EOFException(), attachment);
return;
}
readPending = false;
@@ -207,10 +207,13 @@ public class Nio2ServletInputStream exte
nRead = channel.read(readBuffer)
.get(wrapper.getTimeout(), TimeUnit.MILLISECONDS).intValue();
readPending = false;
- } catch (InterruptedException | ExecutionException
- | TimeoutException e) {
+ } catch (InterruptedException | ExecutionException e) {
onError(e);
throw new IOException(e);
+ } catch (TimeoutException e) {
+ SocketTimeoutException ex = new SocketTimeoutException();
+ onError(ex);
+ throw ex;
}
} else {
readPending = true;
Modified: tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletOutputStream.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletOutputStream.java?rev=1577501&r1=1577500&r2=1577501&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletOutputStream.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletOutputStream.java Fri Mar 14 12:09:48 2014
@@ -18,9 +18,9 @@ package org.apache.coyote.http11.upgrade
import java.io.EOFException;
import java.io.IOException;
+import java.net.SocketTimeoutException;
import java.nio.ByteBuffer;
import java.nio.channels.AsynchronousCloseException;
-import java.nio.channels.ClosedChannelException;
import java.nio.channels.CompletionHandler;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Semaphore;
@@ -50,7 +50,7 @@ public class Nio2ServletOutputStream ext
@Override
public void completed(Integer nBytes, SocketWrapper<Nio2Channel> attachment) {
if (nBytes.intValue() < 0) {
- failed(new ClosedChannelException(), attachment);
+ failed(new EOFException(), attachment);
return;
}
writePending.release();
@@ -126,10 +126,13 @@ public class Nio2ServletOutputStream ext
buffer.flip();
try {
written = channel.write(buffer).get(socketWrapper.getTimeout(), TimeUnit.MILLISECONDS).intValue();
- } catch (InterruptedException | ExecutionException
- | TimeoutException e) {
+ } catch (InterruptedException | ExecutionException e) {
onError(e);
throw new IOException(e);
+ } catch (TimeoutException e) {
+ SocketTimeoutException ex = new SocketTimeoutException();
+ onError(ex);
+ throw ex;
}
} else {
if (writePending.tryAcquire()) {
@@ -152,10 +155,16 @@ public class Nio2ServletOutputStream ext
if (writePending.tryAcquire(socketWrapper.getTimeout(), TimeUnit.MILLISECONDS)) {
writePending.release();
channel.flush().get(socketWrapper.getTimeout(), TimeUnit.MILLISECONDS);
+ } else {
+ throw new TimeoutException();
}
- } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ } catch (InterruptedException | ExecutionException e) {
onError(e);
throw new IOException(e);
+ } catch (TimeoutException e) {
+ SocketTimeoutException ex = new SocketTimeoutException();
+ onError(ex);
+ throw ex;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org