On occasion, rarely actually, the call to InputStream.read(Â…) hangs and never finishes when reading from the HTTPServletRequest on the server side. This is rare and seems to be due to one client that may be sending something in the request that is causing this to hang. Regardless of the cause, it seems desirable to be able to close this read and handle the error. Instead, the application transaction timeout causes an exception to be thrown. This stops the application thread but seems to leave the socket level reading on the inputstream running.
Has anyone else encountered this behavior?
Any solutions that aren't too messy for detecting the long running "read" and calling close on it?