In our method _org.apache.http.nio.protocol.HttpAsyncService.exception(NHttpServerConnection, Exception)_ the log() method does not always get called:
@Override public void exception( final NHttpServerConnection conn, final Exception cause) { final State state = getState(conn); if (state == null) { shutdownConnection(conn); log(cause); return; } state.setTerminated(); closeHandlers(state, cause); final Cancellable cancellable = state.getCancellable(); if (cancellable != null) { cancellable.cancel(); } final Queue<PipelineEntry> pipeline = state.getPipeline(); if (!pipeline.isEmpty() || conn.isResponseSubmitted() || state.getResponseState().compareTo(MessageState.INIT) > 0) { // There is not much that we can do if a response // has already been submitted or pipelining is being used. shutdownConnection(conn); } else { try { final Incoming incoming = state.getIncoming(); final HttpRequest request = incoming != null ? incoming.getRequest() : null; final HttpContext context = incoming != null ? incoming.getContext() : new BasicHttpContext(); final HttpAsyncResponseProducer responseProducer = handleException(cause, context); final HttpResponse response = responseProducer.generateResponse(); final Outgoing outgoing = new Outgoing(request, response, responseProducer, context); state.setResponseState(MessageState.INIT); state.setOutgoing(outgoing); commitFinalResponse(conn, state); ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// // log() has not been called by the time we get here ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// } catch (final Exception ex) { shutdownConnection(conn); closeHandlers(state); if (ex instanceof RuntimeException) { throw (RuntimeException) ex; } else { log(ex); } } } } So I propose we move the call to log from: if (state == null) { shutdownConnection(conn); log(cause); return; } To the first line of the method: @Override public void exception( final NHttpServerConnection conn, final Exception cause) { log(cause); final State state = getState(conn); if (state == null) { shutdownConnection(conn); return; } Thoughts? Gary -- E-Mail: garydgreg...@gmail.com | ggreg...@apache.org Java Persistence with Hibernate, Second Edition <https://www.amazon.com/gp/product/1617290459/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459&linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1617290459> JUnit in Action, Second Edition <https://www.amazon.com/gp/product/1935182021/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021&linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182021> Spring Batch in Action <https://www.amazon.com/gp/product/1935182951/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951&linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B%7Blink_id%7D%7D%22%3ESpring+Batch+in+Action> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182951> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory