You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by kt...@apache.org on 2013/04/23 15:46:53 UTC

svn commit: r1470955 - in /accumulo/branches/1.5: proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java proxy/src/test/java/org/apache/accumulo/proxy/SimpleTest.java test/src/main/java/org/apache/accumulo/test/MiniAccumuloCluster.java

Author: kturner
Date: Tue Apr 23 13:46:52 2013
New Revision: 1470955

URL: http://svn.apache.org/r1470955
Log:
ACCUMULO-1237 Applying patch from Corey Nolet that minimizes diffs between the proxy in 1.4 and 1.5.

Modified:
    accumulo/branches/1.5/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
    accumulo/branches/1.5/proxy/src/test/java/org/apache/accumulo/proxy/SimpleTest.java
    accumulo/branches/1.5/test/src/main/java/org/apache/accumulo/test/MiniAccumuloCluster.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=1470955&r1=1470954&r2=1470955&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 Tue Apr 23 13:46:52 2013
@@ -25,7 +25,6 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Properties;
 import java.util.Set;
 import java.util.SortedSet;
@@ -97,10 +96,16 @@ import com.google.common.cache.CacheBuil
 import com.google.common.cache.RemovalListener;
 import com.google.common.cache.RemovalNotification;
 
+/**
+ * Proxy Server exposing the Accumulo API via Thrift..
+ * 
+ * @since 1.5
+ */
 public class ProxyServer implements AccumuloProxy.Iface {
   
   public static final Logger logger = Logger.getLogger(ProxyServer.class);
   protected Instance instance;
+  
   protected Class<? extends AuthenticationToken> tokenClass;
   
   static protected class ScannerPlusIterator {
@@ -176,54 +181,130 @@ public class ProxyServer implements Accu
     return connector;
   }
   
-  private TException translateException(Exception ex) {
+  private void handleExceptionTNF(Exception ex) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       throw ex;
-    } catch (MutationsRejectedException e) {
-      logger.debug(e, e);
-      return new org.apache.accumulo.proxy.thrift.MutationsRejectedException(e.toString());
     } catch (AccumuloException e) {
       if (e.getCause() instanceof ThriftTableOperationException) {
         ThriftTableOperationException ttoe = (ThriftTableOperationException) e.getCause();
         if (ttoe.type == TableOperationExceptionType.NOTFOUND) {
-          return new org.apache.accumulo.proxy.thrift.TableNotFoundException(e.toString());
+          throw new org.apache.accumulo.proxy.thrift.TableNotFoundException(e.toString());
         }
       }
-      logger.debug(e, e);
-      return new org.apache.accumulo.proxy.thrift.AccumuloException(e.toString());
+      throw new org.apache.accumulo.proxy.thrift.AccumuloException(e.toString());
+    } catch (AccumuloSecurityException e) {
+      if (e.getSecurityErrorCode().equals(SecurityErrorCode.TABLE_DOESNT_EXIST))
+        throw new org.apache.accumulo.proxy.thrift.TableNotFoundException(e.toString());
+      throw new org.apache.accumulo.proxy.thrift.AccumuloSecurityException(e.toString());
+    } catch (TableNotFoundException e) {
+      throw new org.apache.accumulo.proxy.thrift.TableNotFoundException(ex.toString());
+    } catch (Exception e) {
+      throw new org.apache.accumulo.proxy.thrift.AccumuloException(e.toString());
+    }
+  }
+  
+  private void handleExceptionTNFNoSecurity(Exception ex) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
+    try {
+      throw ex;
+    } catch (AccumuloException e) {
+      if (e.getCause() instanceof ThriftTableOperationException) {
+        ThriftTableOperationException ttoe = (ThriftTableOperationException) e.getCause();
+        if (ttoe.type == TableOperationExceptionType.NOTFOUND)
+          throw new org.apache.accumulo.proxy.thrift.TableNotFoundException(e.toString());
+      }
+      throw new org.apache.accumulo.proxy.thrift.AccumuloException(e.toString());
     } catch (AccumuloSecurityException e) {
-      logger.debug(e, e);
       if (e.getSecurityErrorCode().equals(SecurityErrorCode.TABLE_DOESNT_EXIST))
-        return new org.apache.accumulo.proxy.thrift.TableNotFoundException(e.toString());
-      return new org.apache.accumulo.proxy.thrift.AccumuloSecurityException(e.toString());
+        throw new org.apache.accumulo.proxy.thrift.TableNotFoundException(e.toString());
+      throw new org.apache.accumulo.proxy.thrift.AccumuloException(e.toString());
     } catch (TableNotFoundException e) {
-      logger.debug(e, e);
-      return new org.apache.accumulo.proxy.thrift.TableNotFoundException(e.toString());
+      throw new org.apache.accumulo.proxy.thrift.TableNotFoundException(ex.toString());
+    } catch (Exception e) {
+      throw new org.apache.accumulo.proxy.thrift.AccumuloException(e.toString());
+    }
+  }
+  
+  private void handleExceptionTEE(Exception ex) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException,
+      org.apache.accumulo.proxy.thrift.TableExistsException, TException {
+    try {
+      throw ex;
+    } catch (AccumuloException e) {
+      if (e.getCause() instanceof ThriftTableOperationException) {
+        ThriftTableOperationException ttoe = (ThriftTableOperationException) e.getCause();
+        if (ttoe.type == TableOperationExceptionType.NOTFOUND)
+          throw new org.apache.accumulo.proxy.thrift.TableNotFoundException(e.toString());
+      }
+      throw new org.apache.accumulo.proxy.thrift.AccumuloException(e.toString());
+    } catch (AccumuloSecurityException e) {
+      if (e.getSecurityErrorCode().equals(SecurityErrorCode.TABLE_DOESNT_EXIST))
+        throw new org.apache.accumulo.proxy.thrift.TableNotFoundException(e.toString());
+      throw new org.apache.accumulo.proxy.thrift.AccumuloSecurityException(e.toString());
+    } catch (TableNotFoundException e) {
+      throw new org.apache.accumulo.proxy.thrift.TableNotFoundException(ex.toString());
     } catch (TableExistsException e) {
-      logger.debug(e, e);
-      return new org.apache.accumulo.proxy.thrift.TableExistsException(e.toString());
-    } catch (RuntimeException e) {
-      if (e.getCause() != null) {
-        if (e.getCause() instanceof Exception)
-          return translateException((Exception) e.getCause());
+      throw new org.apache.accumulo.proxy.thrift.TableExistsException(e.toString());
+    } catch (Exception e) {
+      throw new org.apache.accumulo.proxy.thrift.AccumuloException(e.toString());
+    }
+  }
+  
+  private void handleExceptionMRE(Exception ex) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException,
+      org.apache.accumulo.proxy.thrift.MutationsRejectedException, TException {
+    try {
+      throw ex;
+    } catch (MutationsRejectedException e) {
+      throw new org.apache.accumulo.proxy.thrift.MutationsRejectedException(ex.toString());
+    } catch (AccumuloException e) {
+      if (e.getCause() instanceof ThriftTableOperationException) {
+        ThriftTableOperationException ttoe = (ThriftTableOperationException) e.getCause();
+        if (ttoe.type == TableOperationExceptionType.NOTFOUND)
+          throw new org.apache.accumulo.proxy.thrift.TableNotFoundException(e.toString());
       }
-      return new TException(e);
+      throw new org.apache.accumulo.proxy.thrift.AccumuloException(e.toString());
+    } catch (AccumuloSecurityException e) {
+      if (e.getSecurityErrorCode().equals(SecurityErrorCode.TABLE_DOESNT_EXIST))
+        throw new org.apache.accumulo.proxy.thrift.TableNotFoundException(e.toString());
+      throw new org.apache.accumulo.proxy.thrift.AccumuloSecurityException(e.toString());
+    } catch (TableNotFoundException e) {
+      throw new org.apache.accumulo.proxy.thrift.TableNotFoundException(ex.toString());
+    } catch (Exception e) {
+      throw new org.apache.accumulo.proxy.thrift.AccumuloException(e.toString());
+    }
+  }
+  
+  private void handleException(Exception ex) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
+    try {
+      throw ex;
+    } catch (AccumuloException e) {
+      throw new org.apache.accumulo.proxy.thrift.AccumuloException(e.toString());
+    } catch (AccumuloSecurityException e) {
+      throw new org.apache.accumulo.proxy.thrift.AccumuloSecurityException(e.toString());
     } catch (Exception e) {
-      return new TException(ex);
+      throw new org.apache.accumulo.proxy.thrift.AccumuloException(e.toString());
     }
   }
   
   @Override
