From f34ce632137eead29615a458ae33a981c0b787d0 Mon Sep 17 00:00:00 2001 From: thiruvel Date: Wed, 1 Jul 2015 01:43:14 -0700 Subject: [PATCH] Throw appropriate exception during schema update --- .../apache/hadoop/hbase/rest/SchemaResource.java | 102 ++++++++++----------- 1 file changed, 46 insertions(+), 56 deletions(-) diff --git a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/SchemaResource.java b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/SchemaResource.java index c0e7153..2ef77b4 100644 --- a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/SchemaResource.java +++ b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/SchemaResource.java @@ -103,80 +103,70 @@ public class SchemaResource extends ResourceBase { } private Response replace(final TableName name, final TableSchemaModel model, - final UriInfo uriInfo, final Admin admin) { + final UriInfo uriInfo, final Admin admin) throws IOException { if (servlet.isReadOnly()) { return Response.status(Response.Status.FORBIDDEN) - .type(MIMETYPE_TEXT).entity("Forbidden" + CRLF) - .build(); + .type(MIMETYPE_TEXT).entity("Forbidden" + CRLF) + .build(); } - try { - HTableDescriptor htd = new HTableDescriptor(name); - for (Map.Entry e: model.getAny().entrySet()) { - htd.setValue(e.getKey().getLocalPart(), e.getValue().toString()); - } - for (ColumnSchemaModel family: model.getColumns()) { - HColumnDescriptor hcd = new HColumnDescriptor(family.getName()); - for (Map.Entry e: family.getAny().entrySet()) { - hcd.setValue(e.getKey().getLocalPart(), e.getValue().toString()); - } - htd.addFamily(hcd); + HTableDescriptor htd = new HTableDescriptor(name); + for (Map.Entry e: model.getAny().entrySet()) { + htd.setValue(e.getKey().getLocalPart(), e.getValue().toString()); + } + for (ColumnSchemaModel family: model.getColumns()) { + HColumnDescriptor hcd = new HColumnDescriptor(family.getName()); + for (Map.Entry e: family.getAny().entrySet()) { + hcd.setValue(e.getKey().getLocalPart(), e.getValue().toString()); } - if (admin.tableExists(name)) { - admin.disableTable(name); - admin.modifyTable(name, htd); - admin.enableTable(name); - servlet.getMetrics().incrementSucessfulPutRequests(1); - } else try { - admin.createTable(htd); - servlet.getMetrics().incrementSucessfulPutRequests(1); - } catch (TableExistsException e) { - // race, someone else created a table with the same name - return Response.status(Response.Status.NOT_MODIFIED) + htd.addFamily(hcd); + } + if (admin.tableExists(name)) { + admin.disableTable(name); + admin.modifyTable(name, htd); + admin.enableTable(name); + servlet.getMetrics().incrementSucessfulPutRequests(1); + } else try { + admin.createTable(htd); + servlet.getMetrics().incrementSucessfulPutRequests(1); + } catch (TableExistsException e) { + // race, someone else created a table with the same name + return Response.status(Response.Status.NOT_MODIFIED) .type(MIMETYPE_TEXT).entity("Not modified" + CRLF) .build(); - } - return Response.created(uriInfo.getAbsolutePath()).build(); - } catch (Exception e) { - servlet.getMetrics().incrementFailedPutRequests(1); - return processException(e); } + return Response.created(uriInfo.getAbsolutePath()).build(); } private Response update(final TableName name, final TableSchemaModel model, - final UriInfo uriInfo, final Admin admin) { + final UriInfo uriInfo, final Admin admin) throws IOException { if (servlet.isReadOnly()) { return Response.status(Response.Status.FORBIDDEN) - .type(MIMETYPE_TEXT).entity("Forbidden" + CRLF) - .build(); + .type(MIMETYPE_TEXT).entity("Forbidden" + CRLF) + .build(); } + HTableDescriptor htd = admin.getTableDescriptor(name); + admin.disableTable(name); try { - HTableDescriptor htd = admin.getTableDescriptor(name); - admin.disableTable(name); - try { - for (ColumnSchemaModel family: model.getColumns()) { - HColumnDescriptor hcd = new HColumnDescriptor(family.getName()); - for (Map.Entry e: family.getAny().entrySet()) { - hcd.setValue(e.getKey().getLocalPart(), e.getValue().toString()); - } - if (htd.hasFamily(hcd.getName())) { - admin.modifyColumnFamily(name, hcd); - } else { - admin.addColumnFamily(name, hcd); - } + for (ColumnSchemaModel family: model.getColumns()) { + HColumnDescriptor hcd = new HColumnDescriptor(family.getName()); + for (Map.Entry e: family.getAny().entrySet()) { + hcd.setValue(e.getKey().getLocalPart(), e.getValue().toString()); + } + if (htd.hasFamily(hcd.getName())) { + admin.modifyColumnFamily(name, hcd); + } else { + admin.addColumnFamily(name, hcd); } - } catch (IOException e) { - return Response.status(Response.Status.SERVICE_UNAVAILABLE) + } + } catch (IOException e) { + return Response.status(Response.Status.SERVICE_UNAVAILABLE) .type(MIMETYPE_TEXT).entity("Unavailable" + CRLF) .build(); - } finally { - admin.enableTable(TableName.valueOf(tableResource.getName())); - } - servlet.getMetrics().incrementSucessfulPutRequests(1); - return Response.ok().build(); - } catch (Exception e) { - servlet.getMetrics().incrementFailedPutRequests(1); - return processException(e); + } finally { + admin.enableTable(TableName.valueOf(tableResource.getName())); } + servlet.getMetrics().incrementSucessfulPutRequests(1); + return Response.ok().build(); } private Response update(final TableSchemaModel model, final boolean replace, -- 2.3.2 (Apple Git-55)