[ 
https://issues.apache.org/jira/browse/HADOOP-2346?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Raghu Angadi updated HADOOP-2346:
---------------------------------

    Attachment: HADOOP-2346.patch

> How well does it work?

All the unit tests pass and I tested with (artificially) slow clients. 
Performance wise, I don't expect any change. JRE has to do something like this 
anyway. select() is invoked only when we need to wait. We will surely run 
benchmarks before this goes, may be after 0.16 branch is cut. 

> SocketInputStream and SocketOutputStream seem like fine names, but should 
> they be nested classes in IOUtils, or perhaps independent classes in the 
> 'net' package?

Yes, these can be independent classes in io or net package. Currently there is 
a ipc.SocketOutputStream (not currently used in Hadoop), which is just a 
special case of SocketOutputStream here. ipc.SocketOutputStream will be removed.

> Also, we might make the error messages in the exceptions a bit more 
> informative, e.g., including the address the socket is connected to, the 
> timeout, etc.
should do this.

When I prepare more complete patch for 0.17, I think we should replace all 
socket input/output streams in Datanode with these.

Also WRITE_TIMEOUT of 1 minute might be too short.

The patch attached does not have above changes, it just has some minor changes 
from previous patch.

> DataNode should have timeout on socket writes.
> ----------------------------------------------
>
>                 Key: HADOOP-2346
>                 URL: https://issues.apache.org/jira/browse/HADOOP-2346
>             Project: Hadoop
>          Issue Type: Bug
>          Components: dfs
>    Affects Versions: 0.15.1
>            Reporter: Raghu Angadi
>            Assignee: Raghu Angadi
>         Attachments: HADOOP-2346.patch, HADOOP-2346.patch
>
>
> If a client opens a file and stops reading in the middle, DataNode thread 
> writing the data could be stuck forever. For DataNode sockets we set read 
> timeout but not write timeout. I think we should add a write(data, timeout) 
> method in IOUtils that assumes it the underlying FileChannel is non-blocking.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to