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();
     }


Reply via email to