You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ec...@apache.org on 2012/10/18 21:27:48 UTC

svn commit: r1399806 [1/6] - in /accumulo/trunk: ./ core/src/main/java/org/apache/accumulo/core/client/impl/ core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ core/src/main/java/org/apache/accumulo/core/data/thrift/ core/src/main/java/org...

Author: ecn
Date: Thu Oct 18 19:27:45 2012
New Revision: 1399806

URL: http://svn.apache.org/viewvc?rev=1399806&view=rev
Log:
ACCUMULO-822 update to thrift 0.9.0

Modified:
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/BatchWriterImpl.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchWriter.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ClientService.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ConfigurationType.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/TableOperation.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/TableOperationExceptionType.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ThriftTableOperationException.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/data/thrift/InitialMultiScan.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/data/thrift/InitialScan.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/data/thrift/IterInfo.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/data/thrift/MapFileInfo.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/data/thrift/MultiScanResult.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/data/thrift/ScanResult.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/data/thrift/TColumn.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/data/thrift/TConstraintViolationSummary.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/data/thrift/TKey.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/data/thrift/TKeyExtent.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/data/thrift/TKeyValue.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/data/thrift/TMutation.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/data/thrift/TRange.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/data/thrift/UpdateErrors.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/file/rfile/RelativeKey.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/gc/thrift/GCMonitorService.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/gc/thrift/GCStatus.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/gc/thrift/GcCycleStats.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/master/thrift/Compacting.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/master/thrift/DeadServer.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/master/thrift/MasterClientService.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/master/thrift/MasterGoalState.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/master/thrift/MasterMonitorInfo.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/master/thrift/MasterState.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/master/thrift/RecoveryException.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/master/thrift/RecoveryStatus.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/master/thrift/TableInfo.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/master/thrift/TableOperation.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/master/thrift/TabletLoadState.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/master/thrift/TabletServerStatus.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/master/thrift/TabletSplit.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/AuthInfo.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/SecurityErrorCode.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/security/thrift/ThriftSecurityException.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ActionStats.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ActiveScan.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ConstraintViolationException.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/IteratorConfig.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/NoSuchScanIDException.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/NotServingTabletException.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ScanState.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ScanType.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/TIteratorSetting.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/TabletClientService.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/TabletStats.java
    accumulo/trunk/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/TooManyFilesException.java
    accumulo/trunk/core/src/main/thrift/thrift.sh
    accumulo/trunk/core/src/test/java/org/apache/accumulo/core/client/mock/MockTableOperationsTest.java
    accumulo/trunk/pom.xml
    accumulo/trunk/server/src/main/java/org/apache/accumulo/server/monitor/servlets/DefaultServlet.java
    accumulo/trunk/server/src/main/java/org/apache/accumulo/server/problems/ProblemReports.java
    accumulo/trunk/server/src/main/java/org/apache/accumulo/server/test/continuous/ContinuousStatsCollector.java
    accumulo/trunk/server/src/main/java/org/apache/accumulo/server/test/functional/BadIteratorMincTest.java
    accumulo/trunk/server/src/main/java/org/apache/accumulo/server/test/performance/metadata/MetadataBatchScanTest.java
    accumulo/trunk/server/src/main/java/org/apache/accumulo/server/test/randomwalk/shard/DeleteSomeDocs.java
    accumulo/trunk/server/src/test/java/org/apache/accumulo/server/master/TestMergeState.java
    accumulo/trunk/trace/src/main/java/org/apache/accumulo/cloudtrace/thrift/RemoteSpan.java
    accumulo/trunk/trace/src/main/java/org/apache/accumulo/cloudtrace/thrift/SpanReceiver.java
    accumulo/trunk/trace/src/main/java/org/apache/accumulo/cloudtrace/thrift/TInfo.java
    accumulo/trunk/trace/src/main/java/org/apache/accumulo/cloudtrace/thrift/TestService.java

Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/BatchWriterImpl.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/BatchWriterImpl.java?rev=1399806&r1=1399805&r2=1399806&view=diff
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/BatchWriterImpl.java (original)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/BatchWriterImpl.java Thu Oct 18 19:27:45 2012
@@ -30,7 +30,7 @@ public class BatchWriterImpl implements 
   private TabletServerBatchWriter bw;
   
   public BatchWriterImpl(Instance instance, AuthInfo credentials, String table, BatchWriterConfig config) {
-    ArgumentChecker.notNull(instance, credentials, table);
+    ArgumentChecker.notNull(instance, credentials, table, config);
     this.table = table;
     this.bw = new TabletServerBatchWriter(instance, credentials, config);
   }

Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java?rev=1399806&r1=1399805&r2=1399806&view=diff
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java (original)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java Thu Oct 18 19:27:45 2012
@@ -706,12 +706,12 @@ public class TabletServerBatchReaderIter
     } catch (TApplicationException e) {
       log.debug("Server : " + server + " msg : " + e.getMessage(), e);
       throw new AccumuloServerException(server, e);
-    } catch (TException e) {
+    } catch (NoSuchScanIDException e) {
       log.debug("Server : " + server + " msg : " + e.getMessage(), e);
-      timeoutTracker.errorOccured(e);
       throw new IOException(e);
-    } catch (NoSuchScanIDException e) {
+    } catch (TException e) {
       log.debug("Server : " + server + " msg : " + e.getMessage(), e);
+      timeoutTracker.errorOccured(e);
       throw new IOException(e);
     } finally {
       ThriftTransportPool.getInstance().returnTransport(transport);

Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchWriter.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchWriter.java?rev=1399806&r1=1399805&r2=1399806&view=diff
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchWriter.java (original)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchWriter.java Thu Oct 18 19:27:45 2012
@@ -909,10 +909,10 @@ public class TabletServerBatchWriter {
       } catch (ThriftSecurityException e) {
         updateAuthorizationFailures(tabMuts.keySet());
         throw new AccumuloSecurityException(e.user, e.code, e);
-      } catch (TException e) {
-        throw new IOException(e);
       } catch (NoSuchScanIDException e) {
         throw new IOException(e);
+      } catch (TException e) {
+        throw new IOException(e);
       } finally {
         ThriftTransportPool.getInstance().returnTransport(transport);
       }

Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java?rev=1399806&r1=1399805&r2=1399806&view=diff
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java (original)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java Thu Oct 18 19:27:45 2012
@@ -149,12 +149,12 @@ public class ThriftScanner {
       throw new AccumuloServerException(server, tae);
     } catch (TooManyFilesException e) {
       log.debug("Tablet (" + extent + ") has too many files " + server + " : " + e);
-    } catch (TException e) {
-      log.debug("Error getting transport to " + server + " : " + e);
     } catch (ThriftSecurityException e) {
       log.warn("Security Violation in scan request to " + server + ": " + e);
       throw new AccumuloSecurityException(e.user, e.code, e);
-    }
+    } catch (TException e) {
+      log.debug("Error getting transport to " + server + " : " + e);
+    } 
     
     throw new AccumuloException("getBatchFromServer: failed");
   }
