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 2017/04/24 18:10:17 UTC
svn commit: r1792524 - in
/httpcomponents/httpcore/branches/4.4.x/httpcore-nio/src/main/java/org/apache/http:
impl/nio/reactor/AbstractMultiworkerIOReactor.java
nio/reactor/IOReactorException.java
Author: olegk
Date: Mon Apr 24 18:10:17 2017
New Revision: 1792524
URL: http://svn.apache.org/viewvc?rev=1792524&view=rev
Log:
HTTPCORE-455: fatal Error in an individual worker thread does not cause proper I/O reactor shutdown
Modified:
httpcomponents/httpcore/branches/4.4.x/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java
httpcomponents/httpcore/branches/4.4.x/httpcore-nio/src/main/java/org/apache/http/nio/reactor/IOReactorException.java
Modified: httpcomponents/httpcore/branches/4.4.x/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/branches/4.4.x/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java?rev=1792524&r1=1792523&r2=1792524&view=diff
==============================================================================
--- httpcomponents/httpcore/branches/4.4.x/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java (original)
+++ httpcomponents/httpcore/branches/4.4.x/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java Mon Apr 24 18:10:17 2017
@@ -351,7 +351,7 @@ public abstract class AbstractMultiworke
// Verify I/O dispatchers
for (int i = 0; i < this.workerCount; i++) {
final Worker worker = this.workers[i];
- final Exception ex = worker.getException();
+ final Throwable ex = worker.getThrowable();
if (ex != null) {
throw new IOReactorException(
"I/O dispatch worker terminated abnormally", ex);
@@ -574,7 +574,7 @@ public abstract class AbstractMultiworke
final BaseIOReactor dispatcher;
final IOEventDispatch eventDispatch;
- private volatile Exception exception;
+ private volatile Throwable exception;
public Worker(final BaseIOReactor dispatcher, final IOEventDispatch eventDispatch) {
super();
@@ -586,12 +586,15 @@ public abstract class AbstractMultiworke
public void run() {
try {
this.dispatcher.execute(this.eventDispatch);
+ } catch (final Error ex) {
+ this.exception = ex;
+ throw ex;
} catch (final Exception ex) {
this.exception = ex;
}
}
- public Exception getException() {
+ public Throwable getThrowable() {
return this.exception;
}
Modified: httpcomponents/httpcore/branches/4.4.x/httpcore-nio/src/main/java/org/apache/http/nio/reactor/IOReactorException.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/branches/4.4.x/httpcore-nio/src/main/java/org/apache/http/nio/reactor/IOReactorException.java?rev=1792524&r1=1792523&r2=1792524&view=diff
==============================================================================
--- httpcomponents/httpcore/branches/4.4.x/httpcore-nio/src/main/java/org/apache/http/nio/reactor/IOReactorException.java (original)
+++ httpcomponents/httpcore/branches/4.4.x/httpcore-nio/src/main/java/org/apache/http/nio/reactor/IOReactorException.java Mon Apr 24 18:10:17 2017
@@ -46,6 +46,13 @@ public class IOReactorException extends
}
}
+ public IOReactorException(final String message, final Throwable cause) {
+ super(message);
+ if (cause != null) {
+ initCause(cause);
+ }
+ }
+
public IOReactorException(final String message) {
super(message);
}