[ 
https://issues.apache.org/jira/browse/HDFS-5671?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13858346#comment-13858346
 ] 

Uma Maheswara Rao G commented on HDFS-5671:
-------------------------------------------

{code}
 } catch (IOException ex) {
+            DFSClient.LOG.debug("Exception while getting block reader, closing 
stale " + peer, ex);
+            throw ex;
+    } finally {
+            if (reader == null) {
+                    IOUtils.closeQuietly(peer);
+            }
+    }
{code}

Looks like you are using wrong coding formatter.  Could you please update the 
patch with correct coding format.  Please note Hadoop code indentation space 
will have 2 spaces

> When client  request block to DataNode and "java.io.IOException" occurs, the 
> fail TCP socket is not closed (in status "CLOSE_WAIT" with port 1004 of 
> DataNode)
> --------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HDFS-5671
>                 URL: https://issues.apache.org/jira/browse/HDFS-5671
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: hdfs-client
>    Affects Versions: 2.2.0
>         Environment: hadoop-2.2.0
> java version "1.6.0_31"
> Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
> Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)
> Linux 2.6.32-358.14.1.el6.x86_64 #1 SMP Tue Jul 16 23:51:20 UTC 2013 x86_64 
> x86_64 x86_64 GNU/Linux
>            Reporter: JamesLi
>            Priority: Critical
>         Attachments: 5671.patch, 5671v1.patch, 5671v2.patch, 5671v3.patch
>
>
> lsof -i TCP:1004 | grep -c CLOSE_WAIT
> 18235
> When client request a file's block to DataNode:1004. If request fail because 
> "java.io.IOException: Got error for OP_READ_BLOCK,Block token is expired." 
> Occurs  and the TCP socket that regionserver using is not closed.
> I think the problem above is in DatanodeInfo blockSeekTo(long target)  of 
> Class DFSInputStream 
> The connection client using is BlockReader: 
>         blockReader = getBlockReader(targetAddr, chosenNode, src, blk,
>             accessToken, offsetIntoBlock, blk.getNumBytes() - offsetIntoBlock,
>             buffersize, verifyChecksum, dfsClient.clientName);
> In DFSInputStream.blockSeekTo()-line 533,invoke getBlockReader() which wil 
> generate a peer use newTcpPeer(dnAddr) -line 1107,when 
> BlockReaderFactory.newBlockReader throw IOException,the peer will not be 
> closed which will cause a CLOSE_WAIT connection. 
> In our test,when datanode get a InvalidToken exception in 
> DataXceiver.checkAccess(),it will close the connection.At regionserver side, 
> in RemoteBlockReader2.newBlockReader(),checkSuccess() will throw a 
> InvalidBlockTokenException, DFSInputStream.blockSeekTo() will catch the 
> exception, but the connection is NOT closed, it become CLOSE_WAIT.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to