@@ -321,24 +321,6 @@ public class ThriftScanner {
             throw new IsolationException();
           
           UtilWaitThread.sleep(100);
-        } catch (TException e) {
-          TabletLocator.getInstance(instance, credentials, scanState.tableName).invalidateCache(loc.tablet_location);
-          error = "Scan failed, thrift error " + e.getClass().getName() + "  " + e.getMessage() + " " + loc;
-          if (!error.equals(lastError))
-            log.debug(error);
-          else if (log.isTraceEnabled())
-            log.trace(error);
-          lastError = error;
-          loc = null;
-          
-          // do not want to continue using the same scan id, if a timeout occurred could cause a batch to be skipped
-          // because a thread on the server side may still be processing the timed out continue scan
-          scanState.scanID = null;
-          
-          if (scanState.isolated)
-            throw new IsolationException();
-          
-          UtilWaitThread.sleep(100);
         } catch (NoSuchScanIDException e) {
           error = "Scan failed, no such scan id " + scanState.scanID + " " + loc;
           if (!error.equals(lastError))
@@ -374,6 +356,24 @@ public class ThriftScanner {
             throw new IsolationException();
           
           UtilWaitThread.sleep(100);
+        } catch (TException e) {
+          TabletLocator.getInstance(instance, credentials, scanState.tableName).invalidateCache(loc.tablet_location);
+          error = "Scan failed, thrift error " + e.getClass().getName() + "  " + e.getMessage() + " " + loc;
+          if (!error.equals(lastError))
+            log.debug(error);
+          else if (log.isTraceEnabled())
+            log.trace(error);
+          lastError = error;
+          loc = null;
+          
+          // do not want to continue using the same scan id, if a timeout occurred could cause a batch to be skipped
+          // because a thread on the server side may still be processing the timed out continue scan
+          scanState.scanID = null;
+          
+          if (scanState.isolated)
+            throw new IsolationException();
+          
+          UtilWaitThread.sleep(100);
         } finally {
           scanLocation.stop();
         }

Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java?rev=1399806&r1=1399805&r2=1399806&view=diff
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java (original)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java Thu Oct 18 19:27:45 2012
@@ -95,13 +95,13 @@ public class Writer {
       try {
         updateServer(m, tabLoc.tablet_extent, tabLoc.tablet_location, credentials, instance.getConfiguration());
         return;
-      } catch (TException e) {
-        log.trace("server = " + tabLoc.tablet_location, e);
-        TabletLocator.getInstance(instance, credentials, table).invalidateCache(tabLoc.tablet_extent);
       } catch (NotServingTabletException e) {
         log.trace("Not serving tablet, server = " + tabLoc.tablet_location);
         TabletLocator.getInstance(instance, credentials, table).invalidateCache(tabLoc.tablet_extent);
-      }
+      } catch (TException e) {
+        log.trace("server = " + tabLoc.tablet_location, e);
+        TabletLocator.getInstance(instance, credentials, table).invalidateCache(tabLoc.tablet_extent);
+      } 
       
       UtilWaitThread.sleep(500);
     }

Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ClientService.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ClientService.java?rev=1399806&r1=1399805&r2=1399806&view=diff
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ClientService.java (original)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ClientService.java Thu Oct 18 19:27:45 2012
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (0.8.0)
+ * Autogenerated by Thrift Compiler (0.9.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -12,6 +12,9 @@ import org.apache.thrift.scheme.Standard
 
 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;
@@ -1624,64 +1627,80 @@ import org.slf4j.LoggerFactory;
       return processMap;
     }
 
