Code Review Request: 8014254: Selector in HttpServer introduces a 1000 ms delay when using KeepAlive

Kurchi Hazra kurchi.subhra.hazra at oracle.com
Wed May 8 17:56:16 PDT 2013


On 5/8/2013 4:35 PM, Matthew Hall wrote:
> On Wed, May 08, 2013 at 04:06:10PM -0700, Kurchi Hazra wrote:
>> com.sun.net.httpServer uses a selector to get notified about interesting
>> events (such as arrival of a new connection, or data available to read
>> on an existing connection when using keep-alive), but imposes a timeout of
>> 1000 ms on the select() operation.
> Maybe I'm missing something since the bug is not viewable to the community,
> but, if I'm reading properly, this design by itself is not quite right, and
> the fix of 200 msec selector timeout is just a band-aid solution.
>
> Shouldn't it be registering interestOps for reading on the existing
> connections and accepting connections from the server socket in the selector?
> Otherwise why use any selector in the first place if it's not really selecting
> across all the right sockets and right events on them?

- If you look at the implementation, this is exactly what is done. 
However, for keep-alive, the implementation delays the re-registering of 
a used channel
for reading until after one select call, which results in the 
bottleneck. The other option is to re-register existing channels before 
the select call, this is what
was done in jdk6. But I would need to understand why we walked away from 
that. Michael or Chris can shed some light on this.



Thanks,
- Kurchi



More information about the net-dev mailing list