You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by la...@apache.org on 2013/11/13 19:08:09 UTC
svn commit: r1541642 - in /hbase/branches/0.94/src:
main/java/org/apache/hadoop/hbase/rest/SchemaResource.java
test/java/org/apache/hadoop/hbase/rest/TestSchemaResource.java
Author: larsh
Date: Wed Nov 13 18:08:08 2013
New Revision: 1541642
URL: http://svn.apache.org/r1541642
Log:
HBASE-9849 [REST] Forbidden schema delete in read only mode (Julian Zhou)
Modified:
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/rest/SchemaResource.java
hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/rest/TestSchemaResource.java
Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/rest/SchemaResource.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/rest/SchemaResource.java?rev=1541642&r1=1541641&r2=1541642&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/rest/SchemaResource.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/rest/SchemaResource.java Wed Nov 13 18:08:08 2013
@@ -238,6 +238,11 @@ public class SchemaResource extends Reso
LOG.debug("DELETE " + uriInfo.getAbsolutePath());
}
servlet.getMetrics().incrementRequests(1);
+ if (servlet.isReadOnly()) {
+ return Response.status(Response.Status.FORBIDDEN).type(MIMETYPE_TEXT)
+ .entity("Forbidden" + CRLF).build();
+ }
+
try {
HBaseAdmin admin = servlet.getAdmin();
boolean success = false;
Modified: hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/rest/TestSchemaResource.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/rest/TestSchemaResource.java?rev=1541642&r1=1541641&r2=1541642&view=diff
==============================================================================
--- hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/rest/TestSchemaResource.java (original)
+++ hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/rest/TestSchemaResource.java Wed Nov 13 18:08:08 2013
@@ -115,14 +115,17 @@ public class TestSchemaResource {
model = fromXML(response.getBody());
TestTableSchemaModel.checkModel(model, TABLE1);
- // delete the table
- client.delete(schemaPath);
-
- // make sure HBase concurs
- assertFalse(admin.tableExists(TABLE1));
+ // test delete schema operation is forbidden in read-only mode
+ response = client.delete(schemaPath);
+ assertEquals(response.getCode(), 403);
// return read-only setting back to default
conf.set("hbase.rest.readonly", "false");
+
+ // delete the table and make sure HBase concurs
+ response = client.delete(schemaPath);
+ assertEquals(response.getCode(), 200);
+ assertFalse(admin.tableExists(TABLE1));
}
@Test
@@ -163,14 +166,17 @@ public class TestSchemaResource {
model.getObjectFromMessage(response.getBody());
TestTableSchemaModel.checkModel(model, TABLE2);
- // delete the table
- client.delete(schemaPath);
-
- // make sure HBase concurs
- assertFalse(admin.tableExists(TABLE2));
+ // test delete schema operation is forbidden in read-only mode
+ response = client.delete(schemaPath);
+ assertEquals(response.getCode(), 403);
// return read-only setting back to default
conf.set("hbase.rest.readonly", "false");
+
+ // delete the table and make sure HBase concurs
+ response = client.delete(schemaPath);
+ assertEquals(response.getCode(), 200);
+ assertFalse(admin.tableExists(TABLE2));
}
@org.junit.Rule