This is an automated email from the ASF dual-hosted git repository.
bharat pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hadoop-ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 8e98977 HDDS-4151. Skip the inputstream while offset larger than zero
in s3g (#1354)
8e98977 is described below
commit 8e98977bd1d88f74e9e74e9d74d28bcb4a0d60c2
Author: maobaolong <[email protected]>
AuthorDate: Sat Aug 29 03:31:09 2020 +0800
HDDS-4151. Skip the inputstream while offset larger than zero in s3g (#1354)
---
.../apache/hadoop/ozone/client/io/OzoneInputStream.java | 5 +++++
.../apache/hadoop/ozone/s3/endpoint/ObjectEndpoint.java | 14 +++++++++++---
2 files changed, 16 insertions(+), 3 deletions(-)
diff --git
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/io/OzoneInputStream.java
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/io/OzoneInputStream.java
index a69740f..14b2866 100644
---
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/io/OzoneInputStream.java
+++
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/io/OzoneInputStream.java
@@ -57,6 +57,11 @@ public class OzoneInputStream extends InputStream {
return inputStream.available();
}
+ @Override
+ public long skip(long n) throws IOException {
+ return inputStream.skip(n);
+ }
+
public InputStream getInputStream() {
return inputStream;
}
diff --git
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/ObjectEndpoint.java
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/ObjectEndpoint.java
index 5502173..f665560 100644
---
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/ObjectEndpoint.java
+++
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/endpoint/ObjectEndpoint.java
@@ -38,6 +38,7 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.StreamingOutput;
+import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
import java.time.Instant;
@@ -277,7 +278,8 @@ public class ObjectEndpoint extends EndpointBase {
try (S3WrapperInputStream s3WrapperInputStream =
new S3WrapperInputStream(
key.getInputStream())) {
- IOUtils.copyLarge(s3WrapperInputStream, dest, startOffset,
+ s3WrapperInputStream.seek(startOffset);
+ IOUtils.copyLarge(s3WrapperInputStream, dest, 0,
copyLength, new byte[bufferSize]);
}
};
@@ -557,8 +559,14 @@ public class ObjectEndpoint extends EndpointBase {
if (range != null) {
RangeHeader rangeHeader =
RangeHeaderParserUtil.parseRangeHeader(range, 0);
- IOUtils.copyLarge(sourceObject, ozoneOutputStream,
- rangeHeader.getStartOffset(),
+ final long skipped =
+ sourceObject.skip(rangeHeader.getStartOffset());
+ if (skipped != rangeHeader.getStartOffset()) {
+ throw new EOFException(
+ "Bytes to skip: "
+ + rangeHeader.getStartOffset() + " actual: " +
skipped);
+ }
+ IOUtils.copyLarge(sourceObject, ozoneOutputStream, 0,
rangeHeader.getEndOffset() - rangeHeader.getStartOffset());
} else {
IOUtils.copy(sourceObject, ozoneOutputStream);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]