From 0350c37ec1d6a4e7f9dc7bca290a2270ec156c8e Mon Sep 17 00:00:00 2001
From: Kevin Risden <risdenk@users.noreply.github.com>
Date: Sun, 10 Sep 2017 16:07:16 -0500
Subject: [PATCH] [s3] Use AWS IOUtils to read object data (#1021)

---
 s3/src/main/java/com/yahoo/ycsb/db/S3Client.java | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/s3/src/main/java/com/yahoo/ycsb/db/S3Client.java b/s3/src/main/java/com/yahoo/ycsb/db/S3Client.java
index 8be4738a..3f0c9f65 100644
--- a/s3/src/main/java/com/yahoo/ycsb/db/S3Client.java
+++ b/s3/src/main/java/com/yahoo/ycsb/db/S3Client.java
@@ -28,6 +28,7 @@ import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.net.*;
 
+import com.amazonaws.util.IOUtils;
 import com.yahoo.ycsb.ByteArrayByteIterator;
 import com.yahoo.ycsb.ByteIterator;
 import com.yahoo.ycsb.DB;
@@ -427,14 +428,7 @@ public class S3Client extends DB {
       Map.Entry<S3Object, ObjectMetadata> objectAndMetadata = getS3ObjectAndMetadata(bucket, key, ssecLocal);
       InputStream objectData = objectAndMetadata.getKey().getObjectContent(); //consuming the stream
       // writing the stream to bytes and to results
-      int sizeOfFile = (int)objectAndMetadata.getValue().getContentLength();
-      byte[] inputStreamToByte = new byte[sizeOfFile];
-      int len;
-      int offset = 0;
-      while ((len = objectData.read(inputStreamToByte, offset, sizeOfFile - offset)) > 0) {
-        offset += len;
-      }
-      result.put(key, new ByteArrayByteIterator(inputStreamToByte));
+      result.put(key, new ByteArrayByteIterator(IOUtils.toByteArray(objectData)));
       objectData.close();
       objectAndMetadata.getKey().close();
     } catch (Exception e){
-- 
GitLab