aboutsummaryrefslogtreecommitdiff
path: root/other/java/client/src
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-08-01 11:36:29 -0700
committerChris Lu <chris.lu@gmail.com>2020-08-01 11:36:29 -0700
commit4d9da157bc4794524855f455d9df55c73f0dbdb0 (patch)
tree5b74e5b848a6923b56e581e7dfe974493e5e5c32 /other/java/client/src
parent8cc35e2c13cb2385e0b2d7a0ee926b56ef757379 (diff)
downloadseaweedfs-4d9da157bc4794524855f455d9df55c73f0dbdb0.tar.xz
seaweedfs-4d9da157bc4794524855f455d9df55c73f0dbdb0.zip
HDFS: read gzip content
Diffstat (limited to 'other/java/client/src')
-rw-r--r--other/java/client/src/main/java/seaweedfs/client/SeaweedRead.java19
1 files changed, 14 insertions, 5 deletions
diff --git a/other/java/client/src/main/java/seaweedfs/client/SeaweedRead.java b/other/java/client/src/main/java/seaweedfs/client/SeaweedRead.java
index 48d942f88..9edbfb799 100644
--- a/other/java/client/src/main/java/seaweedfs/client/SeaweedRead.java
+++ b/other/java/client/src/main/java/seaweedfs/client/SeaweedRead.java
@@ -2,6 +2,7 @@ package seaweedfs.client;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHeaders;
+import org.apache.http.client.entity.GzipDecompressingEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.util.EntityUtils;
@@ -78,7 +79,7 @@ public class SeaweedRead {
HttpGet request = new HttpGet(
String.format("http://%s/%s", locations.getLocations(0).getUrl(), chunkView.fileId));
- request.setHeader(HttpHeaders.ACCEPT_ENCODING, "");
+ request.setHeader(HttpHeaders.ACCEPT_ENCODING, "gzip");
byte[] data = null;
@@ -87,6 +88,18 @@ public class SeaweedRead {
try {
HttpEntity entity = response.getEntity();
+ Header contentEncodingHeader = entity.getContentEncoding();
+
+ if (contentEncodingHeader != null) {
+ HeaderElement[] encodings =contentEncodingHeader.getElements();
+ for (int i = 0; i < encodings.length; i++) {
+ if (encodings[i].getName().equalsIgnoreCase("gzip")) {
+ entity = new GzipDecompressingEntity(entity);
+ break;
+ }
+ }
+ }
+
data = EntityUtils.toByteArray(entity);
EntityUtils.consume(entity);
@@ -96,10 +109,6 @@ public class SeaweedRead {
request.releaseConnection();
}
- if (chunkView.isCompressed) {
- // data = Gzip.decompress(data);
- }
-
if (chunkView.cipherKey != null && chunkView.cipherKey.length != 0) {
try {
data = SeaweedCipher.decrypt(data, chunkView.cipherKey);