You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2007/06/24 14:12:35 UTC
svn commit: r550217 - in /jakarta/httpcomponents/httpcore/trunk:
RELEASE_NOTES.txt
module-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java
module-nio/src/main/java/org/apache/http/nio/reactor/IOReactorException.java
Author: olegk
Date: Sun Jun 24 05:12:34 2007
New Revision: 550217
URL: http://svn.apache.org/viewvc?view=rev&rev=550217
Log:
HTTPCORE-87: RuntimeExcpetions thrown in I/O worker threads are now correctly propagated to the I/O reactor
Modified:
jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/reactor/IOReactorException.java
Modified: jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt?view=diff&rev=550217&r1=550216&r2=550217
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt (original)
+++ jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt Sun Jun 24 05:12:34 2007
@@ -1,5 +1,9 @@
Changes since 4.0 Alpha 4
+* [HTTPCORE-87] RuntimeExcpetions thrown in I/O worker threads are now correctly
+ propagated to the I/O reactor.
+ Contributed by Oleg Kalnichevski <olegk at apache.org>
+
* [HTTPCORE-84]: Removed DateUtils/DateParseException from core.
Contributed by Roland Weber <rolandw at apache.org>
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java?view=diff&rev=550217&r1=550216&r2=550217
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java Sun Jun 24 05:12:34 2007
@@ -125,11 +125,15 @@
Worker worker = this.workers[i];
Thread thread = this.threads[i];
if (!thread.isAlive()) {
- if (worker.getReactorException() != null) {
- throw worker.getReactorException();
- }
- if (worker.getInterruptedException() != null) {
- throw worker.getInterruptedException();
+ Exception ex = worker.getException();
+ if (ex instanceof IOReactorException) {
+ throw (IOReactorException) ex;
+ } else if (ex instanceof InterruptedIOException) {
+ throw (InterruptedIOException) ex;
+ } else if (ex instanceof RuntimeException) {
+ throw (RuntimeException) ex;
+ } else {
+ throw new IOReactorException(ex.getMessage(), ex);
}
}
}
@@ -145,8 +149,7 @@
final BaseIOReactor ioReactor;
final IOEventDispatch eventDispatch;
- private volatile IOReactorException reactorException;
- private volatile InterruptedIOException interruptedException;
+ private volatile Exception exception;
public Worker(final BaseIOReactor ioReactor, final IOEventDispatch eventDispatch) {
super();
@@ -158,28 +161,26 @@
try {
this.ioReactor.execute(this.eventDispatch);
} catch (InterruptedIOException ex) {
- this.interruptedException = ex;
+ this.exception = ex;
} catch (IOReactorException ex) {
- this.reactorException = ex;
+ this.exception = ex;
+ } catch (RuntimeException ex) {
+ this.exception = ex;
} finally {
try {
this.ioReactor.shutdown();
} catch (IOReactorException ex2) {
- if (this.reactorException == null) {
- this.reactorException = ex2;
+ if (this.exception == null) {
+ this.exception = ex2;
}
}
}
}
- public IOReactorException getReactorException() {
- return this.reactorException;
+ public Exception getException() {
+ return this.exception;
}
- public InterruptedIOException getInterruptedException() {
- return this.interruptedException;
- }
-
}
static class DefaultThreadFactory implements ThreadFactory {
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/reactor/IOReactorException.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/reactor/IOReactorException.java?view=diff&rev=550217&r1=550216&r2=550217
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/reactor/IOReactorException.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/reactor/IOReactorException.java Sun Jun 24 05:12:34 2007
@@ -41,7 +41,7 @@
private static final long serialVersionUID = 6986850002663481135L;
- public IOReactorException(final String message, final IOException cause) {
+ public IOReactorException(final String message, final Exception cause) {
super(message);
if (cause != null) {
initCause(cause);