-  public int addConstraint(ByteBuffer login, String tableName, String constraintClassName) throws TException {
+  public int addConstraint(ByteBuffer login, String tableName, String constraintClassName) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
+    
     try {
       return getConnector(login).tableOperations().addConstraint(tableName, constraintClassName);
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
+      return -1;
     }
   }
   
   @Override
-  public void addSplits(ByteBuffer login, String tableName, Set<ByteBuffer> splits) throws TException {
+  public void addSplits(ByteBuffer login, String tableName, Set<ByteBuffer> splits) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
+    
     try {
       SortedSet<Text> sorted = new TreeSet<Text>();
       for (ByteBuffer split : splits) {
@@ -231,36 +312,42 @@ public class ProxyServer implements Accu
       }
       getConnector(login).tableOperations().addSplits(tableName, sorted);
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
   }
   
   @Override
-  public void clearLocatorCache(ByteBuffer login, String tableName) throws TException {
+  public void clearLocatorCache(ByteBuffer login, String tableName) throws org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       getConnector(login).tableOperations().clearLocatorCache(tableName);
+    } catch (TableNotFoundException e) {
+      throw new org.apache.accumulo.proxy.thrift.TableNotFoundException(e.toString());
     } catch (Exception e) {
-      throw translateException(e);
+      throw new TException(e.toString());
     }
   }
   
   @Override
