| Summary: | SelectChannelEndPoint maxIdleTime ignored if low volume | ||
|---|---|---|---|
| Product: | [RT] Jetty | Reporter: | Sebastian Tusk <eclipse-bugs.20.scyt> |
| Component: | server | Assignee: | Greg Wilkins <gregw> |
| Status: | RESOLVED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | CC: | jetty-inbox |
| Version: | unspecified | ||
| Target Milestone: | 7.5.x | ||
| Hardware: | PC | ||
| OS: | Windows 7 | ||
| See Also: | https://bugs.eclipse.org/bugs/show_bug.cgi?id=364921 | ||
| Whiteboard: | |||
|
Description
Sebastian Tusk
Sebastian,
I think there is an issue here, but not exactly how you describe.
Note that if you have a servlet that does doGet(){sleep(forever);}, then the connection should not timeout. The idle timeout should only apply when the connection is not dispatched in a request, or it that request is blocked on the IO.
Will review and clean up this code.
The idle timeout is poorly implemented as it mixes up the state of when to check for idle with working out if the endpoint is idle or not. Changing so that it is the SelectChannelEndPoint fill and flush methods that will reset the idle timestamp and there is a new setCheckForIdle(boolean) method that controls if we care about idle connections or not. fixed pushed to jetty-7.6 branch @ ddce35a 7.6.0.RC0 due in the next few days. hmmm looks like some of the changes were rolled back??? Specifically there is no check for idle boolean, but should work much the same... if not as accurately. However there is a problem for HTTP, as idle is not checked for closed connections. Fixed this for now by putting setCheckForIdle(true) into shutdownOutput |