Also, is possible for SocketFactory implementation to return a
selectable socket (ie. socket.getChannel() is not null)?.
Raghu.
Raghu Angadi wrote:
As part of HADOOP-2346, I changed how default socketFactory creates its
socket : from 'new Socket()' to 'SocketChannel.open().socket()' since
DFSClient uses socket factory. As a side effect, ipc.Client ends up
using this socket creation.
ipc.Client's internal response receiver is blocked on
socket.getInputStream().read() as expected. But other threads can not
send RPCs since their write() is blocked on a socket imlementation
related lock. This lock is held by the reader. Thats pretty weird. How
can it not allow read and write at the same time?
Raghu.