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 st...@apache.org on 2017/02/20 16:55:29 UTC
hadoop git commit: HADOOP-14081. S3A: Consider avoiding array copy in
S3ABlockOutputStream (ByteArrayBlock). Contributed by Rajesh Balamohan
Repository: hadoop
Updated Branches:
refs/heads/branch-2.8.0 e53c4a6d6 -> f95cdefca
HADOOP-14081. S3A: Consider avoiding array copy in S3ABlockOutputStream (ByteArrayBlock). Contributed by Rajesh Balamohan
(cherry picked from commit 274c02d2fa06581891ba9bb9041fa20baa83582a)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/f95cdefc
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/f95cdefc
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/f95cdefc
Branch: refs/heads/branch-2.8.0
Commit: f95cdefca1e54ef99d3f121f4d3521fa2e3061e8
Parents: e53c4a6
Author: Steve Loughran <st...@apache.org>
Authored: Mon Feb 20 16:21:00 2017 +0000
Committer: Steve Loughran <st...@apache.org>
Committed: Mon Feb 20 16:55:16 2017 +0000
----------------------------------------------------------------------
.../org/apache/hadoop/fs/s3a/S3ADataBlocks.java | 26 +++++++++++++++++---
1 file changed, 22 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f95cdefc/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3ADataBlocks.java
----------------------------------------------------------------------
diff --git a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3ADataBlocks.java b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3ADataBlocks.java
index 0fe2af7..05f8efe 100644
--- a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3ADataBlocks.java
+++ b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3ADataBlocks.java
@@ -298,6 +298,25 @@ final class S3ADataBlocks {
}
+ static class S3AByteArrayOutputStream extends ByteArrayOutputStream {
+
+ S3AByteArrayOutputStream(int size) {
+ super(size);
+ }
+
+ /**
+ * InputStream backed by the internal byte array
+ *
+ * @return
+ */
+ ByteArrayInputStream getInputStream() {
+ ByteArrayInputStream bin = new ByteArrayInputStream(this.buf, 0, count);
+ this.reset();
+ this.buf = null;
+ return bin;
+ }
+ }
+
/**
* Stream to memory via a {@code ByteArrayOutputStream}.
*
@@ -310,14 +329,14 @@ final class S3ADataBlocks {
*/
static class ByteArrayBlock extends DataBlock {
- private ByteArrayOutputStream buffer;
+ private S3AByteArrayOutputStream buffer;
private final int limit;
// cache data size so that it is consistent after the buffer is reset.
private Integer dataSize;
ByteArrayBlock(int limit) {
this.limit = limit;
- buffer = new ByteArrayOutputStream();
+ buffer = new S3AByteArrayOutputStream(limit);
}
/**
@@ -333,8 +352,7 @@ final class S3ADataBlocks {
InputStream startUpload() throws IOException {
super.startUpload();
dataSize = buffer.size();
- ByteArrayInputStream bufferData = new ByteArrayInputStream(
- buffer.toByteArray());
+ ByteArrayInputStream bufferData = buffer.getInputStream();
buffer = null;
return bufferData;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org