You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ar...@apache.org on 2018/10/12 20:34:13 UTC
[2/2] hadoop git commit: HDDS-639. ChunkGroupInputStream gets into
infinite loop after reading a block. Contributed by Mukul Kumar Singh.
HDDS-639. ChunkGroupInputStream gets into infinite loop after reading a block. Contributed by Mukul Kumar Singh.
(cherry picked from commit 56b18b9df14b91c02cf3b7f548ab58755475b374)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/ca1d4c46
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/ca1d4c46
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/ca1d4c46
Branch: refs/heads/ozone-0.3
Commit: ca1d4c46dd4cd81c46aed87cd7a52af3e6be504f
Parents: 2cad68b
Author: Arpit Agarwal <ar...@apache.org>
Authored: Fri Oct 12 13:33:38 2018 -0700
Committer: Arpit Agarwal <ar...@apache.org>
Committed: Fri Oct 12 13:33:45 2018 -0700
----------------------------------------------------------------------
.../hadoop/ozone/client/io/ChunkGroupInputStream.java | 6 +++++-
.../apache/hadoop/fs/ozone/TestOzoneFileInterfaces.java | 11 ++++++++++-
2 files changed, 15 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/ca1d4c46/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/io/ChunkGroupInputStream.java
----------------------------------------------------------------------
diff --git a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/io/ChunkGroupInputStream.java b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/io/ChunkGroupInputStream.java
index 7791613..125784c 100644
--- a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/io/ChunkGroupInputStream.java
+++ b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/io/ChunkGroupInputStream.java
@@ -111,7 +111,11 @@ public class ChunkGroupInputStream extends InputStream implements Seekable {
}
int totalReadLen = 0;
while (len > 0) {
- if (streamEntries.size() <= currentStreamIndex) {
+ // if we are at the last block and have read the entire block, return
+ if (streamEntries.size() == 0 ||
+ (streamEntries.size() - 1 <= currentStreamIndex &&
+ streamEntries.get(currentStreamIndex)
+ .getRemaining() == 0)) {
return totalReadLen == 0 ? EOF : totalReadLen;
}
ChunkInputStreamEntry current = streamEntries.get(currentStreamIndex);
http://git-wip-us.apache.org/repos/asf/hadoop/blob/ca1d4c46/hadoop-ozone/ozonefs/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFileInterfaces.java
----------------------------------------------------------------------
diff --git a/hadoop-ozone/ozonefs/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFileInterfaces.java b/hadoop-ozone/ozonefs/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFileInterfaces.java
index 7cf6e3d..2176031 100644
--- a/hadoop-ozone/ozonefs/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFileInterfaces.java
+++ b/hadoop-ozone/ozonefs/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFileInterfaces.java
@@ -174,9 +174,18 @@ public class TestOzoneFileInterfaces {
try (FSDataInputStream inputStream = fs.open(path)) {
byte[] buffer = new byte[stringLen];
- inputStream.readFully(0, buffer);
+ // This read will not change the offset inside the file
+ int readBytes = inputStream.read(0, buffer, 0, buffer.length);
String out = new String(buffer, 0, buffer.length);
assertEquals(data, out);
+ assertEquals(readBytes, buffer.length);
+ assertEquals(0, inputStream.getPos());
+
+ // The following read will change the internal offset
+ readBytes = inputStream.read(buffer, 0, buffer.length);
+ assertEquals(data, out);
+ assertEquals(readBytes, buffer.length);
+ assertEquals(buffer.length, inputStream.getPos());
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org