aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2018-12-07 02:23:45 -0800
committerChris Lu <chris.lu@gmail.com>2018-12-07 02:23:45 -0800
commitadf12c88253f603b1b06482b58bca72bb2924c4b (patch)
tree03902b2337ac91b52437509ef110350fc274359b
parent1bfb96f34df19085e99392b4e9af376b617806ad (diff)
downloadseaweedfs-adf12c88253f603b1b06482b58bca72bb2924c4b.tar.xz
seaweedfs-adf12c88253f603b1b06482b58bca72bb2924c4b.zip
refactoring
-rw-r--r--other/java/hdfs/src/main/java/seaweed/hdfs/SeaweedRead.java52
-rw-r--r--other/java/hdfs/src/test/java/seaweedfs/hdfs/SeaweedReadTest.java41
2 files changed, 30 insertions, 63 deletions
diff --git a/other/java/hdfs/src/main/java/seaweed/hdfs/SeaweedRead.java b/other/java/hdfs/src/main/java/seaweed/hdfs/SeaweedRead.java
index e9453d1bb..a39e0f59c 100644
--- a/other/java/hdfs/src/main/java/seaweed/hdfs/SeaweedRead.java
+++ b/other/java/hdfs/src/main/java/seaweed/hdfs/SeaweedRead.java
@@ -53,34 +53,42 @@ public class SeaweedRead {
return 0;
}
- HttpClient client = HttpClientBuilder.create().build();
- HttpGet request = new HttpGet(
- String.format("http://%s/%s", locations.getLocations(0).getUrl(), chunkView.fileId));
-
- if (!chunkView.isFullChunk){
- request.setHeader(HttpHeaders.ACCEPT_ENCODING, "");
- request.setHeader(HttpHeaders.RANGE,
- String.format("bytes=%d-%d", chunkView.offset, chunkView.offset + chunkView.size));
- }
+ int len = readChunkView(position, buffer, startOffset, chunkView, locations);
+
+ readCount += len;
+ startOffset += len;
- try {
- HttpResponse response = client.execute(request);
- HttpEntity entity = response.getEntity();
+ }
- int len = (int) (chunkView.logicOffset - position + chunkView.size);
- OutputStream outputStream = new ByteBufferOutputStream(ByteBuffer.wrap(buffer, startOffset, len));
- entity.writeTo(outputStream);
- LOG.debug("* read chunkView:{} startOffset:{} length:{}", chunkView, startOffset, len);
+ return readCount;
+ }
- readCount += len;
- startOffset += len;
+ private static int readChunkView(long position, byte[] buffer, int startOffset, ChunkView chunkView, FilerProto.Locations locations) {
+ HttpClient client = HttpClientBuilder.create().build();
+ HttpGet request = new HttpGet(
+ String.format("http://%s/%s", locations.getLocations(0).getUrl(), chunkView.fileId));
- } catch (IOException e) {
- e.printStackTrace();
- }
+ if (!chunkView.isFullChunk) {
+ request.setHeader(HttpHeaders.ACCEPT_ENCODING, "");
+ request.setHeader(HttpHeaders.RANGE,
+ String.format("bytes=%d-%d", chunkView.offset, chunkView.offset + chunkView.size));
}
- return readCount;
+ try {
+ HttpResponse response = client.execute(request);
+ HttpEntity entity = response.getEntity();
+
+ int len = (int) (chunkView.logicOffset - position + chunkView.size);
+ OutputStream outputStream = new ByteBufferOutputStream(ByteBuffer.wrap(buffer, startOffset, len));
+ entity.writeTo(outputStream);
+ LOG.debug("* read chunkView:{} startOffset:{} length:{}", chunkView, startOffset, len);
+
+ return len;
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return 0;
}
public static List<ChunkView> viewFromVisibles(List<VisibleInterval> visibleIntervals, long offset, long size) {
diff --git a/other/java/hdfs/src/test/java/seaweedfs/hdfs/SeaweedReadTest.java b/other/java/hdfs/src/test/java/seaweedfs/hdfs/SeaweedReadTest.java
index d17f2e056..4bb9efff5 100644
--- a/other/java/hdfs/src/test/java/seaweedfs/hdfs/SeaweedReadTest.java
+++ b/other/java/hdfs/src/test/java/seaweedfs/hdfs/SeaweedReadTest.java
@@ -1,18 +1,9 @@
package seaweedfs.hdfs;
-import org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpHeaders;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.util.EntityUtils;
import org.junit.Test;
import seaweed.hdfs.SeaweedRead;
import seaweedfs.client.FilerProto;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -72,36 +63,4 @@ public class SeaweedReadTest {
}
- // test gzipped content with range requests. Conclusion: not doing this.
- public void testGzippedRangeRequest() throws IOException {
-
- SeaweedRead.ChunkView chunkView = new SeaweedRead.ChunkView("2,621a042be6e39d", 0, 28, 0);
- CloseableHttpClient client = HttpClientBuilder.create().build();
- String targetUrl = String.format("http://%s/%s", "localhost:8080", chunkView.fileId);
- HttpGet request = new HttpGet(targetUrl);
- // request.removeHeaders(HttpHeaders.ACCEPT_ENCODING);
- request.setHeader(HttpHeaders.ACCEPT_ENCODING, "");
- request.setHeader(HttpHeaders.RANGE, String.format("bytes=%d-%d", chunkView.offset, chunkView.offset + chunkView.size));
- System.out.println("request:");
- for (Header header : request.getAllHeaders()) {
- System.out.println(header.getName() + ": " + header.getValue());
- }
-
- int len = 29;
- byte[] buffer = new byte[len];
- CloseableHttpResponse response = null;
- try {
- response = client.execute(request);
- HttpEntity entity = response.getEntity();
- System.out.println("content length:" + entity.getContentLength());
- System.out.println("is streaming:" + entity.isStreaming());
- System.out.println(EntityUtils.toString(entity));
- } finally {
-
- if (response != null) {
- response.close();
- }
- }
-
- }
}