hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Oleg Kalnichevski <ol...@apache.org>
Subject Re: HC Core4 real vs. manufactured timeouts in org.apache.http.nio.protocol.HttpAsyncService.timeout(NHttpServerConnection)
Date Wed, 23 Aug 2017 21:26:36 GMT
On Wed, 2017-08-23 at 10:49 -0600, Gary Gregory wrote:
> Hi All:
> In HC Core4, I have a use case where the method
> org.apache.http.nio.protocol.HttpAsyncService.timeout(NHttpServerConn
> ection)
> is called when HC Core detects that a session has not been used in a
> while
> (the timeout value).
> In HttpAsyncService.timeout(NHttpServerConnection), we then create a
> SocketTimeoutException and pass it on.
> This has created some confusion further on down the processing when
> the
> log(Exception) method is called and
> my org.apache.http.ExceptionLogger.log(Exception) ends up being
> called.
> How can I tell the difference between a real timeout and one of these
> manufactured timeouts.
> I wonder if we should create our own subclass of
> SocketTimeoutException
> called SessionTimeoutException and use that
> HttpAsyncService.timeout(NHttpServerConnection) instead of
> SocketTimeoutException. This would make it backward compatible for
> implementations that do instanceof SocketTimeoutException checks.
> This would let my logging log SocketTimeoutException as ERRORs and
> SessionTimeoutException as DEBUG.
> Thoughts?
> Gary


All SocketTimeoutException thrown by non-blocking i/o classes are
manufactured. What you call 'real' timeouts can only be thrown by JRE
blocking i/o code. I personally see no good reason to
distinguish SocketTimeoutException thrown by JRE code and those thrown
by i/o reactors. They can never get mixed up.


To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org

View raw message