On 4 nov 2012, at 16:13, Alan Bateman <alan.bate...@oracle.com> wrote:

> On 04/11/2012 12:50, Staffan Larsen wrote:
>> :
>>> I realize the focus is blocking I/O for now but one thing to know is that 
>>> timed read operations on socket adapters (the socket obtained by calling 
>>> SocketChannel's socket method) configures the socket channel to be 
>>> non-blocking so this means that this I/O will not be observed by the 
>>> IoTraceListener.
>> I need some help to understand which call path you are referring to here. I 
>> see SocketChannelImpl.socket() returning a SocketAdapter, but I don't see 
>> how/if this is Socket is configured to be non-blocking.
> Socket s = sc.socket();
> s.setSoTimeout(5*1000);
> int n = s.getInputStream().read(ba);
> 
> This read is a blocking read, it's just that the underlying socket channel 
> will be non-blocking so it will not be observed by the IoTraceListener.
> 
> This shouldn't be too common and might not be a big concern but I just wanted 
> to point it out.

Ah, now I see what you mean. Tricky code :-)  I've added instrumentation to 
this path as well. 

Thanks,
/Staffan

Reply via email to