[ 
https://issues.apache.org/jira/browse/HADOOP-6762?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12875435#action_12875435
 ] 

sam rash commented on HADOOP-6762:
----------------------------------

hmm, actually with a Future, if there is a runtime exception, it'll show up as 
an ExecutionException on future.get(), so there isn't a need to move the buffer 
construction outside (requires another try/catch clause due to IOException).   
We can use getCause() on the ExecutionException to find the underlying 
exception and use markClosed() if it's an IOException, and re-throw if it's a 
runtime exception (same behavior as now)

or we can move it into the caller thread.  Using the future requires handling 
the ExecutionException anyway, so I sort of lean this way as it kills two 
birds. i don't know how much more parallelism we gain moving the buffer 
construction outside the sync block.

what do you think?




> exception while doing RPC I/O closes channel
> --------------------------------------------
>
>                 Key: HADOOP-6762
>                 URL: https://issues.apache.org/jira/browse/HADOOP-6762
>             Project: Hadoop Common
>          Issue Type: Bug
>    Affects Versions: 0.20.2
>            Reporter: sam rash
>            Assignee: sam rash
>         Attachments: hadoop-6762-1.txt, hadoop-6762-2.txt, hadoop-6762-3.txt, 
> hadoop-6762-4.txt, hadoop-6762-6.txt
>
>
> If a single process creates two unique fileSystems to the same NN using 
> FileSystem.newInstance(), and one of them issues a close(), the leasechecker 
> thread is interrupted.  This interrupt races with the rpc namenode.renew() 
> and can cause a ClosedByInterruptException.  This closes the underlying 
> channel and the other filesystem, sharing the connection will get errors.

-- 
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