-  public void compactTable(ByteBuffer login, String tableName, ByteBuffer start, ByteBuffer end,
-      List<org.apache.accumulo.proxy.thrift.IteratorSetting> iterators, boolean flush, boolean wait) throws TException {
+  public void compactTable(ByteBuffer login, String tableName, ByteBuffer startRow, ByteBuffer endRow,
+      List<org.apache.accumulo.proxy.thrift.IteratorSetting> iterators, boolean flush, boolean wait)
+      throws org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException,
+      org.apache.accumulo.proxy.thrift.AccumuloException, TException {
     try {
-      getConnector(login).tableOperations().compact(tableName, ByteBufferUtil.toText(start), ByteBufferUtil.toText(end), getIteratorSettings(iterators), flush,
-          wait);
+      getConnector(login).tableOperations().compact(tableName, ByteBufferUtil.toText(startRow), ByteBufferUtil.toText(endRow), getIteratorSettings(iterators),
+          flush, wait);
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
   }
   
   @Override
-  public void cancelCompaction(ByteBuffer login, String tableName) throws TException {
+  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 {
+    
     try {
       getConnector(login).tableOperations().cancelCompaction(tableName);
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
   }
   
@@ -275,32 +362,38 @@ public class ProxyServer implements Accu
   }
   
   @Override
-  public void createTable(ByteBuffer login, String tableName, boolean versioningIter, org.apache.accumulo.proxy.thrift.TimeType timeType) throws TException {
+  public void createTable(ByteBuffer login, String tableName, boolean versioningIter, org.apache.accumulo.proxy.thrift.TimeType type)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.TableExistsException, TException {
     try {
-      if (timeType == null)
-        timeType = org.apache.accumulo.proxy.thrift.TimeType.MILLIS;
+      if (type == null)
+        type = org.apache.accumulo.proxy.thrift.TimeType.MILLIS;
       
-      getConnector(login).tableOperations().create(tableName, versioningIter, TimeType.valueOf(timeType.toString()));
+      getConnector(login).tableOperations().create(tableName, versioningIter, TimeType.valueOf(type.toString()));
+    } catch (TableExistsException e) {
+      throw new org.apache.accumulo.proxy.thrift.TableExistsException(e.toString());
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
     }
   }
   
   @Override
-  public void deleteTable(ByteBuffer login, String tableName) throws TException {
+  public void deleteTable(ByteBuffer login, String tableName) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       getConnector(login).tableOperations().delete(tableName);
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
   }
   
   @Override
-  public void deleteRows(ByteBuffer login, String tableName, ByteBuffer start, ByteBuffer end) throws TException {
+  public void deleteRows(ByteBuffer login, String tableName, ByteBuffer startRow, ByteBuffer endRow) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
-      getConnector(login).tableOperations().deleteRows(tableName, ByteBufferUtil.toText(start), ByteBufferUtil.toText(end));
+      getConnector(login).tableOperations().deleteRows(tableName, ByteBufferUtil.toText(startRow), ByteBufferUtil.toText(endRow));
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
   }
   
@@ -309,21 +402,24 @@ public class ProxyServer implements Accu
     try {
       return getConnector(login).tableOperations().exists(tableName);
     } catch (Exception e) {
-      throw translateException(e);
+      throw new TException(e);
     }
   }
   
   @Override
-  public void flushTable(ByteBuffer login, String tableName, ByteBuffer startRow, ByteBuffer endRow, boolean wait) throws TException {
+  public void flushTable(ByteBuffer login, String tableName, ByteBuffer startRow, ByteBuffer endRow, boolean wait)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       getConnector(login).tableOperations().flush(tableName, ByteBufferUtil.toText(startRow), ByteBufferUtil.toText(endRow), wait);
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
   }
   
   @Override
-  public Map<String,Set<String>> getLocalityGroups(ByteBuffer login, String tableName) throws TException {
+  public Map<String,Set<String>> getLocalityGroups(ByteBuffer login, String tableName) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       Map<String,Set<Text>> groups = getConnector(login).tableOperations().getLocalityGroups(tableName);
       Map<String,Set<String>> ret = new HashMap<String,Set<String>>();
@@ -335,13 +431,15 @@ public class ProxyServer implements Accu
       }
       return ret;
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNFNoSecurity(e);
+      return null;
     }
   }
   
   @Override
-  public ByteBuffer getMaxRow(ByteBuffer login, String tableName, Set<ByteBuffer> auths, ByteBuffer startRow, boolean startinclusive, ByteBuffer endRow,
-      boolean endinclusive) throws TException {
+  public ByteBuffer getMaxRow(ByteBuffer login, String tableName, Set<ByteBuffer> auths, ByteBuffer startRow, boolean startInclusive, ByteBuffer endRow,
+      boolean endInclusive) throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       Connector connector = getConnector(login);
       Text startText = ByteBufferUtil.toText(startRow);
@@ -352,15 +450,17 @@ public class ProxyServer implements Accu
       } else {
         auth = connector.securityOperations().getUserAuthorizations(connector.whoami());
       }
-      Text max = connector.tableOperations().getMaxRow(tableName, auth, startText, startinclusive, endText, endinclusive);
+      Text max = connector.tableOperations().getMaxRow(tableName, auth, startText, startInclusive, endText, endInclusive);
       return TextUtil.getByteBuffer(max);
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
+      return null;
     }
   }
   
   @Override
-  public Map<String,String> getTableProperties(ByteBuffer login, String tableName) throws TException {
+  public Map<String,String> getTableProperties(ByteBuffer login, String tableName) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       Map<String,String> ret = new HashMap<String,String>();
       
@@ -369,12 +469,14 @@ public class ProxyServer implements Accu
       }
       return ret;
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNFNoSecurity(e);
+      return null;
     }
   }
   
   @Override
-  public List<ByteBuffer> listSplits(ByteBuffer login, String tableName, int maxSplits) throws TException {
+  public List<ByteBuffer> listSplits(ByteBuffer login, String tableName, int maxSplits) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       Collection<Text> splits = getConnector(login).tableOperations().listSplits(tableName, maxSplits);
       List<ByteBuffer> ret = new ArrayList<ByteBuffer>();
@@ -383,7 +485,8 @@ public class ProxyServer implements Accu
       }
       return ret;
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
+      return null;
     }
   }
   
