You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-dev@hadoop.apache.org by "Yongtao Yang (JIRA)" <ji...@apache.org> on 2016/03/17 08:15:33 UTC
[jira] [Created] (HDFS-10177) a wrong number of the bytes read are
copied into native buffer in hdfsRead()
Yongtao Yang created HDFS-10177:
-----------------------------------
Summary: a wrong number of the bytes read are copied into native buffer in hdfsRead()
Key: HDFS-10177
URL: https://issues.apache.org/jira/browse/HDFS-10177
Project: Hadoop HDFS
Issue Type: Bug
Components: libhdfs
Affects Versions: 2.6.4, 2.6.3, 2.6.2, 2.7.2, 2.6.0
Environment: RHEL 6.3, 64-bit
Oralce JDK 1.7.0_55
Reporter: Yongtao Yang
in the implementation of {{hdfsRead()}},
<code>
tSize hdfsRead(hdfsFS fs, hdfsFile f, void* buffer, tSize length)
{
......
jint noReadBytes = length;
......
jthr = invokeMethod(env, &jVal, INSTANCE, jInputStream, HADOOP_ISTRM,
"read", "([B)I", jbRarray);
if (jthr) {
destroyLocalReference(env, jbRarray);
errno = printExceptionAndFree(env, jthr, PRINT_EXC_ALL,
"hdfsRead: FSDataInputStream#read");
return -1;
}
if (jVal.i < 0) {
// EOF
destroyLocalReference(env, jbRarray);
return 0;
} else if (jVal.i == 0) {
destroyLocalReference(env, jbRarray);
errno = EINTR;
return -1;
}
(*env)->GetByteArrayRegion(env, jbRarray, 0, noReadBytes, buffer);
</code>
{{noReadBytes}} is initialized to {{length}}, but it should be set {{jav.i}} before the bytes are copied to the native {{buffer}}.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)