Skip to content

Commit 1014e42

Browse files
committed
HADOOP-19583. JDK8: RawLocalFileSystem calls ByteBuffer.flip
fixes it in the readVectored code of raw local and s3a But it is used in many other places.
1 parent f62fb77 commit 1014e42

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/RawLocalFileSystem.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.io.OutputStream;
3333
import java.io.FileDescriptor;
3434
import java.net.URI;
35+
import java.nio.Buffer;
3536
import java.nio.ByteBuffer;
3637
import java.nio.channels.AsynchronousFileChannel;
3738
import java.nio.channels.CompletionHandler;
@@ -425,7 +426,7 @@ public void completed(Integer result, Integer rangeIndex) {
425426
channel.read(buffer, range.getOffset() + buffer.position(), rangeIndex, this);
426427
} else {
427428
// Flip the buffer and declare success.
428-
buffer.flip();
429+
((Buffer)(buffer)).flip();
429430
range.getData().complete(buffer);
430431
}
431432
}

hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AInputStream.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.io.InputStream;
2525
import java.io.InterruptedIOException;
2626
import java.net.SocketTimeoutException;
27+
import java.nio.Buffer;
2728
import java.nio.ByteBuffer;
2829
import java.util.List;
2930
import java.util.Optional;
@@ -1029,7 +1030,7 @@ private void readSingleRange(FileRange range, ByteBuffer buffer) {
10291030
LOG.debug("Start reading {} from {} ", range, getPathStr());
10301031
if (range.getLength() == 0) {
10311032
// a zero byte read.
1032-
buffer.flip();
1033+
((Buffer)(buffer)).flip();
10331034
range.getData().complete(buffer);
10341035
return;
10351036
}
@@ -1092,7 +1093,7 @@ private void populateBuffer(FileRange range,
10921093
readByteArray(objectContent, range, tmp, offset, currentLength);
10931094
return null;
10941095
});
1095-
buffer.flip();
1096+
((Buffer)(buffer)).flip();
10961097
} else {
10971098
// there is no use of a temp byte buffer, or buffer.put() calls,
10981099
// so flip() is not needed.

0 commit comments

Comments
 (0)