accumulo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From e..@apache.org
Subject svn commit: r1463980 - in /accumulo/branches/1.5/proxy/src: main/java/org/apache/accumulo/proxy/ main/java/org/apache/accumulo/proxy/thrift/ main/thrift/ test/java/org/apache/accumulo/proxy/
Date Wed, 03 Apr 2013 12:53:47 GMT
Author: ecn
Date: Wed Apr  3 12:53:47 2013
New Revision: 1463980

URL: http://svn.apache.org/r1463980
Log:
ACCUMULO-1190 applying Corey's patch

Added:
    accumulo/branches/1.5/proxy/src/main/java/org/apache/accumulo/proxy/thrift/MutationsRejectedException.java   (with props)
Modified:
    accumulo/branches/1.5/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
    accumulo/branches/1.5/proxy/src/main/java/org/apache/accumulo/proxy/thrift/AccumuloProxy.java
    accumulo/branches/1.5/proxy/src/main/thrift/proxy.thrift
    accumulo/branches/1.5/proxy/src/test/java/org/apache/accumulo/proxy/SimpleTest.java

Modified: accumulo/branches/1.5/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
URL: http://svn.apache.org/viewvc/accumulo/branches/1.5/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java?rev=1463980&r1=1463979&r2=1463980&view=diff
==============================================================================
--- accumulo/branches/1.5/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java (original)
+++ accumulo/branches/1.5/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java Wed Apr  3 12:53:47 2013
@@ -134,6 +134,7 @@ public class ProxyServer implements Accu
   protected Cache<UUID,BatchWriter> writerCache;
   
   public ProxyServer(Properties props) {
+
     String useMock = props.getProperty("org.apache.accumulo.proxy.ProxyServer.useMockInstance");
     if (useMock != null && Boolean.parseBoolean(useMock))
       instance = new MockInstance();
@@ -157,6 +158,9 @@ public class ProxyServer implements Accu
   private TException translateException(Exception ex) {
     try {
       throw ex;
+    } catch (MutationsRejectedException e) {
+        logger.debug(e,e);
+        return new org.apache.accumulo.proxy.thrift.MutationsRejectedException(e.toString());
     } catch (AccumuloException e) {
       logger.debug(e,e);
       return new org.apache.accumulo.proxy.thrift.AccumuloException(e.toString());
@@ -223,8 +227,7 @@ public class ProxyServer implements Accu
   }
   
   @Override
-  public void cancelCompaction(ByteBuffer login, String tableName) throws org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
-      org.apache.accumulo.proxy.thrift.TableNotFoundException, org.apache.accumulo.proxy.thrift.AccumuloException, TException {
+  public void cancelCompaction(ByteBuffer login, String tableName) throws TException {
     try {
       getConnector(login).tableOperations().cancelCompaction(tableName);
     } catch (Exception e) {

Modified: accumulo/branches/1.5/proxy/src/main/java/org/apache/accumulo/proxy/thrift/AccumuloProxy.java
URL: http://svn.apache.org/viewvc/accumulo/branches/1.5/proxy/src/main/java/org/apache/accumulo/proxy/thrift/AccumuloProxy.java?rev=1463980&r1=1463979&r2=1463980&view=diff
==============================================================================
--- accumulo/branches/1.5/proxy/src/main/java/org/apache/accumulo/proxy/thrift/AccumuloProxy.java (original)
+++ accumulo/branches/1.5/proxy/src/main/java/org/apache/accumulo/proxy/thrift/AccumuloProxy.java Wed Apr  3 12:53:47 2013
@@ -178,15 +178,15 @@ import org.slf4j.LoggerFactory;
 
     public void closeScanner(String scanner) throws UnknownScanner, org.apache.thrift.TException;
 
-    public void updateAndFlush(ByteBuffer login, String tableName, Map<ByteBuffer,List<ColumnUpdate>> cells) throws AccumuloException, AccumuloSecurityException, TableNotFoundException, org.apache.thrift.TException;
+    public void updateAndFlush(ByteBuffer login, String tableName, Map<ByteBuffer,List<ColumnUpdate>> cells) throws AccumuloException, AccumuloSecurityException, TableNotFoundException, MutationsRejectedException, org.apache.thrift.TException;
 
     public String createWriter(ByteBuffer login, String tableName, WriterOptions opts) throws AccumuloException, AccumuloSecurityException, TableNotFoundException, org.apache.thrift.TException;
 
-    public void update(String writer, Map<ByteBuffer,List<ColumnUpdate>> cells) throws org.apache.thrift.TException;
+    public void update(String writer, Map<ByteBuffer,List<ColumnUpdate>> cells) throws UnknownWriter, MutationsRejectedException, org.apache.thrift.TException;
 
-    public void flush(String writer) throws UnknownWriter, AccumuloSecurityException, org.apache.thrift.TException;
+    public void flush(String writer) throws UnknownWriter, MutationsRejectedException, org.apache.thrift.TException;
 
-    public void closeWriter(String writer) throws UnknownWriter, AccumuloException, AccumuloSecurityException, org.apache.thrift.TException;
+    public void closeWriter(String writer) throws UnknownWriter, MutationsRejectedException, org.apache.thrift.TException;
 
     public Range getRowRange(ByteBuffer row) throws org.apache.thrift.TException;
 
@@ -2290,7 +2290,7 @@ import org.slf4j.LoggerFactory;
       return;
     }
 
-    public void updateAndFlush(ByteBuffer login, String tableName, Map<ByteBuffer,List<ColumnUpdate>> cells) throws AccumuloException, AccumuloSecurityException, TableNotFoundException, org.apache.thrift.TException
+    public void updateAndFlush(ByteBuffer login, String tableName, Map<ByteBuffer,List<ColumnUpdate>> cells) throws AccumuloException, AccumuloSecurityException, TableNotFoundException, MutationsRejectedException, org.apache.thrift.TException
     {
       send_updateAndFlush(login, tableName, cells);
       recv_updateAndFlush();
@@ -2305,7 +2305,7 @@ import org.slf4j.LoggerFactory;
       sendBase("updateAndFlush", args);
     }
 
-    public void recv_updateAndFlush() throws AccumuloException, AccumuloSecurityException, TableNotFoundException, org.apache.thrift.TException
+    public void recv_updateAndFlush() throws AccumuloException, AccumuloSecurityException, TableNotFoundException, MutationsRejectedException, org.apache.thrift.TException
     {
       updateAndFlush_result result = new updateAndFlush_result();
       receiveBase(result, "updateAndFlush");
@@ -2318,6 +2318,9 @@ import org.slf4j.LoggerFactory;
       if (result.ouch3 != null) {
         throw result.ouch3;
       }
+      if (result.ouch4 != null) {
+        throw result.ouch4;
+      }
       return;
     }
 
@@ -2355,9 +2358,10 @@ import org.slf4j.LoggerFactory;
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "createWriter failed: unknown result");
     }
 
-    public void update(String writer, Map<ByteBuffer,List<ColumnUpdate>> cells) throws org.apache.thrift.TException
+    public void update(String writer, Map<ByteBuffer,List<ColumnUpdate>> cells) throws UnknownWriter, MutationsRejectedException, org.apache.thrift.TException
     {
       send_update(writer, cells);
+      recv_update();
     }
 
     public void send_update(String writer, Map<ByteBuffer,List<ColumnUpdate>> cells) throws org.apache.thrift.TException
@@ -2368,7 +2372,20 @@ import org.slf4j.LoggerFactory;
       sendBase("update", args);
     }
 
-    public void flush(String writer) throws UnknownWriter, AccumuloSecurityException, org.apache.thrift.TException
+    public void recv_update() throws UnknownWriter, MutationsRejectedException, org.apache.thrift.TException
+    {
+      update_result result = new update_result();
+      receiveBase(result, "update");
+      if (result.ouch1 != null) {
+        throw result.ouch1;
+      }
+      if (result.ouch2 != null) {
+        throw result.ouch2;
+      }
+      return;
+    }
+
+    public void flush(String writer) throws UnknownWriter, MutationsRejectedException, org.apache.thrift.TException
     {
       send_flush(writer);
       recv_flush();
@@ -2381,7 +2398,7 @@ import org.slf4j.LoggerFactory;
       sendBase("flush", args);
     }
 
-    public void recv_flush() throws UnknownWriter, AccumuloSecurityException, org.apache.thrift.TException
+    public void recv_flush() throws UnknownWriter, MutationsRejectedException, org.apache.thrift.TException
     {
       flush_result result = new flush_result();
       receiveBase(result, "flush");
@@ -2394,7 +2411,7 @@ import org.slf4j.LoggerFactory;
       return;
     }
 
-    public void closeWriter(String writer) throws UnknownWriter, AccumuloException, AccumuloSecurityException, org.apache.thrift.TException
+    public void closeWriter(String writer) throws UnknownWriter, MutationsRejectedException, org.apache.thrift.TException
     {
       send_closeWriter(writer);
       recv_closeWriter();
@@ -2407,16 +2424,13 @@ import org.slf4j.LoggerFactory;
       sendBase("closeWriter", args);
     }
 
-    public void recv_closeWriter() throws UnknownWriter, AccumuloException, AccumuloSecurityException, org.apache.thrift.TException
+    public void recv_closeWriter() throws UnknownWriter, MutationsRejectedException, org.apache.thrift.TException
     {
       closeWriter_result result = new closeWriter_result();
       receiveBase(result, "closeWriter");
       if (result.ouch1 != null) {
         throw result.ouch1;
       }
-      if (result.outch1 != null) {
-        throw result.outch1;
-      }
       if (result.ouch2 != null) {
         throw result.ouch2;
       }
@@ -4921,7 +4935,7 @@ import org.slf4j.LoggerFactory;
         prot.writeMessageEnd();
       }
 
-      public void getResult() throws AccumuloException, AccumuloSecurityException, TableNotFoundException, org.apache.thrift.TException {
+      public void getResult() throws AccumuloException, AccumuloSecurityException, TableNotFoundException, MutationsRejectedException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -4980,7 +4994,7 @@ import org.slf4j.LoggerFactory;
       private String writer;
       private Map<ByteBuffer,List<ColumnUpdate>> cells;
       public update_call(String writer, Map<ByteBuffer,List<ColumnUpdate>> cells, org.apache.thrift.async.AsyncMethodCallback<update_call> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
-        super(client, protocolFactory, transport, resultHandler, true);
+        super(client, protocolFactory, transport, resultHandler, false);
         this.writer = writer;
         this.cells = cells;
       }
@@ -4994,12 +5008,13 @@ import org.slf4j.LoggerFactory;
         prot.writeMessageEnd();
       }
 
-      public void getResult() throws org.apache.thrift.TException {
+      public void getResult() throws UnknownWriter, MutationsRejectedException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
         org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
         org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        (new Client(prot)).recv_update();
       }
     }
 
@@ -5025,7 +5040,7 @@ import org.slf4j.LoggerFactory;
         prot.writeMessageEnd();
       }
 
-      public void getResult() throws UnknownWriter, AccumuloSecurityException, org.apache.thrift.TException {
+      public void getResult() throws UnknownWriter, MutationsRejectedException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -5057,7 +5072,7 @@ import org.slf4j.LoggerFactory;
         prot.writeMessageEnd();
       }
 
-      public void getResult() throws UnknownWriter, AccumuloException, AccumuloSecurityException, org.apache.thrift.TException {
+      public void getResult() throws UnknownWriter, MutationsRejectedException, org.apache.thrift.TException {
         if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -6947,6 +6962,8 @@ import org.slf4j.LoggerFactory;
           result.ouch2 = ouch2;
         } catch (TableNotFoundException ouch3) {
           result.ouch3 = ouch3;
+        } catch (MutationsRejectedException ouch4) {
+          result.ouch4 = ouch4;
         }
         return result;
       }
@@ -6990,12 +7007,19 @@ import org.slf4j.LoggerFactory;
       }
 
       protected boolean isOneway() {
-        return true;
+        return false;
       }
 
-      public org.apache.thrift.TBase getResult(I iface, update_args args) throws org.apache.thrift.TException {
-        iface.update(args.writer, args.cells);
-        return null;
+      public update_result getResult(I iface, update_args args) throws org.apache.thrift.TException {
+        update_result result = new update_result();
+        try {
+          iface.update(args.writer, args.cells);
+        } catch (UnknownWriter ouch1) {
+          result.ouch1 = ouch1;
+        } catch (MutationsRejectedException ouch2) {
+          result.ouch2 = ouch2;
+        }
+        return result;
       }
     }
 
@@ -7018,7 +7042,7 @@ import org.slf4j.LoggerFactory;
           iface.flush(args.writer);
         } catch (UnknownWriter ouch1) {
           result.ouch1 = ouch1;
-        } catch (AccumuloSecurityException ouch2) {
+        } catch (MutationsRejectedException ouch2) {
           result.ouch2 = ouch2;
         }
         return result;
@@ -7044,9 +7068,7 @@ import org.slf4j.LoggerFactory;
           iface.closeWriter(args.writer);
         } catch (UnknownWriter ouch1) {
           result.ouch1 = ouch1;
-        } catch (AccumuloException outch1) {
-          result.outch1 = outch1;
-        } catch (AccumuloSecurityException ouch2) {
+        } catch (MutationsRejectedException ouch2) {
           result.ouch2 = ouch2;
         }
         return result;
@@ -79166,6 +79188,7 @@ import org.slf4j.LoggerFactory;
     private static final org.apache.thrift.protocol.TField OUTCH1_FIELD_DESC = new org.apache.thrift.protocol.TField("outch1", org.apache.thrift.protocol.TType.STRUCT, (short)1);
     private static final org.apache.thrift.protocol.TField OUCH2_FIELD_DESC = new org.apache.thrift.protocol.TField("ouch2", org.apache.thrift.protocol.TType.STRUCT, (short)2);
     private static final org.apache.thrift.protocol.TField OUCH3_FIELD_DESC = new org.apache.thrift.protocol.TField("ouch3", org.apache.thrift.protocol.TType.STRUCT, (short)3);
+    private static final org.apache.thrift.protocol.TField OUCH4_FIELD_DESC = new org.apache.thrift.protocol.TField("ouch4", org.apache.thrift.protocol.TType.STRUCT, (short)4);
 
     private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
     static {
@@ -79176,12 +79199,14 @@ import org.slf4j.LoggerFactory;
     public AccumuloException outch1; // required
     public AccumuloSecurityException ouch2; // required
     public TableNotFoundException ouch3; // required
+    public MutationsRejectedException ouch4; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     @SuppressWarnings("all") public enum _Fields implements org.apache.thrift.TFieldIdEnum {
       OUTCH1((short)1, "outch1"),
       OUCH2((short)2, "ouch2"),
-      OUCH3((short)3, "ouch3");
+      OUCH3((short)3, "ouch3"),
+      OUCH4((short)4, "ouch4");
 
       private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -79202,6 +79227,8 @@ import org.slf4j.LoggerFactory;
             return OUCH2;
           case 3: // OUCH3
             return OUCH3;
+          case 4: // OUCH4
+            return OUCH4;
           default:
             return null;
         }
@@ -79251,6 +79278,8 @@ import org.slf4j.LoggerFactory;
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
       tmpMap.put(_Fields.OUCH3, new org.apache.thrift.meta_data.FieldMetaData("ouch3", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
+      tmpMap.put(_Fields.OUCH4, new org.apache.thrift.meta_data.FieldMetaData("ouch4", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
       metaDataMap = Collections.unmodifiableMap(tmpMap);
       org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(updateAndFlush_result.class, metaDataMap);
     }
@@ -79261,12 +79290,14 @@ import org.slf4j.LoggerFactory;
     public updateAndFlush_result(
       AccumuloException outch1,
       AccumuloSecurityException ouch2,
-      TableNotFoundException ouch3)
+      TableNotFoundException ouch3,
+      MutationsRejectedException ouch4)
     {
       this();
       this.outch1 = outch1;
       this.ouch2 = ouch2;
       this.ouch3 = ouch3;
+      this.ouch4 = ouch4;
     }
 
     /**
@@ -79282,6 +79313,9 @@ import org.slf4j.LoggerFactory;
       if (other.isSetOuch3()) {
         this.ouch3 = new TableNotFoundException(other.ouch3);
       }
+      if (other.isSetOuch4()) {
+        this.ouch4 = new MutationsRejectedException(other.ouch4);
+      }
     }
 
     public updateAndFlush_result deepCopy() {
@@ -79293,6 +79327,7 @@ import org.slf4j.LoggerFactory;
       this.outch1 = null;
       this.ouch2 = null;
       this.ouch3 = null;
+      this.ouch4 = null;
     }
 
     public AccumuloException getOutch1() {
@@ -79367,6 +79402,30 @@ import org.slf4j.LoggerFactory;
       }
     }
 
+    public MutationsRejectedException getOuch4() {
+      return this.ouch4;
+    }
+
+    public updateAndFlush_result setOuch4(MutationsRejectedException ouch4) {
+      this.ouch4 = ouch4;
+      return this;
+    }
+
+    public void unsetOuch4() {
+      this.ouch4 = null;
+    }
+
+    /** Returns true if field ouch4 is set (has been assigned a value) and false otherwise */
+    public boolean isSetOuch4() {
+      return this.ouch4 != null;
+    }
+
+    public void setOuch4IsSet(boolean value) {
+      if (!value) {
+        this.ouch4 = null;
+      }
+    }
+
     public void setFieldValue(_Fields field, Object value) {
       switch (field) {
       case OUTCH1:
@@ -79393,6 +79452,14 @@ import org.slf4j.LoggerFactory;
         }
         break;
 
+      case OUCH4:
+        if (value == null) {
+          unsetOuch4();
+        } else {
+          setOuch4((MutationsRejectedException)value);
+        }
+        break;
+
       }
     }
 
@@ -79407,6 +79474,9 @@ import org.slf4j.LoggerFactory;
       case OUCH3:
         return getOuch3();
 
+      case OUCH4:
+        return getOuch4();
+
       }
       throw new IllegalStateException();
     }
@@ -79424,6 +79494,8 @@ import org.slf4j.LoggerFactory;
         return isSetOuch2();
       case OUCH3:
         return isSetOuch3();
+      case OUCH4:
+        return isSetOuch4();
       }
       throw new IllegalStateException();
     }
@@ -79468,6 +79540,15 @@ import org.slf4j.LoggerFactory;
           return false;
       }
 
+      boolean this_present_ouch4 = true && this.isSetOuch4();
+      boolean that_present_ouch4 = true && that.isSetOuch4();
+      if (this_present_ouch4 || that_present_ouch4) {
+        if (!(this_present_ouch4 && that_present_ouch4))
+          return false;
+        if (!this.ouch4.equals(that.ouch4))
+          return false;
+      }
+
       return true;
     }
 
@@ -79514,6 +79595,16 @@ import org.slf4j.LoggerFactory;
           return lastComparison;
         }
       }
+      lastComparison = Boolean.valueOf(isSetOuch4()).compareTo(typedOther.isSetOuch4());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetOuch4()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ouch4, typedOther.ouch4);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
       return 0;
     }
 
@@ -79557,6 +79648,14 @@ import org.slf4j.LoggerFactory;
         sb.append(this.ouch3);
       }
       first = false;
+      if (!first) sb.append(", ");
+      sb.append("ouch4:");
+      if (this.ouch4 == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.ouch4);
+      }
+      first = false;
       sb.append(")");
       return sb.toString();
     }
@@ -79627,6 +79726,15 @@ import org.slf4j.LoggerFactory;
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
+            case 4: // OUCH4
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.ouch4 = new MutationsRejectedException();
+                struct.ouch4.read(iprot);
+                struct.setOuch4IsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
             default:
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
           }
@@ -79657,6 +79765,11 @@ import org.slf4j.LoggerFactory;
           struct.ouch3.write(oprot);
           oprot.writeFieldEnd();
         }
+        if (struct.ouch4 != null) {
+          oprot.writeFieldBegin(OUCH4_FIELD_DESC);
+          struct.ouch4.write(oprot);
+          oprot.writeFieldEnd();
+        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
@@ -79684,7 +79797,10 @@ import org.slf4j.LoggerFactory;
         if (struct.isSetOuch3()) {
           optionals.set(2);
         }
-        oprot.writeBitSet(optionals, 3);
+        if (struct.isSetOuch4()) {
+          optionals.set(3);
+        }
+        oprot.writeBitSet(optionals, 4);
         if (struct.isSetOutch1()) {
           struct.outch1.write(oprot);
         }
@@ -79694,12 +79810,15 @@ import org.slf4j.LoggerFactory;
         if (struct.isSetOuch3()) {
           struct.ouch3.write(oprot);
         }
+        if (struct.isSetOuch4()) {
+          struct.ouch4.write(oprot);
+        }
       }
 
       @Override
       public void read(org.apache.thrift.protocol.TProtocol prot, updateAndFlush_result struct) throws org.apache.thrift.TException {
         TTupleProtocol iprot = (TTupleProtocol) prot;
-        BitSet incoming = iprot.readBitSet(3);
+        BitSet incoming = iprot.readBitSet(4);
         if (incoming.get(0)) {
           struct.outch1 = new AccumuloException();
           struct.outch1.read(iprot);
@@ -79715,6 +79834,11 @@ import org.slf4j.LoggerFactory;
           struct.ouch3.read(iprot);
           struct.setOuch3IsSet(true);
         }
+        if (incoming.get(3)) {
+          struct.ouch4 = new MutationsRejectedException();
+          struct.ouch4.read(iprot);
+          struct.setOuch4IsSet(true);
+        }
       }
     }
 
@@ -81506,6 +81630,464 @@ import org.slf4j.LoggerFactory;
 
   }
 
