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

Aaron T. Myers resolved HDFS-2550.
----------------------------------

    Resolution: Invalid

Hi Jason, I would recommend either emailing cdh-u...@cloudera.org or filing a 
JIRA at https://issues.cloudera.org/browse/DISTRO. If you do that, please be 
sure to include which version of CDH you're using.
                
> TSocket timed out reading 4 bytes error against HadoopThriftServer from 
> Hadoop-0.20.2 in Perl
> ---------------------------------------------------------------------------------------------
>
>                 Key: HDFS-2550
>                 URL: https://issues.apache.org/jira/browse/HDFS-2550
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: hdfs client
>    Affects Versions: 0.20.2
>         Environment: Cloudera Hadoop 0.20.2 distribution running on CentOS 
> 5.5 x64, Java SE 1.6.0_23-b05, Perl 5.14.0
>            Reporter: Jason Crickmer
>
> For the past few weeks I have randomly been receiving errors via the Perl 
> binding of ThriftFS TSocket cannot read 4 bytes.  I thought that it was a 
> symptom of too many clients against the server (say 16 doing a mix of file 
> read and write, as well as listStatus), but in the past couple of days, I 
> have started getting them all the time, even with only 1 client trying to 
> read.  The Perl client error is:
> {noformat}
> $VAR1 = bless( {
>                  'code' => 0,
>                  'message' => 'TSocket: timed out reading 4 bytes from 
> bigwws001:9090'
>                }, 'Thrift::TException' );
> {noformat}
> This typically happens in conjunction with errors in other clients, thus 
> initially leading me to believe that it was really a timeout issue.  But 
> after it started occurring with only 1 client running and well within the 10 
> sec timeout I had set on the TSocket within my Perl client, I checked on the 
> exceptions in the ThriftFS server log:
> {noformat}
> java.lang.StringIndexOutOfBoundsException: String index out of range: -1
>         at java.lang.String.checkBounds(String.java:397)
>         at java.lang.String.<init>(String.java:442)
>         at 
> org.apache.hadoop.thriftfs.HadoopThriftServer$HadoopThriftHandler.read(HadoopThriftServer.java:307)
>         at 
> org.apache.hadoop.thriftfs.api.ThriftHadoopFileSystem$Processor$read.process(Unknown
>  Source)
>         at 
> org.apache.hadoop.thriftfs.api.ThriftHadoopFileSystem$Processor.process(Unknown
>  Source)
>         at 
> com.facebook.thrift.server.TThreadPoolServer$WorkerProcess.run(Unknown Source)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>         at java.lang.Thread.run(Thread.java:662)
> {noformat}
> This change seems to have "solved" the problem, but this is very much a hack 
> since I do not know the code (maybe throwing an IOException is the right 
> thing to do, and then let it turn into a ThriftIOException?).
> {noformat}
> --- 
> src/contrib/thriftfs/src/java/org/apache/hadoop/thriftfs/HadoopThriftServer.java-orig
>        2011-11-11 09:18:44.000000000 -0600
> +++ 
> src/contrib/thriftfs/src/java/org/apache/hadoop/thriftfs/HadoopThriftServer.java
>     2011-11-11 09:00:47.000000000 -0600
> @@ -303,8 +303,9 @@
>          }
>          byte[] tmp = new byte[length];
>          int numbytes = in.read(offset, tmp, 0, length);
> -        HadoopThriftHandler.LOG.debug("read done: " + tout.id);
> -        return new String(tmp, 0, numbytes, "UTF-8");
> +        HadoopThriftHandler.LOG.debug("read done: " + tout.id +
> +                                     " numbytes: " + numbytes);
> +        return new String(tmp, 0, numbytes > 0 ? numbytes : 0, "UTF-8");
>        } catch (IOException e) {
>          throw new ThriftIOException(e.getMessage());
>        }
> {noformat}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to