Die with dignity on the network layer
When a fatal error is thrown on the network layer, such an error never makes its way to the uncaught exception handler. This prevents the node from being torn down if an out of memory error or other fatal error is thrown while handling HTTP or transport traffic. This commit adds logic to ensure that such errors bubble their way up to the uncaught exception handler, even though Netty tries really hard to swallow everything. Original commit: elastic/x-pack-elasticsearch@f76757674f
This commit is contained in:
parent
7c1f4326fc
commit
158ab2e724
|
@ -16,6 +16,7 @@ import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.util.BigArrays;
|
import org.elasticsearch.common.util.BigArrays;
|
||||||
import org.elasticsearch.http.netty4.Netty4HttpServerTransport;
|
import org.elasticsearch.http.netty4.Netty4HttpServerTransport;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
|
import org.elasticsearch.transport.netty4.Netty4Utils;
|
||||||
import org.elasticsearch.xpack.ssl.SSLService;
|
import org.elasticsearch.xpack.ssl.SSLService;
|
||||||
import org.elasticsearch.xpack.security.transport.filter.IPFilter;
|
import org.elasticsearch.xpack.security.transport.filter.IPFilter;
|
||||||
|
|
||||||
|
@ -42,6 +43,7 @@ public class SecurityNetty4HttpServerTransport extends Netty4HttpServerTransport
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
|
protected void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
|
||||||
|
Netty4Utils.maybeDie(cause);
|
||||||
if (!lifecycle.started()) {
|
if (!lifecycle.started()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue