Author: apurtell
Date: Sat Jul 23 19:04:08 2011
New Revision: 1150190
URL: http://svn.apache.org/viewvc?rev=1150190&view=rev
Log:
HBASE-4105 Stargate does not support json and gzip in parallel
Modified:
hbase/trunk/CHANGES.txt
hbase/trunk/src/main/java/org/apache/hadoop/hbase/rest/filter/GZIPResponseWrapper.java
hbase/trunk/src/test/java/org/apache/hadoop/hbase/rest/TestGzipFilter.java
Modified: hbase/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=1150190&r1=1150189&r2=1150190&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Sat Jul 23 19:04:08 2011
@@ -169,6 +169,8 @@ Release 0.91.0 - Unreleased
HBASE-4118 method regionserver.MemStore#updateColumnValue: the check for
qualifier and family is missing (N Keywal via Ted Yu)
HBASE-4127 Don't modify table's name away in HBaseAdmin
+ HBASE-4105 Stargate does not support Content-Type: application/json and
+ Content-Encoding: gzip in parallel
IMPROVEMENTS
HBASE-3290 Max Compaction Size (Nicolas Spiegelberg via Stack)
Modified:
hbase/trunk/src/main/java/org/apache/hadoop/hbase/rest/filter/GZIPResponseWrapper.java
URL:
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/rest/filter/GZIPResponseWrapper.java?rev=1150190&r1=1150189&r2=1150190&view=diff
==============================================================================
---
hbase/trunk/src/main/java/org/apache/hadoop/hbase/rest/filter/GZIPResponseWrapper.java
(original)
+++
hbase/trunk/src/main/java/org/apache/hadoop/hbase/rest/filter/GZIPResponseWrapper.java
Sat Jul 23 19:04:08 2011
@@ -29,7 +29,7 @@ import javax.servlet.http.HttpServletRes
public class GZIPResponseWrapper extends HttpServletResponseWrapper {
private HttpServletResponse response;
- private GZIPResponseStream os;
+ private ServletOutputStream os;
private PrintWriter writer;
private boolean compress = true;
@@ -40,6 +40,7 @@ public class GZIPResponseWrapper extends
@Override
public void setStatus(int status) {
+ super.setStatus(status);
if (status < 200 || status >= 300) {
compress = false;
}
@@ -76,8 +77,8 @@ public class GZIPResponseWrapper extends
if (writer != null) {
writer.flush();
}
- if (os != null) {
- os.finish();
+ if (os != null && (os instanceof GZIPResponseStream)) {
+ ((GZIPResponseStream)os).finish();
} else {
getResponse().flushBuffer();
}
@@ -86,8 +87,8 @@ public class GZIPResponseWrapper extends
@Override
public void reset() {
super.reset();
- if (os != null) {
- os.resetBuffer();
+ if (os != null && (os instanceof GZIPResponseStream)) {
+ ((GZIPResponseStream)os).resetBuffer();
}
writer = null;
os = null;
@@ -97,8 +98,8 @@ public class GZIPResponseWrapper extends
@Override
public void resetBuffer() {
super.resetBuffer();
- if (os != null) {
- os.resetBuffer();
+ if (os != null && (os instanceof GZIPResponseStream)) {
+ ((GZIPResponseStream)os).resetBuffer();
}
writer = null;
os = null;
@@ -124,14 +125,14 @@ public class GZIPResponseWrapper extends
@Override
public ServletOutputStream getOutputStream() throws IOException {
- if (!response.isCommitted() && compress) {
- if (os == null) {
- os = new GZIPResponseStream(response);
+ if (os == null) {
+ if (!response.isCommitted() && compress) {
+ os = (ServletOutputStream)new GZIPResponseStream(response);
+ } else {
+ os = response.getOutputStream();
}
- return os;
- } else {
- return response.getOutputStream();
}
+ return os;
}
@Override
Modified:
hbase/trunk/src/test/java/org/apache/hadoop/hbase/rest/TestGzipFilter.java
URL:
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/rest/TestGzipFilter.java?rev=1150190&r1=1150189&r2=1150190&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/rest/TestGzipFilter.java
(original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/rest/TestGzipFilter.java
Sat Jul 23 19:04:08 2011
@@ -132,4 +132,21 @@ public class TestGzipFilter {
contentEncoding = response.getHeader("Content-Encoding");
assertTrue(contentEncoding == null || !contentEncoding.contains("gzip"));
}
+
+ @Test
+ public void testScannerResultCodes() throws Exception {
+ Header[] headers = new Header[3];
+ headers[0] = new Header("Content-Type", Constants.MIMETYPE_XML);
+ headers[1] = new Header("Accept", Constants.MIMETYPE_JSON);
+ headers[2] = new Header("Accept-Encoding", "gzip");
+ Response response = client.post("/" + TABLE + "/scanner", headers,
+ "<Scanner/>".getBytes());
+ assertEquals(response.getCode(), 201);
+ String scannerUrl = response.getLocation();
+ assertNotNull(scannerUrl);
+ response = client.get(scannerUrl);
+ assertEquals(response.getCode(), 200);
+ response = client.get(scannerUrl);
+ assertEquals(response.getCode(), 204);
+ }
}
\ No newline at end of file