Author: stack Date: Thu Feb 7 13:08:12 2008 New Revision: 619638 URL: http://svn.apache.org/viewvc?rev=619638&view=rev Log: HBASE-28 thrift put/mutateRow methods need to throw IllegalArgument exceptions
Modified: hadoop/hbase/trunk/CHANGES.txt hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HConnectionManager.java hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/thrift/Hbase.thrift hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/thrift/ThriftServer.java hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/thrift/generated/Hbase.java Modified: hadoop/hbase/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=619638&r1=619637&r2=619638&view=diff ============================================================================== --- hadoop/hbase/trunk/CHANGES.txt (original) +++ hadoop/hbase/trunk/CHANGES.txt Thu Feb 7 13:08:12 2008 @@ -11,6 +11,8 @@ BUG FIXES HBASE-19 CountingBloomFilter can overflow its storage (Stu Hood and Bryan Duxbury via Stack) + HBASE-28 thrift put/mutateRow methods need to throw IllegalArgument exceptions + (Dave Simpson via Bryan Duxbury via Stack) IMPROVEMENTS HBASE-415 Rewrite leases to use DelayedBlockingQueue instead of polling Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HConnectionManager.java URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HConnectionManager.java?rev=619638&r1=619637&r2=619638&view=diff ============================================================================== --- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HConnectionManager.java (original) +++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HConnectionManager.java Thu Feb 7 13:08:12 2008 @@ -222,6 +222,9 @@ if (tableName == null) { throw new IllegalArgumentException("Table name cannot be null"); } + if (tableName.equals(ROOT_TABLE_NAME) || tableName.equals(META_TABLE_NAME)) { + return true; + } boolean exists = false; try { HTableDescriptor[] tables = listTables(); Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/thrift/Hbase.thrift URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/thrift/Hbase.thrift?rev=619638&r1=619637&r2=619638&view=diff ============================================================================== --- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/thrift/Hbase.thrift (original) +++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/thrift/Hbase.thrift Thu Feb 7 13:08:12 2008 @@ -256,7 +256,7 @@ * @param column column name */ void put(1:Text tableName, 2:Text row, 3:Text column, 4:Bytes value) - throws (1:IOError io) + throws (1:IOError io, 2:IllegalArgument ia) /** * Apply a series of mutations (updates/deletes) to a row in a @@ -269,7 +269,7 @@ * @param mutations list of mutation commands */ void mutateRow(1:Text tableName, 2:Text row, 3:list<Mutation> mutations) - throws (1:IOError io) + throws (1:IOError io, 2:IllegalArgument ia) /** * Apply a series of mutations (updates/deletes) to a row in a @@ -283,7 +283,7 @@ * @param timestamp timestamp */ void mutateRowTs(1:Text tableName, 2:Text row, 3:list<Mutation> mutations, 4:i64 timestamp) - throws (1:IOError io) + throws (1:IOError io, 2:IllegalArgument ia) /** * Delete all cells that match the passed row and column. Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/thrift/ThriftServer.java URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/thrift/ThriftServer.java?rev=619638&r1=619637&r2=619638&view=diff ============================================================================== --- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/thrift/ThriftServer.java (original) +++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/thrift/ThriftServer.java Thu Feb 7 13:08:12 2008 @@ -276,7 +276,7 @@ } public void put(byte[] tableName, byte[] row, byte[] column, byte[] value) - throws IOError { + throws IOError, IllegalArgument { if (LOG.isDebugEnabled()) { LOG.debug("put: table=" + new String(tableName) + ", row=" + new String(row) + ", col=" + new String(column) @@ -289,6 +289,8 @@ table.commit(lockid); } catch (IOException e) { throw new IOError(e.getMessage()); + } catch (IllegalArgumentException e) { + throw new IllegalArgument(e.getMessage()); } } @@ -373,12 +375,12 @@ } public void mutateRow(byte[] tableName, byte[] row, - ArrayList<Mutation> mutations) throws IOError { + ArrayList<Mutation> mutations) throws IOError, IllegalArgument { mutateRowTs(tableName, row, mutations, HConstants.LATEST_TIMESTAMP); } public void mutateRowTs(byte[] tableName, byte[] row, - ArrayList<Mutation> mutations, long timestamp) throws IOError { + ArrayList<Mutation> mutations, long timestamp) throws IOError, IllegalArgument { if (LOG.isDebugEnabled()) { LOG.debug("mutateRowTs: table=" + new String(tableName) + ", row=" + new String(row) + ", ts=" + timestamp + " mutations=" @@ -412,6 +414,11 @@ table.abort(lockid); } throw new IOError(e.getMessage()); + } catch (IllegalArgumentException e) { + if (lockid != null) { + table.abort(lockid); + } + throw new IllegalArgument(e.getMessage()); } } Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/thrift/generated/Hbase.java URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/thrift/generated/Hbase.java?rev=619638&r1=619637&r2=619638&view=diff ============================================================================== --- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/thrift/generated/Hbase.java (original) +++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/thrift/generated/Hbase.java Thu Feb 7 13:08:12 2008 @@ -145,7 +145,7 @@ * @param row row key * @param column column name */ - public void put(byte[] tableName, byte[] row, byte[] column, byte[] value) throws IOError, TException; + public void put(byte[] tableName, byte[] row, byte[] column, byte[] value) throws IOError, IllegalArgument, TException; /** * Apply a series of mutations (updates/deletes) to a row in a @@ -157,7 +157,7 @@ * @param row row key * @param mutations list of mutation commands */ - public void mutateRow(byte[] tableName, byte[] row, ArrayList<Mutation> mutations) throws IOError, TException; + public void mutateRow(byte[] tableName, byte[] row, ArrayList<Mutation> mutations) throws IOError, IllegalArgument, TException; /** * Apply a series of mutations (updates/deletes) to a row in a @@ -170,7 +170,7 @@ * @param mutations list of mutation commands * @param timestamp timestamp */ - public void mutateRowTs(byte[] tableName, byte[] row, ArrayList<Mutation> mutations, long timestamp) throws IOError, TException; + public void mutateRowTs(byte[] tableName, byte[] row, ArrayList<Mutation> mutations, long timestamp) throws IOError, IllegalArgument, TException; /** * Delete all cells that match the passed row and column. @@ -704,7 +704,7 @@ throw new TApplicationException(TApplicationException.MISSING_RESULT, "getRowTs failed: unknown result"); } - public void put(byte[] tableName, byte[] row, byte[] column, byte[] value) throws IOError, TException + public void put(byte[] tableName, byte[] row, byte[] column, byte[] value) throws IOError, IllegalArgument, TException { send_put(tableName, row, column, value); recv_put(); @@ -723,7 +723,7 @@ oprot_.getTransport().flush(); } - public void recv_put() throws IOError, TException + public void recv_put() throws IOError, IllegalArgument, TException { TMessage msg = iprot_.readMessageBegin(); if (msg.type == TMessageType.EXCEPTION) { @@ -737,10 +737,13 @@ if (result.__isset.io) { throw result.io; } + if (result.__isset.ia) { + throw result.ia; + } return; } - public void mutateRow(byte[] tableName, byte[] row, ArrayList<Mutation> mutations) throws IOError, TException + public void mutateRow(byte[] tableName, byte[] row, ArrayList<Mutation> mutations) throws IOError, IllegalArgument, TException { send_mutateRow(tableName, row, mutations); recv_mutateRow(); @@ -758,7 +761,7 @@ oprot_.getTransport().flush(); } - public void recv_mutateRow() throws IOError, TException + public void recv_mutateRow() throws IOError, IllegalArgument, TException { TMessage msg = iprot_.readMessageBegin(); if (msg.type == TMessageType.EXCEPTION) { @@ -772,10 +775,13 @@ if (result.__isset.io) { throw result.io; } + if (result.__isset.ia) { + throw result.ia; + } return; } - public void mutateRowTs(byte[] tableName, byte[] row, ArrayList<Mutation> mutations, long timestamp) throws IOError, TException + public void mutateRowTs(byte[] tableName, byte[] row, ArrayList<Mutation> mutations, long timestamp) throws IOError, IllegalArgument, TException { send_mutateRowTs(tableName, row, mutations, timestamp); recv_mutateRowTs(); @@ -794,7 +800,7 @@ oprot_.getTransport().flush(); } - public void recv_mutateRowTs() throws IOError, TException + public void recv_mutateRowTs() throws IOError, IllegalArgument, TException { TMessage msg = iprot_.readMessageBegin(); if (msg.type == TMessageType.EXCEPTION) { @@ -808,6 +814,9 @@ if (result.__isset.io) { throw result.io; } + if (result.__isset.ia) { + throw result.ia; + } return; } @@ -1488,6 +1497,9 @@ } catch (IOError io) { result.io = io; result.__isset.io = true; + } catch (IllegalArgument ia) { + result.ia = ia; + result.__isset.ia = true; } oprot.writeMessageBegin(new TMessage("put", TMessageType.REPLY, seqid)); result.write(oprot); @@ -1509,6 +1521,9 @@ } catch (IOError io) { result.io = io; result.__isset.io = true; + } catch (IllegalArgument ia) { + result.ia = ia; + result.__isset.ia = true; } oprot.writeMessageBegin(new TMessage("mutateRow", TMessageType.REPLY, seqid)); result.write(oprot); @@ -1530,6 +1545,9 @@ } catch (IOError io) { result.io = io; result.__isset.io = true; + } catch (IllegalArgument ia) { + result.ia = ia; + result.__isset.ia = true; } oprot.writeMessageBegin(new TMessage("mutateRowTs", TMessageType.REPLY, seqid)); result.write(oprot); @@ -4148,21 +4166,26 @@ public static class put_result implements TBase, java.io.Serializable { public IOError io; + public IllegalArgument ia; public final Isset __isset = new Isset(); public static final class Isset { public boolean io = false; + public boolean ia = false; } public put_result() { } public put_result( - IOError io) + IOError io, + IllegalArgument ia) { this(); this.io = io; this.__isset.io = true; + this.ia = ia; + this.__isset.ia = true; } public void read(TProtocol iprot) throws TException { @@ -4185,6 +4208,15 @@ TProtocolUtil.skip(iprot, field.type); } break; + case 2: + if (field.type == TType.STRUCT) { + this.ia = new IllegalArgument(); + this.ia.read(iprot); + this.__isset.ia = true; + } else { + TProtocolUtil.skip(iprot, field.type); + } + break; default: TProtocolUtil.skip(iprot, field.type); break; @@ -4208,6 +4240,15 @@ this.io.write(oprot); oprot.writeFieldEnd(); } + } else if (this.__isset.ia) { + if (this.ia != null) { + field.name = "ia"; + field.type = TType.STRUCT; + field.id = 2; + oprot.writeFieldBegin(field); + this.ia.write(oprot); + oprot.writeFieldEnd(); + } } oprot.writeFieldStop(); oprot.writeStructEnd(); @@ -4217,6 +4258,8 @@ StringBuilder sb = new StringBuilder("put_result("); sb.append("io:"); sb.append(this.io.toString()); + sb.append(",ia:"); + sb.append(this.ia.toString()); sb.append(")"); return sb.toString(); } @@ -4361,21 +4404,26 @@ public static class mutateRow_result implements TBase, java.io.Serializable { public IOError io; + public IllegalArgument ia; public final Isset __isset = new Isset(); public static final class Isset { public boolean io = false; + public boolean ia = false; } public mutateRow_result() { } public mutateRow_result( - IOError io) + IOError io, + IllegalArgument ia) { this(); this.io = io; this.__isset.io = true; + this.ia = ia; + this.__isset.ia = true; } public void read(TProtocol iprot) throws TException { @@ -4398,6 +4446,15 @@ TProtocolUtil.skip(iprot, field.type); } break; + case 2: + if (field.type == TType.STRUCT) { + this.ia = new IllegalArgument(); + this.ia.read(iprot); + this.__isset.ia = true; + } else { + TProtocolUtil.skip(iprot, field.type); + } + break; default: TProtocolUtil.skip(iprot, field.type); break; @@ -4421,6 +4478,15 @@ this.io.write(oprot); oprot.writeFieldEnd(); } + } else if (this.__isset.ia) { + if (this.ia != null) { + field.name = "ia"; + field.type = TType.STRUCT; + field.id = 2; + oprot.writeFieldBegin(field); + this.ia.write(oprot); + oprot.writeFieldEnd(); + } } oprot.writeFieldStop(); oprot.writeStructEnd(); @@ -4430,6 +4496,8 @@ StringBuilder sb = new StringBuilder("mutateRow_result("); sb.append("io:"); sb.append(this.io.toString()); + sb.append(",ia:"); + sb.append(this.ia.toString()); sb.append(")"); return sb.toString(); } @@ -4595,21 +4663,26 @@ public static class mutateRowTs_result implements TBase, java.io.Serializable { public IOError io; + public IllegalArgument ia; public final Isset __isset = new Isset(); public static final class Isset { public boolean io = false; + public boolean ia = false; } public mutateRowTs_result() { } public mutateRowTs_result( - IOError io) + IOError io, + IllegalArgument ia) { this(); this.io = io; this.__isset.io = true; + this.ia = ia; + this.__isset.ia = true; } public void read(TProtocol iprot) throws TException { @@ -4632,6 +4705,15 @@ TProtocolUtil.skip(iprot, field.type); } break; + case 2: + if (field.type == TType.STRUCT) { + this.ia = new IllegalArgument(); + this.ia.read(iprot); + this.__isset.ia = true; + } else { + TProtocolUtil.skip(iprot, field.type); + } + break; default: TProtocolUtil.skip(iprot, field.type); break; @@ -4655,6 +4737,15 @@ this.io.write(oprot); oprot.writeFieldEnd(); } + } else if (this.__isset.ia) { + if (this.ia != null) { + field.name = "ia"; + field.type = TType.STRUCT; + field.id = 2; + oprot.writeFieldBegin(field); + this.ia.write(oprot); + oprot.writeFieldEnd(); + } } oprot.writeFieldStop(); oprot.writeStructEnd(); @@ -4664,6 +4755,8 @@ StringBuilder sb = new StringBuilder("mutateRowTs_result("); sb.append("io:"); sb.append(this.io.toString()); + sb.append(",ia:"); + sb.append(this.ia.toString()); sb.append(")"); return sb.toString(); }