浏览代码

HDFS-4000. TestParallelLocalRead fails with "input ByteBuffers must be direct buffers". Contributed by Colin Patrick McCabe

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1393884 13f79535-47bb-0310-9956-ffa450edef68
Eli Collins 12 年之前
父节点
当前提交
38943644e0

+ 3 - 0
hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt

@@ -276,6 +276,9 @@ Release 2.0.3-alpha - Unreleased
     HDFS-3753. Tests don't run with native libraries.
     HDFS-3753. Tests don't run with native libraries.
     (Colin Patrick McCabe via eli)
     (Colin Patrick McCabe via eli)
 
 
+    HDFS-4000. TestParallelLocalRead fails with "input ByteBuffers
+    must be direct buffers". (Colin Patrick McCabe via eli)
+
 Release 2.0.2-alpha - 2012-09-07 
 Release 2.0.2-alpha - 2012-09-07 
 
 
   INCOMPATIBLE CHANGES
   INCOMPATIBLE CHANGES

+ 3 - 1
hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestParallelReadUtil.java

@@ -83,7 +83,7 @@ public class TestParallelReadUtil {
   static class DirectReadWorkerHelper implements ReadWorkerHelper {
   static class DirectReadWorkerHelper implements ReadWorkerHelper {
     @Override
     @Override
     public int read(DFSInputStream dis, byte[] target, int startOff, int len) throws IOException {
     public int read(DFSInputStream dis, byte[] target, int startOff, int len) throws IOException {
-      ByteBuffer bb = ByteBuffer.wrap(target);
+      ByteBuffer bb = ByteBuffer.allocateDirect(target.length);
       int cnt = 0;
       int cnt = 0;
       synchronized(dis) {
       synchronized(dis) {
         dis.seek(startOff);
         dis.seek(startOff);
@@ -95,6 +95,8 @@ public class TestParallelReadUtil {
           cnt += read;
           cnt += read;
         }
         }
       }
       }
+      bb.clear();
+      bb.get(target);
       return cnt;
       return cnt;
     }
     }