hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Juan Yu (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HDFS-8409) HDFS client RPC call throws "java.lang.IllegalStateException"
Date Fri, 29 May 2015 23:29:18 GMT

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

Juan Yu commented on HDFS-8409:
-------------------------------

If it happens at retry, not the initial call. For example, the initial call gets an exception
after call object is created and sent. so it needs retry, but during retry, somehow it gets
exception again and this time even before call object (should be same callId as the initial
call) is created.
In my patch, I added a test to simulate it, does it make sense?

> HDFS client RPC call throws "java.lang.IllegalStateException"
> -------------------------------------------------------------
>
>                 Key: HDFS-8409
>                 URL: https://issues.apache.org/jira/browse/HDFS-8409
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: hdfs-client
>            Reporter: Juan Yu
>            Assignee: Juan Yu
>         Attachments: HDFS-8409.001.patch, HDFS-8409.002.patch, HDFS-8409.003.patch
>
>
> When the HDFS client RPC calls need to retry, it sometimes throws "java.lang.IllegalStateException"
and retry is aborted and cause the client call will fail.
> {code}
> Caused by: java.lang.IllegalStateException
> 	at com.google.common.base.Preconditions.checkState(Preconditions.java:129)
> 	at org.apache.hadoop.ipc.Client.setCallIdAndRetryCount(Client.java:116)
> 	at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:99)
> 	at com.sun.proxy.$Proxy16.getFileInfo(Unknown Source)
> 	at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:1912)
> 	at org.apache.hadoop.hdfs.DistributedFileSystem$17.doCall(DistributedFileSystem.java:1089)
> 	at org.apache.hadoop.hdfs.DistributedFileSystem$17.doCall(DistributedFileSystem.java:1085)
> 	at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
> 	at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1085)
> 	at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1400)
> {code}
> Here is the check that throws exception
> {code}
>   public static void setCallIdAndRetryCount(int cid, int rc) {
>       ...
>       Preconditions.checkState(callId.get() == null);
>   }
> {code}
> The RetryInvocationHandler tries to call it with not null callId and causes exception.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message