+  public static class update_result implements org.apache.thrift.TBase<update_result, update_result._Fields>, java.io.Serializable, Cloneable   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("update_result");
+
+    private static final org.apache.thrift.protocol.TField OUCH1_FIELD_DESC = new org.apache.thrift.protocol.TField("ouch1", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+    private static final org.apache.thrift.protocol.TField OUCH2_FIELD_DESC = new org.apache.thrift.protocol.TField("ouch2", org.apache.thrift.protocol.TType.STRUCT, (short)2);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new update_resultStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new update_resultTupleSchemeFactory());
+    }
+
+    public UnknownWriter ouch1; // required
+    public MutationsRejectedException ouch2; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    @SuppressWarnings("all") public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      OUCH1((short)1, "ouch1"),
+      OUCH2((short)2, "ouch2");
+
+      private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+      static {
+        for (_Fields field : EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 1: // OUCH1
+            return OUCH1;
+          case 2: // OUCH2
+            return OUCH2;
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final String _fieldName;
+
+      _Fields(short thriftId, String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public String getFieldName() {
+        return _fieldName;
+      }
+    }
+
+    // isset id assignments
+    public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.OUCH1, new org.apache.thrift.meta_data.FieldMetaData("ouch1", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
+      tmpMap.put(_Fields.OUCH2, new org.apache.thrift.meta_data.FieldMetaData("ouch2", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(update_result.class, metaDataMap);
+    }
+
+    public update_result() {
+    }
+
+    public update_result(
+      UnknownWriter ouch1,
+      MutationsRejectedException ouch2)
+    {
+      this();
+      this.ouch1 = ouch1;
+      this.ouch2 = ouch2;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public update_result(update_result other) {
+      if (other.isSetOuch1()) {
+        this.ouch1 = new UnknownWriter(other.ouch1);
+      }
+      if (other.isSetOuch2()) {
+        this.ouch2 = new MutationsRejectedException(other.ouch2);
+      }
+    }
+
+    public update_result deepCopy() {
+      return new update_result(this);
+    }
+
+    @Override
+    public void clear() {
+      this.ouch1 = null;
+      this.ouch2 = null;
+    }
+
+    public UnknownWriter getOuch1() {
+      return this.ouch1;
+    }
+
+    public update_result setOuch1(UnknownWriter ouch1) {
+      this.ouch1 = ouch1;
+      return this;
+    }
+
+    public void unsetOuch1() {
+      this.ouch1 = null;
+    }
+
+    /** Returns true if field ouch1 is set (has been assigned a value) and false otherwise */
+    public boolean isSetOuch1() {
+      return this.ouch1 != null;
+    }
+
+    public void setOuch1IsSet(boolean value) {
+      if (!value) {
+        this.ouch1 = null;
+      }
+    }
+
+    public MutationsRejectedException getOuch2() {
+      return this.ouch2;
+    }
+
+    public update_result setOuch2(MutationsRejectedException ouch2) {
+      this.ouch2 = ouch2;
+      return this;
+    }
+
+    public void unsetOuch2() {
+      this.ouch2 = null;
+    }
+
+    /** Returns true if field ouch2 is set (has been assigned a value) and false otherwise */
+    public boolean isSetOuch2() {
+      return this.ouch2 != null;
+    }
+
+    public void setOuch2IsSet(boolean value) {
+      if (!value) {
+        this.ouch2 = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case OUCH1:
+        if (value == null) {
+          unsetOuch1();
+        } else {
+          setOuch1((UnknownWriter)value);
+        }
+        break;
+
+      case OUCH2:
+        if (value == null) {
+          unsetOuch2();
+        } else {
+          setOuch2((MutationsRejectedException)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case OUCH1:
+        return getOuch1();
+
+      case OUCH2:
+        return getOuch2();
+
+      }
+      throw new IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new IllegalArgumentException();
+      }
+
+      switch (field) {
+      case OUCH1:
+        return isSetOuch1();
+      case OUCH2:
+        return isSetOuch2();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof update_result)
+        return this.equals((update_result)that);
+      return false;
+    }
+
+    public boolean equals(update_result that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_ouch1 = true && this.isSetOuch1();
+      boolean that_present_ouch1 = true && that.isSetOuch1();
+      if (this_present_ouch1 || that_present_ouch1) {
+        if (!(this_present_ouch1 && that_present_ouch1))
+          return false;
+        if (!this.ouch1.equals(that.ouch1))
+          return false;
+      }
+
+      boolean this_present_ouch2 = true && this.isSetOuch2();
+      boolean that_present_ouch2 = true && that.isSetOuch2();
+      if (this_present_ouch2 || that_present_ouch2) {
+        if (!(this_present_ouch2 && that_present_ouch2))
+          return false;
+        if (!this.ouch2.equals(that.ouch2))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      return 0;
+    }
+
+    public int compareTo(update_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+      update_result typedOther = (update_result)other;
+
+      lastComparison = Boolean.valueOf(isSetOuch1()).compareTo(typedOther.isSetOuch1());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetOuch1()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ouch1, typedOther.ouch1);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetOuch2()).compareTo(typedOther.isSetOuch2());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetOuch2()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ouch2, typedOther.ouch2);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+      }
+
+    @Override
+    public String toString() {
+      StringBuilder sb = new StringBuilder("update_result(");
+      boolean first = true;
+
+      sb.append("ouch1:");
+      if (this.ouch1 == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.ouch1);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("ouch2:");
+      if (this.ouch2 == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.ouch2);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+      // check for sub-struct validity
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+      try {
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private static class update_resultStandardSchemeFactory implements SchemeFactory {
+      public update_resultStandardScheme getScheme() {
+        return new update_resultStandardScheme();
+      }
+    }
+
+    private static class update_resultStandardScheme extends StandardScheme<update_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, update_result struct) throws org.apache.thrift.TException {
+        org.apache.thrift.protocol.TField schemeField;
+        iprot.readStructBegin();
+        while (true)
+        {
+          schemeField = iprot.readFieldBegin();
+          if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+            break;
+          }
+          switch (schemeField.id) {
+            case 1: // OUCH1
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.ouch1 = new UnknownWriter();
+                struct.ouch1.read(iprot);
+                struct.setOuch1IsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 2: // OUCH2
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.ouch2 = new MutationsRejectedException();
+                struct.ouch2.read(iprot);
+                struct.setOuch2IsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            default:
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+          }
+          iprot.readFieldEnd();
+        }
+        iprot.readStructEnd();
+
+        // check for required fields of primitive type, which can't be checked in the validate method
+        struct.validate();
+      }
+
+      public void write(org.apache.thrift.protocol.TProtocol oprot, update_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.ouch1 != null) {
+          oprot.writeFieldBegin(OUCH1_FIELD_DESC);
+          struct.ouch1.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        if (struct.ouch2 != null) {
+          oprot.writeFieldBegin(OUCH2_FIELD_DESC);
+          struct.ouch2.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class update_resultTupleSchemeFactory implements SchemeFactory {
+      public update_resultTupleScheme getScheme() {
+        return new update_resultTupleScheme();
+      }
+    }
+
+    private static class update_resultTupleScheme extends TupleScheme<update_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, update_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetOuch1()) {
+          optionals.set(0);
+        }
+        if (struct.isSetOuch2()) {
+          optionals.set(1);
+        }
+        oprot.writeBitSet(optionals, 2);
+        if (struct.isSetOuch1()) {
+          struct.ouch1.write(oprot);
+        }
+        if (struct.isSetOuch2()) {
+          struct.ouch2.write(oprot);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, update_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(2);
+        if (incoming.get(0)) {
+          struct.ouch1 = new UnknownWriter();
+          struct.ouch1.read(iprot);
+          struct.setOuch1IsSet(true);
+        }
+        if (incoming.get(1)) {
+          struct.ouch2 = new MutationsRejectedException();
+          struct.ouch2.read(iprot);
+          struct.setOuch2IsSet(true);
+        }
+      }
+    }
+
+  }
+
   public static class flush_args implements org.apache.thrift.TBase<flush_args, flush_args._Fields>, java.io.Serializable, Cloneable   {
     private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("flush_args");
 
@@ -81873,7 +82455,7 @@ import org.slf4j.LoggerFactory;
     }
 
     public UnknownWriter ouch1; // required
-    public AccumuloSecurityException ouch2; // required
+    public MutationsRejectedException ouch2; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     @SuppressWarnings("all") public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -81953,7 +82535,7 @@ import org.slf4j.LoggerFactory;
 
     public flush_result(
       UnknownWriter ouch1,
-      AccumuloSecurityException ouch2)
+      MutationsRejectedException ouch2)
     {
       this();
       this.ouch1 = ouch1;
@@ -81968,7 +82550,7 @@ import org.slf4j.LoggerFactory;
         this.ouch1 = new UnknownWriter(other.ouch1);
       }
       if (other.isSetOuch2()) {
-        this.ouch2 = new AccumuloSecurityException(other.ouch2);
+        this.ouch2 = new MutationsRejectedException(other.ouch2);
       }
     }
 
@@ -82006,11 +82588,11 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    public AccumuloSecurityException getOuch2() {
+    public MutationsRejectedException getOuch2() {
       return this.ouch2;
     }
 
-    public flush_result setOuch2(AccumuloSecurityException ouch2) {
+    public flush_result setOuch2(MutationsRejectedException ouch2) {
       this.ouch2 = ouch2;
       return this;
     }
@@ -82044,7 +82626,7 @@ import org.slf4j.LoggerFactory;
         if (value == null) {
           unsetOuch2();
         } else {
-          setOuch2((AccumuloSecurityException)value);
+          setOuch2((MutationsRejectedException)value);
         }
         break;
 
@@ -82234,7 +82816,7 @@ import org.slf4j.LoggerFactory;
               break;
             case 2: // OUCH2
               if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-                struct.ouch2 = new AccumuloSecurityException();
+                struct.ouch2 = new MutationsRejectedException();
                 struct.ouch2.read(iprot);
                 struct.setOuch2IsSet(true);
               } else { 
@@ -82309,7 +82891,7 @@ import org.slf4j.LoggerFactory;
           struct.setOuch1IsSet(true);
         }
         if (incoming.get(1)) {
-          struct.ouch2 = new AccumuloSecurityException();
+          struct.ouch2 = new MutationsRejectedException();
           struct.ouch2.read(iprot);
           struct.setOuch2IsSet(true);
         }
@@ -82676,8 +83258,7 @@ import org.slf4j.LoggerFactory;
     private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("closeWriter_result");
 
     private static final org.apache.thrift.protocol.TField OUCH1_FIELD_DESC = new org.apache.thrift.protocol.TField("ouch1", org.apache.thrift.protocol.TType.STRUCT, (short)1);
-    private static final org.apache.thrift.protocol.TField OUTCH1_FIELD_DESC = new org.apache.thrift.protocol.TField("outch1", org.apache.thrift.protocol.TType.STRUCT, (short)2);
-    private static final org.apache.thrift.protocol.TField OUCH2_FIELD_DESC = new org.apache.thrift.protocol.TField("ouch2", org.apache.thrift.protocol.TType.STRUCT, (short)3);
+    private static final org.apache.thrift.protocol.TField OUCH2_FIELD_DESC = new org.apache.thrift.protocol.TField("ouch2", org.apache.thrift.protocol.TType.STRUCT, (short)2);
 
     private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
     static {
@@ -82686,14 +83267,12 @@ import org.slf4j.LoggerFactory;
     }
 
     public UnknownWriter ouch1; // required
-    public AccumuloException outch1; // required
-    public AccumuloSecurityException ouch2; // required
+    public MutationsRejectedException ouch2; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     @SuppressWarnings("all") public enum _Fields implements org.apache.thrift.TFieldIdEnum {
       OUCH1((short)1, "ouch1"),
-      OUTCH1((short)2, "outch1"),
-      OUCH2((short)3, "ouch2");
+      OUCH2((short)2, "ouch2");
 
       private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -82710,9 +83289,7 @@ import org.slf4j.LoggerFactory;
         switch(fieldId) {
           case 1: // OUCH1
             return OUCH1;
-          case 2: // OUTCH1
-            return OUTCH1;
-          case 3: // OUCH2
+          case 2: // OUCH2
             return OUCH2;
           default:
             return null;
@@ -82759,8 +83336,6 @@ import org.slf4j.LoggerFactory;
       Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
       tmpMap.put(_Fields.OUCH1, new org.apache.thrift.meta_data.FieldMetaData("ouch1", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
-      tmpMap.put(_Fields.OUTCH1, new org.apache.thrift.meta_data.FieldMetaData("outch1", org.apache.thrift.TFieldRequirementType.DEFAULT, 
-          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
       tmpMap.put(_Fields.OUCH2, new org.apache.thrift.meta_data.FieldMetaData("ouch2", org.apache.thrift.TFieldRequirementType.DEFAULT, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
       metaDataMap = Collections.unmodifiableMap(tmpMap);
@@ -82772,12 +83347,10 @@ import org.slf4j.LoggerFactory;
 
     public closeWriter_result(
       UnknownWriter ouch1,
-      AccumuloException outch1,
-      AccumuloSecurityException ouch2)
+      MutationsRejectedException ouch2)
     {
       this();
       this.ouch1 = ouch1;
-      this.outch1 = outch1;
       this.ouch2 = ouch2;
     }
 
@@ -82788,11 +83361,8 @@ import org.slf4j.LoggerFactory;
       if (other.isSetOuch1()) {
         this.ouch1 = new UnknownWriter(other.ouch1);
       }
-      if (other.isSetOutch1()) {
-        this.outch1 = new AccumuloException(other.outch1);
-      }
       if (other.isSetOuch2()) {
-        this.ouch2 = new AccumuloSecurityException(other.ouch2);
+        this.ouch2 = new MutationsRejectedException(other.ouch2);
       }
     }
 
@@ -82803,7 +83373,6 @@ import org.slf4j.LoggerFactory;
     @Override
     public void clear() {
       this.ouch1 = null;
-      this.outch1 = null;
       this.ouch2 = null;
     }
 
@@ -82831,35 +83400,11 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    public AccumuloException getOutch1() {
-      return this.outch1;
-    }
-
-    public closeWriter_result setOutch1(AccumuloException outch1) {
-      this.outch1 = outch1;
-      return this;
-    }
-
-    public void unsetOutch1() {
-      this.outch1 = null;
-    }
-
-    /** Returns true if field outch1 is set (has been assigned a value) and false otherwise */
-    public boolean isSetOutch1() {
-      return this.outch1 != null;
-    }
-
-    public void setOutch1IsSet(boolean value) {
-      if (!value) {
-        this.outch1 = null;
-      }
-    }
-
-    public AccumuloSecurityException getOuch2() {
+    public MutationsRejectedException getOuch2() {
       return this.ouch2;
     }
 
-    public closeWriter_result setOuch2(AccumuloSecurityException ouch2) {
+    public closeWriter_result setOuch2(MutationsRejectedException ouch2) {
       this.ouch2 = ouch2;
       return this;
     }
@@ -82889,19 +83434,11 @@ import org.slf4j.LoggerFactory;
         }
         break;
 
-      case OUTCH1:
-        if (value == null) {
-          unsetOutch1();
-        } else {
-          setOutch1((AccumuloException)value);
-        }
-        break;
-
       case OUCH2:
         if (value == null) {
           unsetOuch2();
         } else {
-          setOuch2((AccumuloSecurityException)value);
+          setOuch2((MutationsRejectedException)value);
         }
         break;
 
@@ -82913,9 +83450,6 @@ import org.slf4j.LoggerFactory;
       case OUCH1:
         return getOuch1();
 
-      case OUTCH1:
-        return getOutch1();
-
       case OUCH2:
         return getOuch2();
 
@@ -82932,8 +83466,6 @@ import org.slf4j.LoggerFactory;
       switch (field) {
       case OUCH1:
         return isSetOuch1();
-      case OUTCH1:
-        return isSetOutch1();
       case OUCH2:
         return isSetOuch2();
       }
@@ -82962,15 +83494,6 @@ import org.slf4j.LoggerFactory;
           return false;
       }
 
-      boolean this_present_outch1 = true && this.isSetOutch1();
-      boolean that_present_outch1 = true && that.isSetOutch1();
-      if (this_present_outch1 || that_present_outch1) {
-        if (!(this_present_outch1 && that_present_outch1))
-          return false;
-        if (!this.outch1.equals(that.outch1))
-          return false;
-      }
-
       boolean this_present_ouch2 = true && this.isSetOuch2();
       boolean that_present_ouch2 = true && that.isSetOuch2();
       if (this_present_ouch2 || that_present_ouch2) {
@@ -83006,16 +83529,6 @@ import org.slf4j.LoggerFactory;
           return lastComparison;
         }
       }
-      lastComparison = Boolean.valueOf(isSetOutch1()).compareTo(typedOther.isSetOutch1());
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-      if (isSetOutch1()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.outch1, typedOther.outch1);
-        if (lastComparison != 0) {
-          return lastComparison;
-        }
-      }
       lastComparison = Boolean.valueOf(isSetOuch2()).compareTo(typedOther.isSetOuch2());
       if (lastComparison != 0) {
         return lastComparison;
@@ -83054,14 +83567,6 @@ import org.slf4j.LoggerFactory;
       }
       first = false;
       if (!first) sb.append(", ");
-      sb.append("outch1:");
-      if (this.outch1 == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.outch1);
-      }
-      first = false;
-      if (!first) sb.append(", ");
       sb.append("ouch2:");
       if (this.ouch2 == null) {
         sb.append("null");
@@ -83121,18 +83626,9 @@ import org.slf4j.LoggerFactory;
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
-            case 2: // OUTCH1
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-                struct.outch1 = new AccumuloException();
-                struct.outch1.read(iprot);
-                struct.setOutch1IsSet(true);
-              } else { 
-                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-              }
-              break;
-            case 3: // OUCH2
+            case 2: // OUCH2
               if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-                struct.ouch2 = new AccumuloSecurityException();
+                struct.ouch2 = new MutationsRejectedException();
                 struct.ouch2.read(iprot);
                 struct.setOuch2IsSet(true);
               } else { 
@@ -83159,11 +83655,6 @@ import org.slf4j.LoggerFactory;
           struct.ouch1.write(oprot);
           oprot.writeFieldEnd();
         }
-        if (struct.outch1 != null) {
-          oprot.writeFieldBegin(OUTCH1_FIELD_DESC);
-          struct.outch1.write(oprot);
-          oprot.writeFieldEnd();
-        }
         if (struct.ouch2 != null) {
           oprot.writeFieldBegin(OUCH2_FIELD_DESC);
           struct.ouch2.write(oprot);
@@ -83190,19 +83681,13 @@ import org.slf4j.LoggerFactory;
         if (struct.isSetOuch1()) {
           optionals.set(0);
         }
-        if (struct.isSetOutch1()) {
-          optionals.set(1);
-        }
         if (struct.isSetOuch2()) {
-          optionals.set(2);
+          optionals.set(1);
         }
-        oprot.writeBitSet(optionals, 3);
+        oprot.writeBitSet(optionals, 2);
         if (struct.isSetOuch1()) {
           struct.ouch1.write(oprot);
         }
-        if (struct.isSetOutch1()) {
-          struct.outch1.write(oprot);
-        }
         if (struct.isSetOuch2()) {
           struct.ouch2.write(oprot);
         }
@@ -83211,19 +83696,14 @@ import org.slf4j.LoggerFactory;
       @Override
       public void read(org.apache.thrift.protocol.TProtocol prot, closeWriter_result struct) throws org.apache.thrift.TException {
         TTupleProtocol iprot = (TTupleProtocol) prot;
-        BitSet incoming = iprot.readBitSet(3);
+        BitSet incoming = iprot.readBitSet(2);
         if (incoming.get(0)) {
           struct.ouch1 = new UnknownWriter();
           struct.ouch1.read(iprot);
           struct.setOuch1IsSet(true);
         }
         if (incoming.get(1)) {
-          struct.outch1 = new AccumuloException();
-          struct.outch1.read(iprot);
-          struct.setOutch1IsSet(true);
-        }
-        if (incoming.get(2)) {
-          struct.ouch2 = new AccumuloSecurityException();
+          struct.ouch2 = new MutationsRejectedException();
           struct.ouch2.read(iprot);
           struct.setOuch2IsSet(true);
         }

Added: accumulo/branches/1.5/proxy/src/main/java/org/apache/accumulo/proxy/thrift/MutationsRejectedException.java
URL: http://svn.apache.org/viewvc/accumulo/branches/1.5/proxy/src/main/java/org/apache/accumulo/proxy/thrift/MutationsRejectedException.java?rev=1463980&view=auto
==============================================================================
--- accumulo/branches/1.5/proxy/src/main/java/org/apache/accumulo/proxy/thrift/MutationsRejectedException.java (added)
+++ accumulo/branches/1.5/proxy/src/main/java/org/apache/accumulo/proxy/thrift/MutationsRejectedException.java Wed Apr  3 12:53:47 2013
@@ -0,0 +1,402 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * Autogenerated by Thrift Compiler (0.9.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.accumulo.proxy.thrift;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings("all") public class MutationsRejectedException extends TException implements org.apache.thrift.TBase<MutationsRejectedException, MutationsRejectedException._Fields>, java.io.Serializable, Cloneable {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("MutationsRejectedException");
+
+  private static final org.apache.thrift.protocol.TField MSG_FIELD_DESC = new org.apache.thrift.protocol.TField("msg", org.apache.thrift.protocol.TType.STRING, (short)1);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new MutationsRejectedExceptionStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new MutationsRejectedExceptionTupleSchemeFactory());
+  }
+
+  public String msg; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  @SuppressWarnings("all") public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    MSG((short)1, "msg");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // MSG
+          return MSG;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.MSG, new org.apache.thrift.meta_data.FieldMetaData("msg", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(MutationsRejectedException.class, metaDataMap);
+  }
+
+  public MutationsRejectedException() {
+  }
+
+  public MutationsRejectedException(
+    String msg)
+  {
+    this();
+    this.msg = msg;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public MutationsRejectedException(MutationsRejectedException other) {
+    if (other.isSetMsg()) {
+      this.msg = other.msg;
+    }
+  }
+
+  public MutationsRejectedException deepCopy() {
+    return new MutationsRejectedException(this);
+  }
+
+  @Override
+  public void clear() {
+    this.msg = null;
+  }
+
+  public String getMsg() {
+    return this.msg;
+  }
+
+  public MutationsRejectedException setMsg(String msg) {
+    this.msg = msg;
+    return this;
+  }
+
+  public void unsetMsg() {
+    this.msg = null;
+  }
+
+  /** Returns true if field msg is set (has been assigned a value) and false otherwise */
+  public boolean isSetMsg() {
+    return this.msg != null;
+  }
+
+  public void setMsgIsSet(boolean value) {
+    if (!value) {
+      this.msg = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case MSG:
+      if (value == null) {
+        unsetMsg();
+      } else {
+        setMsg((String)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case MSG:
+      return getMsg();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case MSG:
+      return isSetMsg();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof MutationsRejectedException)
+      return this.equals((MutationsRejectedException)that);
+    return false;
+  }
+
+  public boolean equals(MutationsRejectedException that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_msg = true && this.isSetMsg();
+    boolean that_present_msg = true && that.isSetMsg();
+    if (this_present_msg || that_present_msg) {
+      if (!(this_present_msg && that_present_msg))
+        return false;
+      if (!this.msg.equals(that.msg))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    return 0;
+  }
+
+  public int compareTo(MutationsRejectedException other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+    MutationsRejectedException typedOther = (MutationsRejectedException)other;
+
+    lastComparison = Boolean.valueOf(isSetMsg()).compareTo(typedOther.isSetMsg());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetMsg()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.msg, typedOther.msg);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("MutationsRejectedException(");
+    boolean first = true;
+
+    sb.append("msg:");
+    if (this.msg == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.msg);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class MutationsRejectedExceptionStandardSchemeFactory implements SchemeFactory {
+    public MutationsRejectedExceptionStandardScheme getScheme() {
+      return new MutationsRejectedExceptionStandardScheme();
+    }
+  }
+
+  private static class MutationsRejectedExceptionStandardScheme extends StandardScheme<MutationsRejectedException> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, MutationsRejectedException struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // MSG
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.msg = iprot.readString();
+              struct.setMsgIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, MutationsRejectedException struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.msg != null) {
+        oprot.writeFieldBegin(MSG_FIELD_DESC);
+        oprot.writeString(struct.msg);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class MutationsRejectedExceptionTupleSchemeFactory implements SchemeFactory {
+    public MutationsRejectedExceptionTupleScheme getScheme() {
+      return new MutationsRejectedExceptionTupleScheme();
+    }
+  }
+
+  private static class MutationsRejectedExceptionTupleScheme extends TupleScheme<MutationsRejectedException> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, MutationsRejectedException struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetMsg()) {
+        optionals.set(0);
+      }
+      oprot.writeBitSet(optionals, 1);
+      if (struct.isSetMsg()) {
+        oprot.writeString(struct.msg);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, MutationsRejectedException struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(1);
+      if (incoming.get(0)) {
+        struct.msg = iprot.readString();
+        struct.setMsgIsSet(true);
+      }
+    }
+  }
+
+}
+

Propchange: accumulo/branches/1.5/proxy/src/main/java/org/apache/accumulo/proxy/thrift/MutationsRejectedException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: accumulo/branches/1.5/proxy/src/main/thrift/proxy.thrift
URL: http://svn.apache.org/viewvc/accumulo/branches/1.5/proxy/src/main/thrift/proxy.thrift?rev=1463980&r1=1463979&r2=1463980&view=diff
==============================================================================
--- accumulo/branches/1.5/proxy/src/main/thrift/proxy.thrift (original)
+++ accumulo/branches/1.5/proxy/src/main/thrift/proxy.thrift Wed Apr  3 12:53:47 2013
@@ -224,10 +224,14 @@ exception TableExistsException {
   1:string msg
 }
 
+exception MutationsRejectedException {
+  1:string msg
+}
+
 service AccumuloProxy
 {
   // get an authentication token
-  binary login(1:string principal, 2:map<string, string> loginProperties)                               throws (1:AccumuloSecurityException ouch2);
+  binary login(1:string principal, 2:map<string, string> loginProperties)                              throws (1:AccumuloSecurityException ouch2);
 
   // table operations
   i32 addConstraint (1:binary login, 2:string tableName, 3:string constraintClassName)                 throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3);
@@ -243,7 +247,7 @@ service AccumuloProxy
                    5:map<string,string> propertiesToSet, 6:set<string> propertiesToExclude) 
                                                                                                        throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3, 4:TableExistsException ouch4);
   void compactTable (1:binary login, 2:string tableName, 3:binary startRow, 4:binary endRow, 
-		     5:list<IteratorSetting> iterators, 6:bool flush, 7:bool wait)                     throws (1:AccumuloSecurityException ouch1, 2:TableNotFoundException ouch2, 3:AccumuloException ouch3);
+		     5:list<IteratorSetting> iterators, 6:bool flush, 7:bool wait)                             throws (1:AccumuloSecurityException ouch1, 2:TableNotFoundException ouch2, 3:AccumuloException ouch3);
   void cancelCompaction(1:binary login, 2:string tableName)                                            throws (1:AccumuloSecurityException ouch1, 2:TableNotFoundException ouch2, 3:AccumuloException ouch3);
                                                                                                             
   void createTable (1:binary login, 2:string tableName, 3:bool versioningIter, 4:TimeType type)        throws (1:AccumuloException ouch1, 2:AccumuloSecurityException ouch2, 3:TableExistsException ouch3);
@@ -322,15 +326,15 @@ service AccumuloProxy
   void closeScanner(1:string scanner)                   throws(1:UnknownScanner ouch1);
 
   // writing
-  void updateAndFlush(1:binary login, 2:string tableName, 3:map<binary, list<ColumnUpdate>> cells) throws(1:AccumuloException outch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3);
+  void updateAndFlush(1:binary login, 2:string tableName, 3:map<binary, list<ColumnUpdate>> cells) throws(1:AccumuloException outch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3, 4:MutationsRejectedException ouch4);
   string createWriter(1:binary login, 2:string tableName, 3:WriterOptions opts)                    throws(1:AccumuloException outch1, 2:AccumuloSecurityException ouch2, 3:TableNotFoundException ouch3);
 
   // use the writer
-  oneway void update(1:string writer, 2:map<binary, list<ColumnUpdate>> cells);
-  void flush(1:string writer) throws (1:UnknownWriter ouch1, 2:AccumuloSecurityException ouch2);
-  void closeWriter(1:string writer) throws (1:UnknownWriter ouch1, 2:AccumuloException outch1, 3:AccumuloSecurityException ouch2);
+  void update(1:string writer, 2:map<binary, list<ColumnUpdate>> cells)                            throws (1:UnknownWriter ouch1, 2:MutationsRejectedException ouch2);
+  void flush(1:string writer)                                                                      throws (1:UnknownWriter ouch1, 2:MutationsRejectedException ouch2);
+  void closeWriter(1:string writer)                                                                throws (1:UnknownWriter ouch1, 2:MutationsRejectedException ouch2);
 
   // utilities
   Range getRowRange(1:binary row);
   Key getFollowing(1:Key key, 2:PartialKey part);
-}
+}
\ No newline at end of file

Modified: accumulo/branches/1.5/proxy/src/test/java/org/apache/accumulo/proxy/SimpleTest.java
URL: http://svn.apache.org/viewvc/accumulo/branches/1.5/proxy/src/test/java/org/apache/accumulo/proxy/SimpleTest.java?rev=1463980&r1=1463979&r2=1463980&view=diff
==============================================================================
--- accumulo/branches/1.5/proxy/src/test/java/org/apache/accumulo/proxy/SimpleTest.java (original)
+++ accumulo/branches/1.5/proxy/src/test/java/org/apache/accumulo/proxy/SimpleTest.java Wed Apr  3 12:53:47 2013
@@ -16,29 +16,6 @@
  */
 package org.apache.accumulo.proxy;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.InputStreamReader;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Random;
-import java.util.Set;
-import java.util.TreeMap;
-
 import org.apache.accumulo.core.Constants;
 import org.apache.accumulo.core.conf.DefaultConfiguration;
 import org.apache.accumulo.core.data.Value;
@@ -50,24 +27,7 @@ import org.apache.accumulo.core.iterator
 import org.apache.accumulo.core.util.UtilWaitThread;
 import org.apache.accumulo.examples.simple.constraints.NumericValueConstraint;
 import org.apache.accumulo.proxy.thrift.AccumuloProxy.Client;
-import org.apache.accumulo.proxy.thrift.ActiveCompaction;
-import org.apache.accumulo.proxy.thrift.ActiveScan;
-import org.apache.accumulo.proxy.thrift.ColumnUpdate;
-import org.apache.accumulo.proxy.thrift.CompactionReason;
-import org.apache.accumulo.proxy.thrift.CompactionType;
-import org.apache.accumulo.proxy.thrift.IteratorScope;
-import org.apache.accumulo.proxy.thrift.IteratorSetting;
-import org.apache.accumulo.proxy.thrift.Key;
-import org.apache.accumulo.proxy.thrift.PartialKey;
-import org.apache.accumulo.proxy.thrift.Range;
-import org.apache.accumulo.proxy.thrift.ScanColumn;
-import org.apache.accumulo.proxy.thrift.ScanOptions;
-import org.apache.accumulo.proxy.thrift.ScanResult;
-import org.apache.accumulo.proxy.thrift.ScanState;
-import org.apache.accumulo.proxy.thrift.ScanType;
-import org.apache.accumulo.proxy.thrift.SystemPermission;
-import org.apache.accumulo.proxy.thrift.TablePermission;
-import org.apache.accumulo.proxy.thrift.TimeType;
+import org.apache.accumulo.proxy.thrift.*;
 import org.apache.accumulo.test.MiniAccumuloCluster;
 import org.apache.accumulo.test.functional.SlowIterator;
 import org.apache.commons.io.FileUtils;
@@ -84,13 +44,23 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.InputStreamReader;
+import java.nio.ByteBuffer;
+import java.util.*;
+
+import static org.junit.Assert.*;
+
 /**
  * Call every method on the proxy and try to verify that it works.
  */
 public class SimpleTest {
   
   public static TemporaryFolder folder = new TemporaryFolder();
-  
+
+  public static final String TABLE_TEST = "test";
+
   private static MiniAccumuloCluster accumulo;
   private static String secret = "superSecret";
   private static Random random = new Random();
@@ -145,7 +115,8 @@ public class SimpleTest {
     creds = client.login(principal, properties);
   }
 
-  @Test(timeout = 10000)
+
+    @Test(timeout = 10000)
   public void testInstanceOperations() throws Exception {
     int tservers = 0;
     for (String tserver : client.getTabletServers(creds)) {
@@ -316,26 +287,26 @@ public class SimpleTest {
       assertFalse(client.listTables(creds).contains("fail"));
     }
     // create a table to test table permissions
-    client.createTable(creds, "test", true, TimeType.MILLIS);
+    client.createTable(creds, TABLE_TEST, true, TimeType.MILLIS);
     // denied!
     try {
-      String scanner = client.createScanner(stooge, "test", null);
+      String scanner = client.createScanner(stooge, TABLE_TEST, null);
       client.nextK(scanner, 100);
       fail("stooge should not read table test");
     } catch (TException ex) {
     }
     // grant
-    assertFalse(client.hasTablePermission(creds, "stooge", "test", TablePermission.READ));
-    client.grantTablePermission(creds, "stooge", "test", TablePermission.READ);
-    assertTrue(client.hasTablePermission(creds, "stooge", "test", TablePermission.READ));
-    String scanner = client.createScanner(stooge, "test", null);
+    assertFalse(client.hasTablePermission(creds, "stooge", TABLE_TEST, TablePermission.READ));
+    client.grantTablePermission(creds, "stooge", TABLE_TEST, TablePermission.READ);
+    assertTrue(client.hasTablePermission(creds, "stooge", TABLE_TEST, TablePermission.READ));
+    String scanner = client.createScanner(stooge, TABLE_TEST, null);
     client.nextK(scanner, 10);
     client.closeScanner(scanner);
     // revoke
-    client.revokeTablePermission(creds, "stooge", "test", TablePermission.READ);
-    assertFalse(client.hasTablePermission(creds, "stooge", "test", TablePermission.READ));
+    client.revokeTablePermission(creds, "stooge", TABLE_TEST, TablePermission.READ);
+    assertFalse(client.hasTablePermission(creds, "stooge", TABLE_TEST, TablePermission.READ));
     try {
-      scanner = client.createScanner(stooge, "test", null);
+      scanner = client.createScanner(stooge, TABLE_TEST, null);
       client.nextK(scanner, 100);
       fail("stooge should not read table test");
     } catch (TException ex) {
@@ -347,71 +318,123 @@ public class SimpleTest {
     assertEquals(1, users.size());
     
   }
+
+  @Test
+  public void testBatchWriter() throws Exception {
+      if (client.tableExists(creds, TABLE_TEST))
+          client.deleteTable(creds, TABLE_TEST);
+
+      client.createTable(creds, TABLE_TEST, true, TimeType.MILLIS);
+      client.addConstraint(creds, TABLE_TEST, NumericValueConstraint.class.getName());
+
+      WriterOptions writerOptions = new WriterOptions();
+      writerOptions.setLatencyMs(10000);
+      writerOptions.setMaxMemory(2);
+      writerOptions.setThreads(1);
+      writerOptions.setTimeoutMs(100000);
+
+      String batchWriter = client.createWriter(creds, TABLE_TEST, writerOptions);
+      try {
+          client.update(batchWriter, mutation("row1", "cf", "cq", "x"));
+          client.update(batchWriter, mutation("row1", "cf", "cq", "x"));
+          fail("constraint did not fire");
+      } catch (MutationsRejectedException ex) {}
+      try {
+          client.flush(batchWriter);
+          fail("constraint did not fire");
+      } catch (MutationsRejectedException ex) {}
+      try {
+          client.closeWriter(batchWriter);
+          fail("constraint did not fire");
+      } catch(MutationsRejectedException e) {}
+
+      client.removeConstraint(creds, TABLE_TEST, 1);
+
+      writerOptions = new WriterOptions();
+      writerOptions.setLatencyMs(10000);
+      writerOptions.setMaxMemory(3000);
+      writerOptions.setThreads(1);
+      writerOptions.setTimeoutMs(100000);
+
+      batchWriter = client.createWriter(creds, TABLE_TEST, writerOptions);
+
+      client.update(batchWriter, mutation("row1", "cf", "cq", "x"));
+      client.flush(batchWriter);
+      client.closeWriter(batchWriter);
+
+      String scanner = client.createScanner(creds, TABLE_TEST, null);
+      ScanResult more = client.nextK(scanner, 2);
+      assertEquals(1, more.getResults().size());
+      client.closeScanner(scanner);
+
+      client.deleteTable(creds, TABLE_TEST);
+  }
   
   @Test
   public void testTableOperations() throws Exception {
-    if (client.tableExists(creds, "test"))
-      client.deleteTable(creds, "test");
-    client.createTable(creds, "test", true, TimeType.MILLIS);
+    if (client.tableExists(creds, TABLE_TEST))
+      client.deleteTable(creds, TABLE_TEST);
+    client.createTable(creds, TABLE_TEST, true, TimeType.MILLIS);
     // constraints
-    client.addConstraint(creds, "test", NumericValueConstraint.class.getName());
-    client.updateAndFlush(creds, "test", mutation("row1", "cf", "cq", "123"));
+    client.addConstraint(creds, TABLE_TEST, NumericValueConstraint.class.getName());
+    client.updateAndFlush(creds, TABLE_TEST, mutation("row1", "cf", "cq", "123"));
+
     try {
-      client.updateAndFlush(creds, "test", mutation("row1", "cf", "cq", "x"));
+      client.updateAndFlush(creds, TABLE_TEST, mutation("row1", "cf", "cq", "x"));
       fail("constraint did not fire");
-    } catch (Exception ex) {
-    }
-    client.removeConstraint(creds, "test", 1);
-    client.updateAndFlush(creds, "test", mutation("row1", "cf", "cq", "x"));
-    String scanner = client.createScanner(creds, "test", null);
+    } catch (MutationsRejectedException ex) {}
+
+    client.removeConstraint(creds, TABLE_TEST, 1);
+    client.updateAndFlush(creds, TABLE_TEST, mutation("row1", "cf", "cq", "x"));
+    String scanner = client.createScanner(creds, TABLE_TEST, null);
     ScanResult more = client.nextK(scanner, 2);
     client.closeScanner(scanner);
     assertFalse(more.isMore());
     assertEquals(1, more.getResults().size());
     assertEquals(s2bb("x"), more.getResults().get(0).value);
     // splits, merge
-    client.addSplits(creds, "test", new HashSet<ByteBuffer>(Arrays.asList(s2bb("a"), s2bb("m"), s2bb("z"))));
-    List<ByteBuffer> splits = client.listSplits(creds, "test", 1);
+    client.addSplits(creds, TABLE_TEST, new HashSet<ByteBuffer>(Arrays.asList(s2bb("a"), s2bb("m"), s2bb("z"))));
+    List<ByteBuffer> splits = client.listSplits(creds, TABLE_TEST, 1);
     assertEquals(Arrays.asList(s2bb("m")), splits);
-    client.mergeTablets(creds, "test", null, s2bb("m"));
-    splits = client.listSplits(creds, "test", 10);
+    client.mergeTablets(creds, TABLE_TEST, null, s2bb("m"));
+    splits = client.listSplits(creds, TABLE_TEST, 10);
     assertEquals(Arrays.asList(s2bb("m"), s2bb("z")), splits);
-    client.mergeTablets(creds, "test", null, null);
-    splits = client.listSplits(creds, "test", 10);
+    client.mergeTablets(creds, TABLE_TEST, null, null);
+    splits = client.listSplits(creds, TABLE_TEST, 10);
     List<ByteBuffer> empty = Collections.emptyList();
     assertEquals(empty, splits);
     // iterators
-    client.deleteTable(creds, "test");
-    client.createTable(creds, "test", true, TimeType.MILLIS);
+    client.deleteTable(creds, TABLE_TEST);
+    client.createTable(creds, TABLE_TEST, true, TimeType.MILLIS);
     HashMap<String, String> options = new HashMap<String, String>();
     options.put("type", "STRING");
     options.put("columns", "cf");
-    IteratorSetting setting = new IteratorSetting(10, "test", SummingCombiner.class.getName(), options);
-    client.attachIterator(creds, "test", setting, EnumSet.allOf(IteratorScope.class));
+    IteratorSetting setting = new IteratorSetting(10, TABLE_TEST, SummingCombiner.class.getName(), options);
+    client.attachIterator(creds, TABLE_TEST, setting, EnumSet.allOf(IteratorScope.class));
     for (int i = 0; i < 10; i++) {
-      client.updateAndFlush(creds, "test", mutation("row1", "cf", "cq", "1"));
+      client.updateAndFlush(creds, TABLE_TEST, mutation("row1", "cf", "cq", "1"));
     }
-    scanner = client.createScanner(creds, "test", null);
+    scanner = client.createScanner(creds, TABLE_TEST, null);
     more = client.nextK(scanner, 2);
     client.closeScanner(scanner);
     assertEquals("10", new String(more.getResults().get(0).getValue()));
     try {
-      client.checkIteratorConflicts(creds, "test", setting, EnumSet.allOf(IteratorScope.class));
+      client.checkIteratorConflicts(creds, TABLE_TEST, setting, EnumSet.allOf(IteratorScope.class));
       fail("checkIteratorConflicts did not throw and exception");
     } catch (Exception ex) {
     }
-    client.deleteRows(creds, "test", null, null);
-    client.removeIterator(creds, "test", "test", EnumSet.allOf(IteratorScope.class));
+    client.deleteRows(creds, TABLE_TEST, null, null);
+    client.removeIterator(creds, TABLE_TEST, "test", EnumSet.allOf(IteratorScope.class));
     for (int i = 0; i < 10; i++) {
-      client.updateAndFlush(creds, "test", mutation("row"+i, "cf", "cq", ""+i));
-      client.flushTable(creds, "test", null, null, true);
+      client.updateAndFlush(creds, TABLE_TEST, mutation("row"+i, "cf", "cq", ""+i));
+      client.flushTable(creds, TABLE_TEST, null, null, true);
     }
-    scanner = client.createScanner(creds, "test", null);
+    scanner = client.createScanner(creds, TABLE_TEST, null);
     more = client.nextK(scanner, 100);
     client.closeScanner(scanner);
     assertEquals(10, more.getResults().size());
     // clone
-    client.cloneTable(creds, "test", "test2", true, null, null);
+    client.cloneTable(creds, TABLE_TEST, "test2", true, null, null);
     scanner = client.createScanner(creds, "test2", null);
     more = client.nextK(scanner, 100);
     client.closeScanner(scanner);
@@ -419,18 +442,18 @@ public class SimpleTest {
     client.deleteTable(creds, "test2");
     
     // don't know how to test this, call it just for fun
-    client.clearLocatorCache(creds, "test");
+    client.clearLocatorCache(creds, TABLE_TEST);
     
     // compact
-    assertTrue(countFiles("test") > 1);
-    client.compactTable(creds, "test", null, null, null, true, true);
-    assertEquals(1, countFiles("test"));
+    assertTrue(countFiles(TABLE_TEST) > 1);
+    client.compactTable(creds, TABLE_TEST, null, null, null, true, true);
+    assertEquals(1, countFiles(TABLE_TEST));
     
     // export/import
     String dir = folder.getRoot() + "/test";
     String destDir = folder.getRoot() + "/test_dest";
-    client.offlineTable(creds, "test");
-    client.exportTable(creds, "test", dir);
+    client.offlineTable(creds, TABLE_TEST);
+    client.exportTable(creds, TABLE_TEST, dir);
     // copy files to a new location
     FileSystem fs = FileSystem.get(new Configuration());
     FSDataInputStream is = fs.open(new Path(dir + "/distcp.txt"));
@@ -442,7 +465,7 @@ public class SimpleTest {
       Path srcPath = new Path(line);
       FileUtils.copyFile(new File(srcPath.toUri().getPath()), new File(destDir, srcPath.getName()));
     }
-    client.deleteTable(creds, "test");
+    client.deleteTable(creds, TABLE_TEST);
     client.importTable(creds, "testify", destDir);
     scanner = client.createScanner(creds, "testify", null);
     more = client.nextK(scanner, 100);



Mime
View raw message