@@ -392,75 +495,89 @@ public class ProxyServer implements Accu
     try {
       return getConnector(login).tableOperations().list();
     } catch (Exception e) {
-      throw translateException(e);
+      throw new TException(e);
     }
   }
   
   @Override
-  public Map<String,Integer> listConstraints(ByteBuffer login, String arg2) throws TException {
+  public Map<String,Integer> listConstraints(ByteBuffer login, String tableName) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
+    
     try {
-      return getConnector(login).tableOperations().listConstraints(arg2);
+      return getConnector(login).tableOperations().listConstraints(tableName);
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
+      return null;
     }
   }
   
   @Override
-  public void mergeTablets(ByteBuffer login, String tableName, ByteBuffer start, ByteBuffer end) throws TException {
+  public void mergeTablets(ByteBuffer login, String tableName, ByteBuffer startRow, ByteBuffer endRow)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
-      getConnector(login).tableOperations().merge(tableName, ByteBufferUtil.toText(start), ByteBufferUtil.toText(end));
+      getConnector(login).tableOperations().merge(tableName, ByteBufferUtil.toText(startRow), ByteBufferUtil.toText(endRow));
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
   }
   
   @Override
-  public void offlineTable(ByteBuffer login, String tableName) throws TException {
+  public void offlineTable(ByteBuffer login, String tableName) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       getConnector(login).tableOperations().offline(tableName);
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
   }
   
   @Override
-  public void onlineTable(ByteBuffer login, String tableName) throws TException {
+  public void onlineTable(ByteBuffer login, String tableName) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       getConnector(login).tableOperations().online(tableName);
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
   }
   
   @Override
-  public void removeConstraint(ByteBuffer login, String tableName, int number) throws TException {
+  public void removeConstraint(ByteBuffer login, String tableName, int constraint) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
+    
     try {
-      getConnector(login).tableOperations().removeConstraint(tableName, number);
+      getConnector(login).tableOperations().removeConstraint(tableName, constraint);
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
   }
   
   @Override
-  public void removeTableProperty(ByteBuffer login, String tableName, String property) throws TException {
+  public void removeTableProperty(ByteBuffer login, String tableName, String property) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       getConnector(login).tableOperations().removeProperty(tableName, property);
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
   }
   
   @Override
-  public void renameTable(ByteBuffer login, String oldTableName, String newTableName) throws TException {
+  public void renameTable(ByteBuffer login, String oldTableName, String newTableName) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException,
+      org.apache.accumulo.proxy.thrift.TableExistsException, TException {
     try {
       getConnector(login).tableOperations().rename(oldTableName, newTableName);
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTEE(e);
     }
   }
   
   @Override
-  public void setLocalityGroups(ByteBuffer login, String tableName, Map<String,Set<String>> groupStrings) throws TException {
+  public void setLocalityGroups(ByteBuffer login, String tableName, Map<String,Set<String>> groupStrings)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       Map<String,Set<Text>> groups = new HashMap<String,Set<Text>>();
       for (String key : groupStrings.keySet()) {
@@ -471,16 +588,17 @@ public class ProxyServer implements Accu
       }
       getConnector(login).tableOperations().setLocalityGroups(tableName, groups);
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
   }
   
   @Override
-  public void setTableProperty(ByteBuffer login, String tableName, String property, String value) throws TException {
+  public void setTableProperty(ByteBuffer login, String tableName, String property, String value) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       getConnector(login).tableOperations().setProperty(tableName, property, value);
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
   }
   
@@ -489,25 +607,29 @@ public class ProxyServer implements Accu
     try {
       return getConnector(login).tableOperations().tableIdMap();
     } catch (Exception e) {
-      throw translateException(e);
+      throw new TException(e);
     }
   }
   
   @Override
-  public Map<String,String> getSiteConfiguration(ByteBuffer login) throws TException {
+  public Map<String,String> getSiteConfiguration(ByteBuffer login) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
       return getConnector(login).instanceOperations().getSiteConfiguration();
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
+      return null;
     }
   }
   
   @Override
-  public Map<String,String> getSystemConfiguration(ByteBuffer login) throws TException {
+  public Map<String,String> getSystemConfiguration(ByteBuffer login) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
       return getConnector(login).instanceOperations().getSystemConfiguration();
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
+      return null;
     }
   }
   
@@ -516,12 +638,13 @@ public class ProxyServer implements Accu
     try {
       return getConnector(login).instanceOperations().getTabletServers();
     } catch (Exception e) {
-      throw translateException(e);
+      throw new TException(e);
     }
   }
   
   @Override
-  public List<org.apache.accumulo.proxy.thrift.ActiveScan> getActiveScans(ByteBuffer login, String tserver) throws TException {
+  public List<org.apache.accumulo.proxy.thrift.ActiveScan> getActiveScans(ByteBuffer login, String tserver)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     List<org.apache.accumulo.proxy.thrift.ActiveScan> result = new ArrayList<org.apache.accumulo.proxy.thrift.ActiveScan>();
     try {
       List<ActiveScan> activeScans = getConnector(login).instanceOperations().getActiveScans(tserver);
@@ -569,12 +692,15 @@ public class ProxyServer implements Accu
       }
       return result;
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
+      return null;
     }
   }
   
   @Override
-  public List<org.apache.accumulo.proxy.thrift.ActiveCompaction> getActiveCompactions(ByteBuffer login, String tserver) throws TException {
+  public List<org.apache.accumulo.proxy.thrift.ActiveCompaction> getActiveCompactions(ByteBuffer login, String tserver)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
+    
     try {
       List<org.apache.accumulo.proxy.thrift.ActiveCompaction> result = new ArrayList<org.apache.accumulo.proxy.thrift.ActiveCompaction>();
       List<ActiveCompaction> active = getConnector(login).instanceOperations().getActiveCompactions(tserver);
@@ -607,48 +733,56 @@ public class ProxyServer implements Accu
       }
       return result;
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
+      return null;
     }
   }
   
   @Override
-  public void removeProperty(ByteBuffer login, String property) throws TException {
+  public void removeProperty(ByteBuffer login, String property) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
       getConnector(login).instanceOperations().removeProperty(property);
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
     }
   }
   
   @Override
-  public void setProperty(ByteBuffer login, String property, String value) throws TException {
+  public void setProperty(ByteBuffer login, String property, String value) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
       getConnector(login).instanceOperations().setProperty(property, value);
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
     }
   }
   
   @Override
-  public boolean testClassLoad(ByteBuffer login, String className, String asTypeName) throws TException {
+  public boolean testClassLoad(ByteBuffer login, String className, String asTypeName) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
       return getConnector(login).instanceOperations().testClassLoad(className, asTypeName);
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
+      return false;
     }
   }
   
   @Override
-  public boolean authenticateUser(ByteBuffer login, String principal, Map<String,String> properties) throws TException {
+  public boolean authenticateUser(ByteBuffer login, String user, Map<String,String> properties) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
-      return getConnector(login).securityOperations().authenticateUser(principal, getToken(principal, properties));
+      return getConnector(login).securityOperations().authenticateUser(user, getToken(user, properties));
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
+      return false;
     }
   }
   
   @Override
-  public void changeUserAuthorizations(ByteBuffer login, String user, Set<ByteBuffer> authorizations) throws TException {
+  public void changeUserAuthorizations(ByteBuffer login, String user, Set<ByteBuffer> authorizations)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
       Set<String> auths = new HashSet<String>();
       for (ByteBuffer auth : authorizations) {
@@ -656,106 +790,124 @@ public class ProxyServer implements Accu
       }
       getConnector(login).securityOperations().changeUserAuthorizations(user, new Authorizations(auths.toArray(new String[0])));
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
     }
   }
   
   @Override
-  public void changeLocalUserPassword(ByteBuffer login, String user, ByteBuffer password) throws TException {
+  public void changeLocalUserPassword(ByteBuffer login, String user, ByteBuffer password) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
       getConnector(login).securityOperations().changeLocalUserPassword(user, new PasswordToken(password));
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
     }
   }
   
   @Override
-  public void createLocalUser(ByteBuffer login, String user, ByteBuffer password) throws TException {
+  public void createLocalUser(ByteBuffer login, String user, ByteBuffer password) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
       getConnector(login).securityOperations().createLocalUser(user, new PasswordToken(password));
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
     }
   }
   
   @Override
-  public void dropLocalUser(ByteBuffer login, String user) throws TException {
+  public void dropLocalUser(ByteBuffer login, String user) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
       getConnector(login).securityOperations().dropLocalUser(user);
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
     }
   }
   
   @Override
-  public List<ByteBuffer> getUserAuthorizations(ByteBuffer login, String user) throws TException {
+  public List<ByteBuffer> getUserAuthorizations(ByteBuffer login, String user) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
       return getConnector(login).securityOperations().getUserAuthorizations(user).getAuthorizationsBB();
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
+      return null;
     }
   }
   
   @Override
-  public void grantSystemPermission(ByteBuffer login, String user, org.apache.accumulo.proxy.thrift.SystemPermission perm) throws TException {
+  public void grantSystemPermission(ByteBuffer login, String user, org.apache.accumulo.proxy.thrift.SystemPermission perm)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
       getConnector(login).securityOperations().grantSystemPermission(user, SystemPermission.getPermissionById((byte) perm.getValue()));
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
     }
   }
   
   @Override
-  public void grantTablePermission(ByteBuffer login, String user, String table, org.apache.accumulo.proxy.thrift.TablePermission perm) throws TException {
+  public void grantTablePermission(ByteBuffer login, String user, String table, org.apache.accumulo.proxy.thrift.TablePermission perm)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       getConnector(login).securityOperations().grantTablePermission(user, table, TablePermission.getPermissionById((byte) perm.getValue()));
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
   }
   
   @Override
-  public boolean hasSystemPermission(ByteBuffer login, String user, org.apache.accumulo.proxy.thrift.SystemPermission perm) throws TException {
+  public boolean hasSystemPermission(ByteBuffer login, String user, org.apache.accumulo.proxy.thrift.SystemPermission perm)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
       return getConnector(login).securityOperations().hasSystemPermission(user, SystemPermission.getPermissionById((byte) perm.getValue()));
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
+      return false;
     }
   }
   
   @Override
-  public boolean hasTablePermission(ByteBuffer login, String user, String table, org.apache.accumulo.proxy.thrift.TablePermission perm) throws TException {
+  public boolean hasTablePermission(ByteBuffer login, String user, String table, org.apache.accumulo.proxy.thrift.TablePermission perm)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       return getConnector(login).securityOperations().hasTablePermission(user, table, TablePermission.getPermissionById((byte) perm.getValue()));
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
+      return false;
     }
   }
   
   @Override
-  public Set<String> listLocalUsers(ByteBuffer login) throws TException {
+  public Set<String> listLocalUsers(ByteBuffer login) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
       return getConnector(login).securityOperations().listLocalUsers();
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
+      return null;
     }
   }
   
   @Override
-  public void revokeSystemPermission(ByteBuffer login, String user, org.apache.accumulo.proxy.thrift.SystemPermission perm) throws TException {
+  public void revokeSystemPermission(ByteBuffer login, String user, org.apache.accumulo.proxy.thrift.SystemPermission perm)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
       getConnector(login).securityOperations().revokeSystemPermission(user, SystemPermission.getPermissionById((byte) perm.getValue()));
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
     }
   }
   
   @Override
-  public void revokeTablePermission(ByteBuffer login, String user, String table, org.apache.accumulo.proxy.thrift.TablePermission perm) throws TException {
+  public void revokeTablePermission(ByteBuffer login, String user, String table, org.apache.accumulo.proxy.thrift.TablePermission perm)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       getConnector(login).securityOperations().revokeTablePermission(user, table, TablePermission.getPermissionById((byte) perm.getValue()));
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
   }
   
@@ -768,7 +920,8 @@ public class ProxyServer implements Accu
   }
   
   @Override
-  public String createScanner(ByteBuffer login, String tableName, ScanOptions opts) throws TException {
+  public String createScanner(ByteBuffer login, String tableName, ScanOptions opts) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       Connector connector = getConnector(login);
       
@@ -810,12 +963,14 @@ public class ProxyServer implements Accu
       scannerCache.put(uuid, spi);
       return uuid.toString();
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
+      return null;
     }
   }
   
   @Override
-  public String createBatchScanner(ByteBuffer login, String tableName, BatchScanOptions opts) throws TException {
+  public String createBatchScanner(ByteBuffer login, String tableName, BatchScanOptions opts) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       Connector connector = getConnector(login);
       
@@ -870,22 +1025,24 @@ public class ProxyServer implements Accu
       scannerCache.put(uuid, spi);
       return uuid.toString();
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
+      return null;
     }
   }
   
   @Override
-  public boolean hasNext(String scanner) throws TException {
+  public boolean hasNext(String scanner) throws UnknownScanner, TException {
     ScannerPlusIterator spi = scannerCache.getIfPresent(UUID.fromString(scanner));
     if (spi == null) {
-      throw new TException("Scanner never existed or no longer exists");
+      throw new UnknownScanner("Scanner never existed or no longer exists");
     }
     
     return (spi.iterator.hasNext());
   }
   
   @Override
-  public KeyValueAndPeek nextEntry(String scanner) throws TException {
+  public KeyValueAndPeek nextEntry(String scanner) throws NoMoreEntriesException, UnknownScanner, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      TException {
     
     ScanResult scanResult = nextK(scanner, 1);
     if (scanResult.results.size() > 0) {
@@ -893,11 +1050,11 @@ public class ProxyServer implements Accu
     } else {
       throw new NoMoreEntriesException();
     }
-    
   }
   
   @Override
-  public ScanResult nextK(String scanner, int k) throws TException {
+  public ScanResult nextK(String scanner, int k) throws NoMoreEntriesException, UnknownScanner, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      TException {
     
     // fetch the scanner
     ScannerPlusIterator spi = scannerCache.getIfPresent(UUID.fromString(scanner));
@@ -919,19 +1076,25 @@ public class ProxyServer implements Accu
         ret.setMore(numRead == k);
       } catch (Exception ex) {
         closeScanner(scanner);
-        throw translateException(ex);
+        throw new org.apache.accumulo.proxy.thrift.AccumuloSecurityException(ex.toString());
       }
       return ret;
     }
   }
   
   @Override
-  public void closeScanner(String uuid) throws TException {
-    scannerCache.invalidate(uuid);
+  public void closeScanner(String scanner) throws UnknownScanner, TException {
+    try {
+      scannerCache.invalidate(scanner);
+    } catch (Exception e) {
+      throw new TException(e.toString());
+    }
   }
   
   @Override
-  public void updateAndFlush(ByteBuffer login, String tableName, Map<ByteBuffer,List<ColumnUpdate>> cells) throws TException {
+  public void updateAndFlush(ByteBuffer login, String tableName, Map<ByteBuffer,List<ColumnUpdate>> cells)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, org.apache.accumulo.proxy.thrift.MutationsRejectedException, TException {
     try {
       BatchWriterPlusException bwpe = getWriter(login, tableName, null);
       addCellsToWriter(cells, bwpe);
@@ -940,7 +1103,7 @@ public class ProxyServer implements Accu
       bwpe.writer.flush();
       bwpe.writer.close();
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionMRE(e);
     }
   }
   
@@ -952,7 +1115,7 @@ public class ProxyServer implements Accu
     
     HashMap<Text,ColumnVisibility> vizMap = new HashMap<Text,ColumnVisibility>();
     
-    for (Entry<ByteBuffer,List<ColumnUpdate>> entry : cells.entrySet()) {
+    for (Map.Entry<ByteBuffer,List<ColumnUpdate>> entry : cells.entrySet()) {
       Mutation m = new Mutation(ByteBufferUtil.toBytes(entry.getKey()));
       
       for (ColumnUpdate update : entry.getValue()) {
@@ -990,14 +1153,16 @@ public class ProxyServer implements Accu
   }
   
   @Override
-  public String createWriter(ByteBuffer login, String tableName, WriterOptions opts) throws TException {
+  public String createWriter(ByteBuffer login, String tableName, WriterOptions opts) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       BatchWriterPlusException writer = getWriter(login, tableName, opts);
       UUID uuid = UUID.randomUUID();
       writerCache.put(uuid, writer);
       return uuid.toString();
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
+      return null;
     }
   }
   
@@ -1010,12 +1175,12 @@ public class ProxyServer implements Accu
       }
       addCellsToWriter(cells, bwpe);
     } catch (Exception e) {
-      throw translateException(e);
+      throw new TException(e);
     }
   }
   
   @Override
-  public void flush(String writer) throws TException {
+  public void flush(String writer) throws UnknownWriter, org.apache.accumulo.proxy.thrift.MutationsRejectedException, TException {
     try {
       BatchWriterPlusException bwpe = writerCache.getIfPresent(UUID.fromString(writer));
       if (bwpe == null) {
@@ -1024,13 +1189,15 @@ public class ProxyServer implements Accu
       if (bwpe.exception != null)
         throw bwpe.exception;
       bwpe.writer.flush();
+    } catch (MutationsRejectedException e) {
+      throw new org.apache.accumulo.proxy.thrift.MutationsRejectedException(e.toString());
     } catch (Exception e) {
-      throw translateException(e);
+      throw new TException(e);
     }
   }
   
   @Override
-  public void closeWriter(String writer) throws TException {
+  public void closeWriter(String writer) throws UnknownWriter, org.apache.accumulo.proxy.thrift.MutationsRejectedException, TException {
     try {
       BatchWriterPlusException bwpe = writerCache.getIfPresent(UUID.fromString(writer));
       if (bwpe == null) {
@@ -1040,8 +1207,10 @@ public class ProxyServer implements Accu
         throw bwpe.exception;
       bwpe.writer.close();
       writerCache.invalidate(UUID.fromString(writer));
+    } catch (MutationsRejectedException e) {
+      throw new org.apache.accumulo.proxy.thrift.MutationsRejectedException(e.toString());
     } catch (Exception e) {
-      throw translateException(e);
+      throw new TException(e);
     }
   }
   
@@ -1088,89 +1257,106 @@ public class ProxyServer implements Accu
   
   @Override
   public void attachIterator(ByteBuffer login, String tableName, org.apache.accumulo.proxy.thrift.IteratorSetting setting,
-      Set<org.apache.accumulo.proxy.thrift.IteratorScope> scopes) throws TException {
+      Set<org.apache.accumulo.proxy.thrift.IteratorScope> scopes) throws org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       getConnector(login).tableOperations().attachIterator(tableName, getIteratorSetting(setting), getIteratorScopes(scopes));
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
   }
   
   @Override
   public void checkIteratorConflicts(ByteBuffer login, String tableName, org.apache.accumulo.proxy.thrift.IteratorSetting setting,
-      Set<org.apache.accumulo.proxy.thrift.IteratorScope> scopes) throws TException {
+      Set<org.apache.accumulo.proxy.thrift.IteratorScope> scopes) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       getConnector(login).tableOperations().checkIteratorConflicts(tableName, getIteratorSetting(setting), getIteratorScopes(scopes));
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNFNoSecurity(e);
     }
   }
   
   @Override
   public void cloneTable(ByteBuffer login, String tableName, String newTableName, boolean flush, Map<String,String> propertiesToSet,
-      Set<String> propertiesToExclude) throws TException {
+      Set<String> propertiesToExclude) throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, org.apache.accumulo.proxy.thrift.TableExistsException, TException {
     try {
       getConnector(login).tableOperations().clone(tableName, newTableName, flush, propertiesToSet, propertiesToExclude);
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTEE(e);
     }
   }
   
   @Override
-  public void exportTable(ByteBuffer login, String tableName, String exportDir) throws TException {
+  public void exportTable(ByteBuffer login, String tableName, String exportDir) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
+    
     try {
       getConnector(login).tableOperations().exportTable(tableName, exportDir);
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
   }
   
   @Override
-  public void importTable(ByteBuffer login, String tableName, String importDir) throws TException {
+  public void importTable(ByteBuffer login, String tableName, String importDir) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableExistsException, TException {
+    
     try {
       getConnector(login).tableOperations().importTable(tableName, importDir);
+    } catch (TableExistsException e) {
+      throw new org.apache.accumulo.proxy.thrift.TableExistsException(e.toString());
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
     }
   }
   
   @Override
   public org.apache.accumulo.proxy.thrift.IteratorSetting getIteratorSetting(ByteBuffer login, String tableName, String iteratorName,
-      org.apache.accumulo.proxy.thrift.IteratorScope scope) throws TException {
+      org.apache.accumulo.proxy.thrift.IteratorScope scope) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       IteratorSetting is = getConnector(login).tableOperations().getIteratorSetting(tableName, iteratorName, getIteratorScope(scope));
       return new org.apache.accumulo.proxy.thrift.IteratorSetting(is.getPriority(), is.getName(), is.getIteratorClass(), is.getOptions());
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
+      return null;
     }
   }
   
   @Override
-  public Map<String,Set<org.apache.accumulo.proxy.thrift.IteratorScope>> listIterators(ByteBuffer login, String tableName) throws TException {
+  public Map<String,Set<org.apache.accumulo.proxy.thrift.IteratorScope>> listIterators(ByteBuffer login, String tableName)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       Map<String,EnumSet<IteratorScope>> iterMap = getConnector(login).tableOperations().listIterators(tableName);
       Map<String,Set<org.apache.accumulo.proxy.thrift.IteratorScope>> result = new HashMap<String,Set<org.apache.accumulo.proxy.thrift.IteratorScope>>();
-      for (Entry<String,EnumSet<IteratorScope>> entry : iterMap.entrySet()) {
+      for (Map.Entry<String,EnumSet<IteratorScope>> entry : iterMap.entrySet()) {
         result.put(entry.getKey(), getProxyIteratorScopes(entry.getValue()));
       }
       return result;
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
+      return null;
     }
   }
   
   @Override
-  public void removeIterator(ByteBuffer login, String tableName, String iterName, Set<org.apache.accumulo.proxy.thrift.IteratorScope> scopes) throws TException {
+  public void removeIterator(ByteBuffer login, String tableName, String iterName, Set<org.apache.accumulo.proxy.thrift.IteratorScope> scopes)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       getConnector(login).tableOperations().removeIterator(tableName, iterName, getIteratorScopes(scopes));
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
   }
   
   @Override
   public Set<org.apache.accumulo.proxy.thrift.Range> splitRangeByTablets(ByteBuffer login, String tableName, org.apache.accumulo.proxy.thrift.Range range,
-      int maxSplits) throws TException {
+      int maxSplits) throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
     try {
       Set<Range> ranges = getConnector(login).tableOperations().splitRangeByTablets(tableName, getRange(range), maxSplits);
       Set<org.apache.accumulo.proxy.thrift.Range> result = new HashSet<org.apache.accumulo.proxy.thrift.Range>();
@@ -1179,7 +1365,8 @@ public class ProxyServer implements Accu
       }
       return result;
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
+      return null;
     }
   }
   
@@ -1200,13 +1387,14 @@ public class ProxyServer implements Accu
   }
   
   @Override
-  public void importDirectory(ByteBuffer login, String tableName, String importDir, String failureDir, boolean setTime) throws TException {
+  public void importDirectory(ByteBuffer login, String tableName, String importDir, String failureDir, boolean setTime)
+      throws org.apache.accumulo.proxy.thrift.TableNotFoundException, org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
       getConnector(login).tableOperations().importDirectory(tableName, importDir, failureDir, setTime);
     } catch (Exception e) {
-      throw translateException(e);
+      handleExceptionTNF(e);
     }
-    
   }
   
   static private final ByteBuffer EMPTY = ByteBuffer.wrap(new byte[] {});
@@ -1227,22 +1415,25 @@ public class ProxyServer implements Accu
   }
   
   @Override
-  public void pingTabletServer(ByteBuffer login, String tserver) throws TException {
+  public void pingTabletServer(ByteBuffer login, String tserver) throws org.apache.accumulo.proxy.thrift.AccumuloException,
+      org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
       getConnector(login).instanceOperations().ping(tserver);
     } catch (Exception e) {
-      throw translateException(e);
+      handleException(e);
     }
   }
   
   @Override
-  public ByteBuffer login(String principal, Map<String,String> loginProperties) throws TException {
+  public ByteBuffer login(String principal, Map<String,String> loginProperties) throws org.apache.accumulo.proxy.thrift.AccumuloSecurityException, TException {
     try {
       AuthenticationToken token = getToken(principal, loginProperties);
       TCredentials credential = CredentialHelper.create(principal, token, instance.getInstanceID());
       return ByteBuffer.wrap(CredentialHelper.asByteArray(credential));
+    } catch (AccumuloSecurityException e) {
+      throw new org.apache.accumulo.proxy.thrift.AccumuloSecurityException(e.toString());
     } catch (Exception e) {
-      throw translateException(e);
+      throw new TException(e);
     }
   }
   

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=1470955&r1=1470954&r2=1470955&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 Tue Apr 23 13:46:52 2013
@@ -630,7 +630,6 @@ public class SimpleTest {
     client.clearLocatorCache(creds, TABLE_TEST);
     
     // compact
-    assertTrue(countFiles(TABLE_TEST) > 1);
     client.compactTable(creds, TABLE_TEST, null, null, null, true, true);
     assertEquals(1, countFiles(TABLE_TEST));
     

Modified: accumulo/branches/1.5/test/src/main/java/org/apache/accumulo/test/MiniAccumuloCluster.java
URL: http://svn.apache.org/viewvc/accumulo/branches/1.5/test/src/main/java/org/apache/accumulo/test/MiniAccumuloCluster.java?rev=1470955&r1=1470954&r2=1470955&view=diff
==============================================================================
--- accumulo/branches/1.5/test/src/main/java/org/apache/accumulo/test/MiniAccumuloCluster.java (original)
+++ accumulo/branches/1.5/test/src/main/java/org/apache/accumulo/test/MiniAccumuloCluster.java Tue Apr 23 13:46:52 2013
@@ -99,7 +99,6 @@ public class MiniAccumuloCluster {
         }
         
       } catch (IOException e) {
-        e.printStackTrace();
       }
     }
   }