-    private static class getRootTabletLocation<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getRootTabletLocation_args> {
+    public static class getRootTabletLocation<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getRootTabletLocation_args> {
       public getRootTabletLocation() {
         super("getRootTabletLocation");
       }
 
-      protected getRootTabletLocation_args getEmptyArgsInstance() {
+      public getRootTabletLocation_args getEmptyArgsInstance() {
         return new getRootTabletLocation_args();
       }
 
-      protected getRootTabletLocation_result getResult(I iface, getRootTabletLocation_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public getRootTabletLocation_result getResult(I iface, getRootTabletLocation_args args) throws org.apache.thrift.TException {
         getRootTabletLocation_result result = new getRootTabletLocation_result();
         result.success = iface.getRootTabletLocation();
         return result;
       }
     }
 
-    private static class getInstanceId<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getInstanceId_args> {
+    public static class getInstanceId<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getInstanceId_args> {
       public getInstanceId() {
         super("getInstanceId");
       }
 
-      protected getInstanceId_args getEmptyArgsInstance() {
+      public getInstanceId_args getEmptyArgsInstance() {
         return new getInstanceId_args();
       }
 
-      protected getInstanceId_result getResult(I iface, getInstanceId_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public getInstanceId_result getResult(I iface, getInstanceId_args args) throws org.apache.thrift.TException {
         getInstanceId_result result = new getInstanceId_result();
         result.success = iface.getInstanceId();
         return result;
       }
     }
 
-    private static class getZooKeepers<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getZooKeepers_args> {
+    public static class getZooKeepers<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getZooKeepers_args> {
       public getZooKeepers() {
         super("getZooKeepers");
       }
 
-      protected getZooKeepers_args getEmptyArgsInstance() {
+      public getZooKeepers_args getEmptyArgsInstance() {
         return new getZooKeepers_args();
       }
 
-      protected getZooKeepers_result getResult(I iface, getZooKeepers_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public getZooKeepers_result getResult(I iface, getZooKeepers_args args) throws org.apache.thrift.TException {
         getZooKeepers_result result = new getZooKeepers_result();
         result.success = iface.getZooKeepers();
         return result;
       }
     }
 
-    private static class bulkImportFiles<I extends Iface> extends org.apache.thrift.ProcessFunction<I, bulkImportFiles_args> {
+    public static class bulkImportFiles<I extends Iface> extends org.apache.thrift.ProcessFunction<I, bulkImportFiles_args> {
       public bulkImportFiles() {
         super("bulkImportFiles");
       }
 
-      protected bulkImportFiles_args getEmptyArgsInstance() {
+      public bulkImportFiles_args getEmptyArgsInstance() {
         return new bulkImportFiles_args();
       }
 
-      protected bulkImportFiles_result getResult(I iface, bulkImportFiles_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public bulkImportFiles_result getResult(I iface, bulkImportFiles_args args) throws org.apache.thrift.TException {
         bulkImportFiles_result result = new bulkImportFiles_result();
         try {
           result.success = iface.bulkImportFiles(args.tinfo, args.credentials, args.tid, args.tableId, args.files, args.errorDir, args.setTime);
@@ -1694,16 +1713,20 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    private static class isActive<I extends Iface> extends org.apache.thrift.ProcessFunction<I, isActive_args> {
+    public static class isActive<I extends Iface> extends org.apache.thrift.ProcessFunction<I, isActive_args> {
       public isActive() {
         super("isActive");
       }
 
-      protected isActive_args getEmptyArgsInstance() {
+      public isActive_args getEmptyArgsInstance() {
         return new isActive_args();
       }
 
-      protected isActive_result getResult(I iface, isActive_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public isActive_result getResult(I iface, isActive_args args) throws org.apache.thrift.TException {
         isActive_result result = new isActive_result();
         result.success = iface.isActive(args.tinfo, args.tid);
         result.setSuccessIsSet(true);
@@ -1711,16 +1734,20 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    private static class ping<I extends Iface> extends org.apache.thrift.ProcessFunction<I, ping_args> {
+    public static class ping<I extends Iface> extends org.apache.thrift.ProcessFunction<I, ping_args> {
       public ping() {
         super("ping");
       }
 
-      protected ping_args getEmptyArgsInstance() {
+      public ping_args getEmptyArgsInstance() {
         return new ping_args();
       }
 
-      protected ping_result getResult(I iface, ping_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public ping_result getResult(I iface, ping_args args) throws org.apache.thrift.TException {
         ping_result result = new ping_result();
         try {
           iface.ping(args.credentials);
@@ -1731,16 +1758,20 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    private static class authenticateUser<I extends Iface> extends org.apache.thrift.ProcessFunction<I, authenticateUser_args> {
+    public static class authenticateUser<I extends Iface> extends org.apache.thrift.ProcessFunction<I, authenticateUser_args> {
       public authenticateUser() {
         super("authenticateUser");
       }
 
-      protected authenticateUser_args getEmptyArgsInstance() {
+      public authenticateUser_args getEmptyArgsInstance() {
         return new authenticateUser_args();
       }
 
-      protected authenticateUser_result getResult(I iface, authenticateUser_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public authenticateUser_result getResult(I iface, authenticateUser_args args) throws org.apache.thrift.TException {
         authenticateUser_result result = new authenticateUser_result();
         try {
           result.success = iface.authenticateUser(args.tinfo, args.credentials, args.user, args.password);
@@ -1752,16 +1783,20 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    private static class listUsers<I extends Iface> extends org.apache.thrift.ProcessFunction<I, listUsers_args> {
+    public static class listUsers<I extends Iface> extends org.apache.thrift.ProcessFunction<I, listUsers_args> {
       public listUsers() {
         super("listUsers");
       }
 
-      protected listUsers_args getEmptyArgsInstance() {
+      public listUsers_args getEmptyArgsInstance() {
         return new listUsers_args();
       }
 
-      protected listUsers_result getResult(I iface, listUsers_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public listUsers_result getResult(I iface, listUsers_args args) throws org.apache.thrift.TException {
         listUsers_result result = new listUsers_result();
         try {
           result.success = iface.listUsers(args.tinfo, args.credentials);
@@ -1772,16 +1807,20 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    private static class createUser<I extends Iface> extends org.apache.thrift.ProcessFunction<I, createUser_args> {
+    public static class createUser<I extends Iface> extends org.apache.thrift.ProcessFunction<I, createUser_args> {
       public createUser() {
         super("createUser");
       }
 
-      protected createUser_args getEmptyArgsInstance() {
+      public createUser_args getEmptyArgsInstance() {
         return new createUser_args();
       }
 
-      protected createUser_result getResult(I iface, createUser_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public createUser_result getResult(I iface, createUser_args args) throws org.apache.thrift.TException {
         createUser_result result = new createUser_result();
         try {
           iface.createUser(args.tinfo, args.credentials, args.user, args.password, args.authorizations);
@@ -1792,16 +1831,20 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    private static class dropUser<I extends Iface> extends org.apache.thrift.ProcessFunction<I, dropUser_args> {
+    public static class dropUser<I extends Iface> extends org.apache.thrift.ProcessFunction<I, dropUser_args> {
       public dropUser() {
         super("dropUser");
       }
 
-      protected dropUser_args getEmptyArgsInstance() {
+      public dropUser_args getEmptyArgsInstance() {
         return new dropUser_args();
       }
 
-      protected dropUser_result getResult(I iface, dropUser_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public dropUser_result getResult(I iface, dropUser_args args) throws org.apache.thrift.TException {
         dropUser_result result = new dropUser_result();
         try {
           iface.dropUser(args.tinfo, args.credentials, args.user);
@@ -1812,16 +1855,20 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    private static class changePassword<I extends Iface> extends org.apache.thrift.ProcessFunction<I, changePassword_args> {
+    public static class changePassword<I extends Iface> extends org.apache.thrift.ProcessFunction<I, changePassword_args> {
       public changePassword() {
         super("changePassword");
       }
 
-      protected changePassword_args getEmptyArgsInstance() {
+      public changePassword_args getEmptyArgsInstance() {
         return new changePassword_args();
       }
 
-      protected changePassword_result getResult(I iface, changePassword_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public changePassword_result getResult(I iface, changePassword_args args) throws org.apache.thrift.TException {
         changePassword_result result = new changePassword_result();
         try {
           iface.changePassword(args.tinfo, args.credentials, args.user, args.password);
@@ -1832,16 +1879,20 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    private static class changeAuthorizations<I extends Iface> extends org.apache.thrift.ProcessFunction<I, changeAuthorizations_args> {
+    public static class changeAuthorizations<I extends Iface> extends org.apache.thrift.ProcessFunction<I, changeAuthorizations_args> {
       public changeAuthorizations() {
         super("changeAuthorizations");
       }
 
-      protected changeAuthorizations_args getEmptyArgsInstance() {
+      public changeAuthorizations_args getEmptyArgsInstance() {
         return new changeAuthorizations_args();
       }
 
-      protected changeAuthorizations_result getResult(I iface, changeAuthorizations_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public changeAuthorizations_result getResult(I iface, changeAuthorizations_args args) throws org.apache.thrift.TException {
         changeAuthorizations_result result = new changeAuthorizations_result();
         try {
           iface.changeAuthorizations(args.tinfo, args.credentials, args.user, args.authorizations);
@@ -1852,16 +1903,20 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    private static class getUserAuthorizations<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getUserAuthorizations_args> {
+    public static class getUserAuthorizations<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getUserAuthorizations_args> {
       public getUserAuthorizations() {
         super("getUserAuthorizations");
       }
 
-      protected getUserAuthorizations_args getEmptyArgsInstance() {
+      public getUserAuthorizations_args getEmptyArgsInstance() {
         return new getUserAuthorizations_args();
       }
 
-      protected getUserAuthorizations_result getResult(I iface, getUserAuthorizations_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public getUserAuthorizations_result getResult(I iface, getUserAuthorizations_args args) throws org.apache.thrift.TException {
         getUserAuthorizations_result result = new getUserAuthorizations_result();
         try {
           result.success = iface.getUserAuthorizations(args.tinfo, args.credentials, args.user);
@@ -1872,16 +1927,20 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    private static class hasSystemPermission<I extends Iface> extends org.apache.thrift.ProcessFunction<I, hasSystemPermission_args> {
+    public static class hasSystemPermission<I extends Iface> extends org.apache.thrift.ProcessFunction<I, hasSystemPermission_args> {
       public hasSystemPermission() {
         super("hasSystemPermission");
       }
 
-      protected hasSystemPermission_args getEmptyArgsInstance() {
+      public hasSystemPermission_args getEmptyArgsInstance() {
         return new hasSystemPermission_args();
       }
 
-      protected hasSystemPermission_result getResult(I iface, hasSystemPermission_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public hasSystemPermission_result getResult(I iface, hasSystemPermission_args args) throws org.apache.thrift.TException {
         hasSystemPermission_result result = new hasSystemPermission_result();
         try {
           result.success = iface.hasSystemPermission(args.tinfo, args.credentials, args.user, args.sysPerm);
@@ -1893,16 +1952,20 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    private static class hasTablePermission<I extends Iface> extends org.apache.thrift.ProcessFunction<I, hasTablePermission_args> {
+    public static class hasTablePermission<I extends Iface> extends org.apache.thrift.ProcessFunction<I, hasTablePermission_args> {
       public hasTablePermission() {
         super("hasTablePermission");
       }
 
-      protected hasTablePermission_args getEmptyArgsInstance() {
+      public hasTablePermission_args getEmptyArgsInstance() {
         return new hasTablePermission_args();
       }
 
-      protected hasTablePermission_result getResult(I iface, hasTablePermission_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public hasTablePermission_result getResult(I iface, hasTablePermission_args args) throws org.apache.thrift.TException {
         hasTablePermission_result result = new hasTablePermission_result();
         try {
           result.success = iface.hasTablePermission(args.tinfo, args.credentials, args.user, args.tableName, args.tblPerm);
@@ -1916,16 +1979,20 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    private static class grantSystemPermission<I extends Iface> extends org.apache.thrift.ProcessFunction<I, grantSystemPermission_args> {
+    public static class grantSystemPermission<I extends Iface> extends org.apache.thrift.ProcessFunction<I, grantSystemPermission_args> {
       public grantSystemPermission() {
         super("grantSystemPermission");
       }
 
-      protected grantSystemPermission_args getEmptyArgsInstance() {
+      public grantSystemPermission_args getEmptyArgsInstance() {
         return new grantSystemPermission_args();
       }
 
-      protected grantSystemPermission_result getResult(I iface, grantSystemPermission_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public grantSystemPermission_result getResult(I iface, grantSystemPermission_args args) throws org.apache.thrift.TException {
         grantSystemPermission_result result = new grantSystemPermission_result();
         try {
           iface.grantSystemPermission(args.tinfo, args.credentials, args.user, args.permission);
@@ -1936,16 +2003,20 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    private static class revokeSystemPermission<I extends Iface> extends org.apache.thrift.ProcessFunction<I, revokeSystemPermission_args> {
+    public static class revokeSystemPermission<I extends Iface> extends org.apache.thrift.ProcessFunction<I, revokeSystemPermission_args> {
       public revokeSystemPermission() {
         super("revokeSystemPermission");
       }
 
-      protected revokeSystemPermission_args getEmptyArgsInstance() {
+      public revokeSystemPermission_args getEmptyArgsInstance() {
         return new revokeSystemPermission_args();
       }
 
-      protected revokeSystemPermission_result getResult(I iface, revokeSystemPermission_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public revokeSystemPermission_result getResult(I iface, revokeSystemPermission_args args) throws org.apache.thrift.TException {
         revokeSystemPermission_result result = new revokeSystemPermission_result();
         try {
           iface.revokeSystemPermission(args.tinfo, args.credentials, args.user, args.permission);
@@ -1956,16 +2027,20 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    private static class grantTablePermission<I extends Iface> extends org.apache.thrift.ProcessFunction<I, grantTablePermission_args> {
+    public static class grantTablePermission<I extends Iface> extends org.apache.thrift.ProcessFunction<I, grantTablePermission_args> {
       public grantTablePermission() {
         super("grantTablePermission");
       }
 
-      protected grantTablePermission_args getEmptyArgsInstance() {
+      public grantTablePermission_args getEmptyArgsInstance() {
         return new grantTablePermission_args();
       }
 
-      protected grantTablePermission_result getResult(I iface, grantTablePermission_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public grantTablePermission_result getResult(I iface, grantTablePermission_args args) throws org.apache.thrift.TException {
         grantTablePermission_result result = new grantTablePermission_result();
         try {
           iface.grantTablePermission(args.tinfo, args.credentials, args.user, args.tableName, args.permission);
@@ -1978,16 +2053,20 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    private static class revokeTablePermission<I extends Iface> extends org.apache.thrift.ProcessFunction<I, revokeTablePermission_args> {
+    public static class revokeTablePermission<I extends Iface> extends org.apache.thrift.ProcessFunction<I, revokeTablePermission_args> {
       public revokeTablePermission() {
         super("revokeTablePermission");
       }
 
-      protected revokeTablePermission_args getEmptyArgsInstance() {
+      public revokeTablePermission_args getEmptyArgsInstance() {
         return new revokeTablePermission_args();
       }
 
-      protected revokeTablePermission_result getResult(I iface, revokeTablePermission_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public revokeTablePermission_result getResult(I iface, revokeTablePermission_args args) throws org.apache.thrift.TException {
         revokeTablePermission_result result = new revokeTablePermission_result();
         try {
           iface.revokeTablePermission(args.tinfo, args.credentials, args.user, args.tableName, args.permission);
@@ -2000,32 +2079,40 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    private static class getConfiguration<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getConfiguration_args> {
+    public static class getConfiguration<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getConfiguration_args> {
       public getConfiguration() {
         super("getConfiguration");
       }
 
-      protected getConfiguration_args getEmptyArgsInstance() {
+      public getConfiguration_args getEmptyArgsInstance() {
         return new getConfiguration_args();
       }
 
-      protected getConfiguration_result getResult(I iface, getConfiguration_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public getConfiguration_result getResult(I iface, getConfiguration_args args) throws org.apache.thrift.TException {
         getConfiguration_result result = new getConfiguration_result();
         result.success = iface.getConfiguration(args.type);
         return result;
       }
     }
 
-    private static class getTableConfiguration<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getTableConfiguration_args> {
+    public static class getTableConfiguration<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getTableConfiguration_args> {
       public getTableConfiguration() {
         super("getTableConfiguration");
       }
 
-      protected getTableConfiguration_args getEmptyArgsInstance() {
+      public getTableConfiguration_args getEmptyArgsInstance() {
         return new getTableConfiguration_args();
       }
 
-      protected getTableConfiguration_result getResult(I iface, getTableConfiguration_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public getTableConfiguration_result getResult(I iface, getTableConfiguration_args args) throws org.apache.thrift.TException {
         getTableConfiguration_result result = new getTableConfiguration_result();
         try {
           result.success = iface.getTableConfiguration(args.tableName);
@@ -2036,16 +2123,20 @@ import org.slf4j.LoggerFactory;
       }
     }
 
-    private static class checkClass<I extends Iface> extends org.apache.thrift.ProcessFunction<I, checkClass_args> {
+    public static class checkClass<I extends Iface> extends org.apache.thrift.ProcessFunction<I, checkClass_args> {
       public checkClass() {
         super("checkClass");
       }
 
-      protected checkClass_args getEmptyArgsInstance() {
+      public checkClass_args getEmptyArgsInstance() {
         return new checkClass_args();
       }
 
-      protected checkClass_result getResult(I iface, checkClass_args args) throws org.apache.thrift.TException {
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public checkClass_result getResult(I iface, checkClass_args args) throws org.apache.thrift.TException {
         checkClass_result result = new checkClass_result();
         result.success = iface.checkClass(args.tinfo, args.className, args.interfaceMatch);
         result.setSuccessIsSet(true);
@@ -2222,6 +2313,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -2549,6 +2641,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -2820,6 +2913,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -3147,6 +3241,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -3418,6 +3513,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -3745,6 +3841,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -3953,7 +4050,7 @@ import org.slf4j.LoggerFactory;
     // isset id assignments
     private static final int __TID_ISSET_ID = 0;
     private static final int __SETTIME_ISSET_ID = 1;
-    private BitSet __isset_bit_vector = new BitSet(2);
+    private byte __isset_bitfield = 0;
     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);
@@ -4004,8 +4101,7 @@ import org.slf4j.LoggerFactory;
      * Performs a deep copy on <i>other</i>.
      */
     public bulkImportFiles_args(bulkImportFiles_args other) {
-      __isset_bit_vector.clear();
-      __isset_bit_vector.or(other.__isset_bit_vector);
+      __isset_bitfield = other.__isset_bitfield;
       if (other.isSetTinfo()) {
         this.tinfo = new org.apache.accumulo.cloudtrace.thrift.TInfo(other.tinfo);
       }
@@ -4105,16 +4201,16 @@ import org.slf4j.LoggerFactory;
     }
 
     public void unsetTid() {
-      __isset_bit_vector.clear(__TID_ISSET_ID);
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __TID_ISSET_ID);
     }
 
     /** Returns true if field tid is set (has been assigned a value) and false otherwise */
     public boolean isSetTid() {
-      return __isset_bit_vector.get(__TID_ISSET_ID);
+      return EncodingUtils.testBit(__isset_bitfield, __TID_ISSET_ID);
     }
 
     public void setTidIsSet(boolean value) {
-      __isset_bit_vector.set(__TID_ISSET_ID, value);
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __TID_ISSET_ID, value);
     }
 
     public String getTableId() {
@@ -4215,16 +4311,16 @@ import org.slf4j.LoggerFactory;
     }
 
     public void unsetSetTime() {
-      __isset_bit_vector.clear(__SETTIME_ISSET_ID);
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __SETTIME_ISSET_ID);
     }
 
     /** Returns true if field setTime is set (has been assigned a value) and false otherwise */
     public boolean isSetSetTime() {
-      return __isset_bit_vector.get(__SETTIME_ISSET_ID);
+      return EncodingUtils.testBit(__isset_bitfield, __SETTIME_ISSET_ID);
     }
 
     public void setSetTimeIsSet(boolean value) {
-      __isset_bit_vector.set(__SETTIME_ISSET_ID, value);
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SETTIME_ISSET_ID, value);
     }
 
     public void setFieldValue(_Fields field, Object value) {
@@ -4575,6 +4671,13 @@ import org.slf4j.LoggerFactory;
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
+      // check for sub-struct validity
+      if (tinfo != null) {
+        tinfo.validate();
+      }
+      if (credentials != null) {
+        credentials.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -4588,7 +4691,7 @@ import org.slf4j.LoggerFactory;
     private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
       try {
         // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
-        __isset_bit_vector = new BitSet(1);
+        __isset_bitfield = 0;
         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);
@@ -5274,6 +5377,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -5538,7 +5642,7 @@ import org.slf4j.LoggerFactory;
 
     // isset id assignments
     private static final int __TID_ISSET_ID = 0;
-    private BitSet __isset_bit_vector = new BitSet(1);
+    private byte __isset_bitfield = 0;
     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);
@@ -5567,8 +5671,7 @@ import org.slf4j.LoggerFactory;
      * Performs a deep copy on <i>other</i>.
      */
     public isActive_args(isActive_args other) {
-      __isset_bit_vector.clear();
-      __isset_bit_vector.or(other.__isset_bit_vector);
+      __isset_bitfield = other.__isset_bitfield;
       if (other.isSetTinfo()) {
         this.tinfo = new org.apache.accumulo.cloudtrace.thrift.TInfo(other.tinfo);
       }
@@ -5621,16 +5724,16 @@ import org.slf4j.LoggerFactory;
     }
 
     public void unsetTid() {
-      __isset_bit_vector.clear(__TID_ISSET_ID);
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __TID_ISSET_ID);
     }
 
     /** Returns true if field tid is set (has been assigned a value) and false otherwise */
     public boolean isSetTid() {
-      return __isset_bit_vector.get(__TID_ISSET_ID);
+      return EncodingUtils.testBit(__isset_bitfield, __TID_ISSET_ID);
     }
 
     public void setTidIsSet(boolean value) {
-      __isset_bit_vector.set(__TID_ISSET_ID, value);
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __TID_ISSET_ID, value);
     }
 
     public void setFieldValue(_Fields field, Object value) {
@@ -5785,6 +5888,10 @@ import org.slf4j.LoggerFactory;
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
+      // check for sub-struct validity
+      if (tinfo != null) {
+        tinfo.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -5798,7 +5905,7 @@ import org.slf4j.LoggerFactory;
     private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
       try {
         // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
-        __isset_bit_vector = new BitSet(1);
+        __isset_bitfield = 0;
         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);
@@ -5987,7 +6094,7 @@ import org.slf4j.LoggerFactory;
 
     // isset id assignments
     private static final int __SUCCESS_ISSET_ID = 0;
-    private BitSet __isset_bit_vector = new BitSet(1);
+    private byte __isset_bitfield = 0;
     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);
@@ -6012,8 +6119,7 @@ import org.slf4j.LoggerFactory;
      * Performs a deep copy on <i>other</i>.
      */
     public isActive_result(isActive_result other) {
-      __isset_bit_vector.clear();
-      __isset_bit_vector.or(other.__isset_bit_vector);
+      __isset_bitfield = other.__isset_bitfield;
       this.success = other.success;
     }
 
@@ -6038,16 +6144,16 @@ import org.slf4j.LoggerFactory;
     }
 
     public void unsetSuccess() {
-      __isset_bit_vector.clear(__SUCCESS_ISSET_ID);
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
     }
 
     /** Returns true if field success is set (has been assigned a value) and false otherwise */
     public boolean isSetSuccess() {
-      return __isset_bit_vector.get(__SUCCESS_ISSET_ID);
+      return EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
     }
 
     public void setSuccessIsSet(boolean value) {
-      __isset_bit_vector.set(__SUCCESS_ISSET_ID, value);
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
     }
 
     public void setFieldValue(_Fields field, Object value) {
@@ -6162,6 +6268,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -6174,6 +6281,8 @@ import org.slf4j.LoggerFactory;
 
     private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
       try {
+        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+        __isset_bitfield = 0;
         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);
@@ -6221,9 +6330,11 @@ import org.slf4j.LoggerFactory;
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
-        oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
-        oprot.writeBool(struct.success);
-        oprot.writeFieldEnd();
+        if (struct.isSetSuccess()) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          oprot.writeBool(struct.success);
+          oprot.writeFieldEnd();
+        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
@@ -6513,6 +6624,10 @@ import org.slf4j.LoggerFactory;
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
+      // check for sub-struct validity
+      if (credentials != null) {
+        credentials.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -6868,6 +6983,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -7465,6 +7581,13 @@ import org.slf4j.LoggerFactory;
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
+      // check for sub-struct validity
+      if (tinfo != null) {
+        tinfo.validate();
+      }
+      if (credentials != null) {
+        credentials.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -7720,7 +7843,7 @@ import org.slf4j.LoggerFactory;
 
     // isset id assignments
     private static final int __SUCCESS_ISSET_ID = 0;
-    private BitSet __isset_bit_vector = new BitSet(1);
+    private byte __isset_bitfield = 0;
     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);
@@ -7749,8 +7872,7 @@ import org.slf4j.LoggerFactory;
      * Performs a deep copy on <i>other</i>.
      */
     public authenticateUser_result(authenticateUser_result other) {
-      __isset_bit_vector.clear();
-      __isset_bit_vector.or(other.__isset_bit_vector);
+      __isset_bitfield = other.__isset_bitfield;
       this.success = other.success;
       if (other.isSetSec()) {
         this.sec = new org.apache.accumulo.core.security.thrift.ThriftSecurityException(other.sec);
@@ -7779,16 +7901,16 @@ import org.slf4j.LoggerFactory;
     }
 
     public void unsetSuccess() {
-      __isset_bit_vector.clear(__SUCCESS_ISSET_ID);
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
     }
 
     /** Returns true if field success is set (has been assigned a value) and false otherwise */
     public boolean isSetSuccess() {
-      return __isset_bit_vector.get(__SUCCESS_ISSET_ID);
+      return EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
     }
 
     public void setSuccessIsSet(boolean value) {
-      __isset_bit_vector.set(__SUCCESS_ISSET_ID, value);
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
     }
 
     public org.apache.accumulo.core.security.thrift.ThriftSecurityException getSec() {
@@ -7967,6 +8089,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -7979,6 +8102,8 @@ import org.slf4j.LoggerFactory;
 
     private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
       try {
+        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+        __isset_bitfield = 0;
         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);
@@ -8035,9 +8160,11 @@ import org.slf4j.LoggerFactory;
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
-        oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
-        oprot.writeBool(struct.success);
-        oprot.writeFieldEnd();
+        if (struct.isSetSuccess()) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          oprot.writeBool(struct.success);
+          oprot.writeFieldEnd();
+        }
         if (struct.sec != null) {
           oprot.writeFieldBegin(SEC_FIELD_DESC);
           struct.sec.write(oprot);
@@ -8420,6 +8547,13 @@ import org.slf4j.LoggerFactory;
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
+      // check for sub-struct validity
+      if (tinfo != null) {
+        tinfo.validate();
+      }
+      if (credentials != null) {
+        credentials.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -8897,6 +9031,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -9648,6 +9783,13 @@ import org.slf4j.LoggerFactory;
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
+      // check for sub-struct validity
+      if (tinfo != null) {
+        tinfo.validate();
+      }
+      if (credentials != null) {
+        credentials.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -10129,6 +10271,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -10638,6 +10781,13 @@ import org.slf4j.LoggerFactory;
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
+      // check for sub-struct validity
+      if (tinfo != null) {
+        tinfo.validate();
+      }
+      if (credentials != null) {
+        credentials.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -11041,6 +11191,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -11638,6 +11789,13 @@ import org.slf4j.LoggerFactory;
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
+      // check for sub-struct validity
+      if (tinfo != null) {
+        tinfo.validate();
+      }
+      if (credentials != null) {
+        credentials.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -12064,6 +12222,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -12672,6 +12831,13 @@ import org.slf4j.LoggerFactory;
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
+      // check for sub-struct validity
+      if (tinfo != null) {
+        tinfo.validate();
+      }
+      if (credentials != null) {
+        credentials.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -13130,6 +13296,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -13639,6 +13806,13 @@ import org.slf4j.LoggerFactory;
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
+      // check for sub-struct validity
+      if (tinfo != null) {
+        tinfo.validate();
+      }
+      if (credentials != null) {
+        credentials.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -14141,6 +14315,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -14390,7 +14565,7 @@ import org.slf4j.LoggerFactory;
 
     // isset id assignments
     private static final int __SYSPERM_ISSET_ID = 0;
-    private BitSet __isset_bit_vector = new BitSet(1);
+    private byte __isset_bitfield = 0;
     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);
@@ -14427,8 +14602,7 @@ import org.slf4j.LoggerFactory;
      * Performs a deep copy on <i>other</i>.
      */
     public hasSystemPermission_args(hasSystemPermission_args other) {
-      __isset_bit_vector.clear();
-      __isset_bit_vector.or(other.__isset_bit_vector);
+      __isset_bitfield = other.__isset_bitfield;
       if (other.isSetTinfo()) {
         this.tinfo = new org.apache.accumulo.cloudtrace.thrift.TInfo(other.tinfo);
       }
@@ -14537,16 +14711,16 @@ import org.slf4j.LoggerFactory;
     }
 
     public void unsetSysPerm() {
-      __isset_bit_vector.clear(__SYSPERM_ISSET_ID);
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __SYSPERM_ISSET_ID);
     }
 
     /** Returns true if field sysPerm is set (has been assigned a value) and false otherwise */
     public boolean isSetSysPerm() {
-      return __isset_bit_vector.get(__SYSPERM_ISSET_ID);
+      return EncodingUtils.testBit(__isset_bitfield, __SYSPERM_ISSET_ID);
     }
 
     public void setSysPermIsSet(boolean value) {
-      __isset_bit_vector.set(__SYSPERM_ISSET_ID, value);
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SYSPERM_ISSET_ID, value);
     }
 
     public void setFieldValue(_Fields field, Object value) {
@@ -14781,6 +14955,13 @@ import org.slf4j.LoggerFactory;
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
+      // check for sub-struct validity
+      if (tinfo != null) {
+        tinfo.validate();
+      }
+      if (credentials != null) {
+        credentials.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -14794,7 +14975,7 @@ import org.slf4j.LoggerFactory;
     private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
       try {
         // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
-        __isset_bit_vector = new BitSet(1);
+        __isset_bitfield = 0;
         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);
@@ -15036,7 +15217,7 @@ import org.slf4j.LoggerFactory;
 
     // isset id assignments
     private static final int __SUCCESS_ISSET_ID = 0;
-    private BitSet __isset_bit_vector = new BitSet(1);
+    private byte __isset_bitfield = 0;
     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);
@@ -15065,8 +15246,7 @@ import org.slf4j.LoggerFactory;
      * Performs a deep copy on <i>other</i>.
      */
     public hasSystemPermission_result(hasSystemPermission_result other) {
-      __isset_bit_vector.clear();
-      __isset_bit_vector.or(other.__isset_bit_vector);
+      __isset_bitfield = other.__isset_bitfield;
       this.success = other.success;
       if (other.isSetSec()) {
         this.sec = new org.apache.accumulo.core.security.thrift.ThriftSecurityException(other.sec);
@@ -15095,16 +15275,16 @@ import org.slf4j.LoggerFactory;
     }
 
     public void unsetSuccess() {
-      __isset_bit_vector.clear(__SUCCESS_ISSET_ID);
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
     }
 
     /** Returns true if field success is set (has been assigned a value) and false otherwise */
     public boolean isSetSuccess() {
-      return __isset_bit_vector.get(__SUCCESS_ISSET_ID);
+      return EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
     }
 
     public void setSuccessIsSet(boolean value) {
-      __isset_bit_vector.set(__SUCCESS_ISSET_ID, value);
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
     }
 
     public org.apache.accumulo.core.security.thrift.ThriftSecurityException getSec() {
@@ -15283,6 +15463,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -15295,6 +15476,8 @@ import org.slf4j.LoggerFactory;
 
     private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
       try {
+        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+        __isset_bitfield = 0;
         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);
@@ -15351,9 +15534,11 @@ import org.slf4j.LoggerFactory;
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
-        oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
-        oprot.writeBool(struct.success);
-        oprot.writeFieldEnd();
+        if (struct.isSetSuccess()) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          oprot.writeBool(struct.success);
+          oprot.writeFieldEnd();
+        }
         if (struct.sec != null) {
           oprot.writeFieldBegin(SEC_FIELD_DESC);
           struct.sec.write(oprot);
@@ -15503,7 +15688,7 @@ import org.slf4j.LoggerFactory;
 
     // isset id assignments
     private static final int __TBLPERM_ISSET_ID = 0;
-    private BitSet __isset_bit_vector = new BitSet(1);
+    private byte __isset_bitfield = 0;
     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);
@@ -15544,8 +15729,7 @@ import org.slf4j.LoggerFactory;
      * Performs a deep copy on <i>other</i>.
      */
     public hasTablePermission_args(hasTablePermission_args other) {
-      __isset_bit_vector.clear();
-      __isset_bit_vector.or(other.__isset_bit_vector);
+      __isset_bitfield = other.__isset_bitfield;
       if (other.isSetTinfo()) {
         this.tinfo = new org.apache.accumulo.cloudtrace.thrift.TInfo(other.tinfo);
       }
@@ -15682,16 +15866,16 @@ import org.slf4j.LoggerFactory;
     }
 
     public void unsetTblPerm() {
-      __isset_bit_vector.clear(__TBLPERM_ISSET_ID);
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __TBLPERM_ISSET_ID);
     }
 
     /** Returns true if field tblPerm is set (has been assigned a value) and false otherwise */
     public boolean isSetTblPerm() {
-      return __isset_bit_vector.get(__TBLPERM_ISSET_ID);
+      return EncodingUtils.testBit(__isset_bitfield, __TBLPERM_ISSET_ID);
     }
 
     public void setTblPermIsSet(boolean value) {
-      __isset_bit_vector.set(__TBLPERM_ISSET_ID, value);
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __TBLPERM_ISSET_ID, value);
     }
 
     public void setFieldValue(_Fields field, Object value) {
@@ -15966,6 +16150,13 @@ import org.slf4j.LoggerFactory;
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
+      // check for sub-struct validity
+      if (tinfo != null) {
+        tinfo.validate();
+      }
+      if (credentials != null) {
+        credentials.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -15979,7 +16170,7 @@ import org.slf4j.LoggerFactory;
     private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
       try {
         // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
-        __isset_bit_vector = new BitSet(1);
+        __isset_bitfield = 0;
         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);
@@ -16249,7 +16440,7 @@ import org.slf4j.LoggerFactory;
 
     // isset id assignments
     private static final int __SUCCESS_ISSET_ID = 0;
-    private BitSet __isset_bit_vector = new BitSet(1);
+    private byte __isset_bitfield = 0;
     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);
@@ -16282,8 +16473,7 @@ import org.slf4j.LoggerFactory;
      * Performs a deep copy on <i>other</i>.
      */
     public hasTablePermission_result(hasTablePermission_result other) {
-      __isset_bit_vector.clear();
-      __isset_bit_vector.or(other.__isset_bit_vector);
+      __isset_bitfield = other.__isset_bitfield;
       this.success = other.success;
       if (other.isSetSec()) {
         this.sec = new org.apache.accumulo.core.security.thrift.ThriftSecurityException(other.sec);
@@ -16316,16 +16506,16 @@ import org.slf4j.LoggerFactory;
     }
 
     public void unsetSuccess() {
-      __isset_bit_vector.clear(__SUCCESS_ISSET_ID);
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
     }
 
     /** Returns true if field success is set (has been assigned a value) and false otherwise */
     public boolean isSetSuccess() {
-      return __isset_bit_vector.get(__SUCCESS_ISSET_ID);
+      return EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
     }
 
     public void setSuccessIsSet(boolean value) {
-      __isset_bit_vector.set(__SUCCESS_ISSET_ID, value);
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
     }
 
     public org.apache.accumulo.core.security.thrift.ThriftSecurityException getSec() {
@@ -16568,6 +16758,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -16580,6 +16771,8 @@ import org.slf4j.LoggerFactory;
 
     private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
       try {
+        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+        __isset_bitfield = 0;
         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);
@@ -16645,9 +16838,11 @@ import org.slf4j.LoggerFactory;
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
-        oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
-        oprot.writeBool(struct.success);
-        oprot.writeFieldEnd();
+        if (struct.isSetSuccess()) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          oprot.writeBool(struct.success);
+          oprot.writeFieldEnd();
+        }
         if (struct.sec != null) {
           oprot.writeFieldBegin(SEC_FIELD_DESC);
           struct.sec.write(oprot);
@@ -16808,7 +17003,7 @@ import org.slf4j.LoggerFactory;
 
     // isset id assignments
     private static final int __PERMISSION_ISSET_ID = 0;
-    private BitSet __isset_bit_vector = new BitSet(1);
+    private byte __isset_bitfield = 0;
     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);
@@ -16845,8 +17040,7 @@ import org.slf4j.LoggerFactory;
      * Performs a deep copy on <i>other</i>.
      */
     public grantSystemPermission_args(grantSystemPermission_args other) {
-      __isset_bit_vector.clear();
-      __isset_bit_vector.or(other.__isset_bit_vector);
+      __isset_bitfield = other.__isset_bitfield;
       if (other.isSetTinfo()) {
         this.tinfo = new org.apache.accumulo.cloudtrace.thrift.TInfo(other.tinfo);
       }
@@ -16955,16 +17149,16 @@ import org.slf4j.LoggerFactory;
     }
 
     public void unsetPermission() {
-      __isset_bit_vector.clear(__PERMISSION_ISSET_ID);
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __PERMISSION_ISSET_ID);
     }
 
     /** Returns true if field permission is set (has been assigned a value) and false otherwise */
     public boolean isSetPermission() {
-      return __isset_bit_vector.get(__PERMISSION_ISSET_ID);
+      return EncodingUtils.testBit(__isset_bitfield, __PERMISSION_ISSET_ID);
     }
 
     public void setPermissionIsSet(boolean value) {
-      __isset_bit_vector.set(__PERMISSION_ISSET_ID, value);
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __PERMISSION_ISSET_ID, value);
     }
 
     public void setFieldValue(_Fields field, Object value) {
@@ -17199,6 +17393,13 @@ import org.slf4j.LoggerFactory;
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
+      // check for sub-struct validity
+      if (tinfo != null) {
+        tinfo.validate();
+      }
+      if (credentials != null) {
+        credentials.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -17212,7 +17413,7 @@ import org.slf4j.LoggerFactory;
     private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
       try {
         // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
-        __isset_bit_vector = new BitSet(1);
+        __isset_bitfield = 0;
         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);
@@ -17625,6 +17826,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -17819,7 +18021,7 @@ import org.slf4j.LoggerFactory;
 
     // isset id assignments
     private static final int __PERMISSION_ISSET_ID = 0;
-    private BitSet __isset_bit_vector = new BitSet(1);
+    private byte __isset_bitfield = 0;
     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);
@@ -17856,8 +18058,7 @@ import org.slf4j.LoggerFactory;
      * Performs a deep copy on <i>other</i>.
      */
     public revokeSystemPermission_args(revokeSystemPermission_args other) {
-      __isset_bit_vector.clear();
-      __isset_bit_vector.or(other.__isset_bit_vector);
+      __isset_bitfield = other.__isset_bitfield;
       if (other.isSetTinfo()) {
         this.tinfo = new org.apache.accumulo.cloudtrace.thrift.TInfo(other.tinfo);
       }
@@ -17966,16 +18167,16 @@ import org.slf4j.LoggerFactory;
     }
 
     public void unsetPermission() {
-      __isset_bit_vector.clear(__PERMISSION_ISSET_ID);
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __PERMISSION_ISSET_ID);
     }
 
     /** Returns true if field permission is set (has been assigned a value) and false otherwise */
     public boolean isSetPermission() {
-      return __isset_bit_vector.get(__PERMISSION_ISSET_ID);
+      return EncodingUtils.testBit(__isset_bitfield, __PERMISSION_ISSET_ID);
     }
 
     public void setPermissionIsSet(boolean value) {
-      __isset_bit_vector.set(__PERMISSION_ISSET_ID, value);
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __PERMISSION_ISSET_ID, value);
     }
 
     public void setFieldValue(_Fields field, Object value) {
@@ -18210,6 +18411,13 @@ import org.slf4j.LoggerFactory;
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
+      // check for sub-struct validity
+      if (tinfo != null) {
+        tinfo.validate();
+      }
+      if (credentials != null) {
+        credentials.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -18223,7 +18431,7 @@ import org.slf4j.LoggerFactory;
     private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
       try {
         // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
-        __isset_bit_vector = new BitSet(1);
+        __isset_bitfield = 0;
         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);
@@ -18636,6 +18844,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -18835,7 +19044,7 @@ import org.slf4j.LoggerFactory;
 
     // isset id assignments
     private static final int __PERMISSION_ISSET_ID = 0;
-    private BitSet __isset_bit_vector = new BitSet(1);
+    private byte __isset_bitfield = 0;
     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);
@@ -18876,8 +19085,7 @@ import org.slf4j.LoggerFactory;
      * Performs a deep copy on <i>other</i>.
      */
     public grantTablePermission_args(grantTablePermission_args other) {
-      __isset_bit_vector.clear();
-      __isset_bit_vector.or(other.__isset_bit_vector);
+      __isset_bitfield = other.__isset_bitfield;
       if (other.isSetTinfo()) {
         this.tinfo = new org.apache.accumulo.cloudtrace.thrift.TInfo(other.tinfo);
       }
@@ -19014,16 +19222,16 @@ import org.slf4j.LoggerFactory;
     }
 
     public void unsetPermission() {
-      __isset_bit_vector.clear(__PERMISSION_ISSET_ID);
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __PERMISSION_ISSET_ID);
     }
 
     /** Returns true if field permission is set (has been assigned a value) and false otherwise */
     public boolean isSetPermission() {
-      return __isset_bit_vector.get(__PERMISSION_ISSET_ID);
+      return EncodingUtils.testBit(__isset_bitfield, __PERMISSION_ISSET_ID);
     }
 
     public void setPermissionIsSet(boolean value) {
-      __isset_bit_vector.set(__PERMISSION_ISSET_ID, value);
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __PERMISSION_ISSET_ID, value);
     }
 
     public void setFieldValue(_Fields field, Object value) {
@@ -19298,6 +19506,13 @@ import org.slf4j.LoggerFactory;
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
+      // check for sub-struct validity
+      if (tinfo != null) {
+        tinfo.validate();
+      }
+      if (credentials != null) {
+        credentials.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -19311,7 +19526,7 @@ import org.slf4j.LoggerFactory;
     private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
       try {
         // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
-        __isset_bit_vector = new BitSet(1);
+        __isset_bitfield = 0;
         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);
@@ -19824,6 +20039,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -20048,7 +20264,7 @@ import org.slf4j.LoggerFactory;
 
     // isset id assignments
     private static final int __PERMISSION_ISSET_ID = 0;
-    private BitSet __isset_bit_vector = new BitSet(1);
+    private byte __isset_bitfield = 0;
     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);
@@ -20089,8 +20305,7 @@ import org.slf4j.LoggerFactory;
      * Performs a deep copy on <i>other</i>.
      */
     public revokeTablePermission_args(revokeTablePermission_args other) {
-      __isset_bit_vector.clear();
-      __isset_bit_vector.or(other.__isset_bit_vector);
+      __isset_bitfield = other.__isset_bitfield;
       if (other.isSetTinfo()) {
         this.tinfo = new org.apache.accumulo.cloudtrace.thrift.TInfo(other.tinfo);
       }
@@ -20227,16 +20442,16 @@ import org.slf4j.LoggerFactory;
     }
 
     public void unsetPermission() {
-      __isset_bit_vector.clear(__PERMISSION_ISSET_ID);
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __PERMISSION_ISSET_ID);
     }
 
     /** Returns true if field permission is set (has been assigned a value) and false otherwise */
     public boolean isSetPermission() {
-      return __isset_bit_vector.get(__PERMISSION_ISSET_ID);
+      return EncodingUtils.testBit(__isset_bitfield, __PERMISSION_ISSET_ID);
     }
 
     public void setPermissionIsSet(boolean value) {
-      __isset_bit_vector.set(__PERMISSION_ISSET_ID, value);
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __PERMISSION_ISSET_ID, value);
     }
 
     public void setFieldValue(_Fields field, Object value) {
@@ -20511,6 +20726,13 @@ import org.slf4j.LoggerFactory;
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
+      // check for sub-struct validity
+      if (tinfo != null) {
+        tinfo.validate();
+      }
+      if (credentials != null) {
+        credentials.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -20524,7 +20746,7 @@ import org.slf4j.LoggerFactory;
     private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
       try {
         // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
-        __isset_bit_vector = new BitSet(1);
+        __isset_bitfield = 0;
         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);
@@ -21037,6 +21259,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -21433,6 +21656,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -21811,6 +22035,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -22202,6 +22427,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -22657,6 +22883,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -23227,6 +23454,10 @@ import org.slf4j.LoggerFactory;
 
     public void validate() throws org.apache.thrift.TException {
       // check for required fields
+      // check for sub-struct validity
+      if (tinfo != null) {
+        tinfo.validate();
+      }
     }
 
     private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -23452,7 +23683,7 @@ import org.slf4j.LoggerFactory;
 
     // isset id assignments
     private static final int __SUCCESS_ISSET_ID = 0;
-    private BitSet __isset_bit_vector = new BitSet(1);
+    private byte __isset_bitfield = 0;
     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);
@@ -23477,8 +23708,7 @@ import org.slf4j.LoggerFactory;
      * Performs a deep copy on <i>other</i>.
      */
     public checkClass_result(checkClass_result other) {
-      __isset_bit_vector.clear();
-      __isset_bit_vector.or(other.__isset_bit_vector);
+      __isset_bitfield = other.__isset_bitfield;
       this.success = other.success;
     }
 
@@ -23503,16 +23733,16 @@ import org.slf4j.LoggerFactory;
     }
 
     public void unsetSuccess() {
-      __isset_bit_vector.clear(__SUCCESS_ISSET_ID);
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __SUCCESS_ISSET_ID);
     }
 
     /** Returns true if field success is set (has been assigned a value) and false otherwise */
     public boolean isSetSuccess() {
-      return __isset_bit_vector.get(__SUCCESS_ISSET_ID);
+      return EncodingUtils.testBit(__isset_bitfield, __SUCCESS_ISSET_ID);
     }
 
     public void setSuccessIsSet(boolean value) {
-      __isset_bit_vector.set(__SUCCESS_ISSET_ID, value);
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SUCCESS_ISSET_ID, value);
     }
 
     public void setFieldValue(_Fields field, Object value) {
@@ -23627,6 +23857,7 @@ import org.slf4j.LoggerFactory;
 
     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 {
@@ -23639,6 +23870,8 @@ import org.slf4j.LoggerFactory;
 
     private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
       try {
+        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+        __isset_bitfield = 0;
         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);
@@ -23686,9 +23919,11 @@ import org.slf4j.LoggerFactory;
         struct.validate();
 
         oprot.writeStructBegin(STRUCT_DESC);
-        oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
-        oprot.writeBool(struct.success);
-        oprot.writeFieldEnd();
+        if (struct.isSetSuccess()) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          oprot.writeBool(struct.success);
+          oprot.writeFieldEnd();
+        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }