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