HADOOP-10588. Workaround for jetty6 acceptor startup issue. Contributed by Kihwal Lee.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1595051 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
d4d3cf1210
commit
62d86218ef
|
@ -51,6 +51,8 @@ Release 2.5.0 - UNRELEASED
|
||||||
HADOOP-10572. Example NFS mount command must pass noacl as it isn't
|
HADOOP-10572. Example NFS mount command must pass noacl as it isn't
|
||||||
supported by the server yet. (Harsh J via brandonli)
|
supported by the server yet. (Harsh J via brandonli)
|
||||||
|
|
||||||
|
HADOOP-10588. Workaround for jetty6 acceptor startup issue. (kihwal)
|
||||||
|
|
||||||
OPTIMIZATIONS
|
OPTIMIZATIONS
|
||||||
|
|
||||||
BUG FIXES
|
BUG FIXES
|
||||||
|
|
|
@ -306,9 +306,42 @@ public class HttpServer implements FilterContainer {
|
||||||
return HttpServer.createDefaultChannelConnector();
|
return HttpServer.createDefaultChannelConnector();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static class SelectChannelConnectorWithSafeStartup
|
||||||
|
extends SelectChannelConnector {
|
||||||
|
public SelectChannelConnectorWithSafeStartup() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Override the broken isRunning() method (JETTY-1316). This bug is present
|
||||||
|
* in 6.1.26. For the versions wihout this bug, it adds insignificant
|
||||||
|
* overhead.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean isRunning() {
|
||||||
|
if (super.isRunning()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// We might be hitting JETTY-1316. If the internal state changed from
|
||||||
|
// STARTING to STARTED in the middle of the check, the above call may
|
||||||
|
// return false. Check it one more time.
|
||||||
|
LOG.warn("HttpServer Acceptor: isRunning is false. Rechecking.");
|
||||||
|
try {
|
||||||
|
Thread.sleep(10);
|
||||||
|
} catch (InterruptedException ie) {
|
||||||
|
// Mark this thread as interrupted. Someone up in the call chain
|
||||||
|
// might care.
|
||||||
|
Thread.currentThread().interrupt();
|
||||||
|
}
|
||||||
|
boolean runState = super.isRunning();
|
||||||
|
LOG.warn("HttpServer Acceptor: isRunning is " + runState);
|
||||||
|
return runState;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@InterfaceAudience.Private
|
@InterfaceAudience.Private
|
||||||
public static Connector createDefaultChannelConnector() {
|
public static Connector createDefaultChannelConnector() {
|
||||||
SelectChannelConnector ret = new SelectChannelConnector();
|
SelectChannelConnector ret = new SelectChannelConnectorWithSafeStartup();
|
||||||
ret.setLowResourceMaxIdleTime(10000);
|
ret.setLowResourceMaxIdleTime(10000);
|
||||||
ret.setAcceptQueueSize(128);
|
ret.setAcceptQueueSize(128);
|
||||||
ret.setResolveNames(false);
|
ret.setResolveNames(false);
|
||||||
|
|
|
@ -438,9 +438,41 @@ public final class HttpServer2 implements FilterContainer {
|
||||||
return HttpServer2.createDefaultChannelConnector();
|
return HttpServer2.createDefaultChannelConnector();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class SelectChannelConnectorWithSafeStartup
|
||||||
|
extends SelectChannelConnector {
|
||||||
|
public SelectChannelConnectorWithSafeStartup() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Override the broken isRunning() method (JETTY-1316). This bug is present
|
||||||
|
* in 6.1.26. For the versions wihout this bug, it adds insignificant
|
||||||
|
* overhead.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean isRunning() {
|
||||||
|
if (super.isRunning()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// We might be hitting JETTY-1316. If the internal state changed from
|
||||||
|
// STARTING to STARTED in the middle of the check, the above call may
|
||||||
|
// return false. Check it one more time.
|
||||||
|
LOG.warn("HttpServer Acceptor: isRunning is false. Rechecking.");
|
||||||
|
try {
|
||||||
|
Thread.sleep(10);
|
||||||
|
} catch (InterruptedException ie) {
|
||||||
|
// Mark this thread as interrupted. Someone up in the call chain
|
||||||
|
// might care.
|
||||||
|
Thread.currentThread().interrupt();
|
||||||
|
}
|
||||||
|
boolean runState = super.isRunning();
|
||||||
|
LOG.warn("HttpServer Acceptor: isRunning is " + runState);
|
||||||
|
return runState;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@InterfaceAudience.Private
|
@InterfaceAudience.Private
|
||||||
public static Connector createDefaultChannelConnector() {
|
public static Connector createDefaultChannelConnector() {
|
||||||
SelectChannelConnector ret = new SelectChannelConnector();
|
SelectChannelConnector ret = new SelectChannelConnectorWithSafeStartup();
|
||||||
ret.setLowResourceMaxIdleTime(10000);
|
ret.setLowResourceMaxIdleTime(10000);
|
||||||
ret.setAcceptQueueSize(128);
|
ret.setAcceptQueueSize(128);
|
||||||
ret.setResolveNames(false);
|
ret.setResolveNames(false);
|
||||||
|
|
Loading…
Reference in New Issue