incubator-blur-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From amccu...@apache.org
Subject [2/6] git commit: Inital commit for integrating the gc watcher and creating back pressure byt canceling queries. More work needs to be done.
Date Sun, 30 Jun 2013 02:10:35 GMT
Inital commit for integrating the gc watcher and creating back pressure byt canceling queries.  More work needs to be done.


Project: http://git-wip-us.apache.org/repos/asf/incubator-blur/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-blur/commit/0ed107ba
Tree: http://git-wip-us.apache.org/repos/asf/incubator-blur/tree/0ed107ba
Diff: http://git-wip-us.apache.org/repos/asf/incubator-blur/diff/0ed107ba

Branch: refs/heads/master
Commit: 0ed107ba9129efd517d00312bc6e4a65e8010af0
Parents: c1a17cc
Author: Aaron McCurry <amccurry@gmail.com>
Authored: Sat Jun 29 16:56:18 2013 -0400
Committer: Aaron McCurry <amccurry@gmail.com>
Committed: Sat Jun 29 16:56:18 2013 -0400

----------------------------------------------------------------------
 .../apache/blur/manager/status/QueryStatus.java |  30 +-
 .../blur/manager/status/QueryStatusManager.java |  18 +
 .../blur/thrift/BlurControllerServer.java       |   5 +-
 .../org/apache/blur/thrift/BlurShardServer.java |   5 +-
 .../blur/thrift/ThriftBlurShardServer.java      |   3 +
 .../java/org/apache/blur/utils/GCWatcher.java   |   6 +-
 .../lucene/search/StopExecutionCollector.java   |  10 +-
 .../org/apache/blur/index/ExitableReader.java   |   2 +-
 .../thrift/generated/BackPressureException.java | 420 +++++++++++++++++++
 .../org/apache/blur/thrift/generated/Blur.java  | 246 ++++++++++-
 .../blur/thrift/generated/QueryState.java       |   5 +-
 .../src/main/scripts/interface/Blur.thrift      |  17 +-
 .../main/scripts/interface/gen-html/Blur.html   |  11 +-
 .../main/scripts/interface/gen-html/index.html  |   1 +
 .../thrift/generated/BackPressureException.java | 420 +++++++++++++++++++
 .../org/apache/blur/thrift/generated/Blur.java  | 246 ++++++++++-
 .../blur/thrift/generated/QueryState.java       |   5 +-
 .../src/main/scripts/interface/gen-js/Blur.js   |  48 +++
 .../main/scripts/interface/gen-js/Blur_types.js |  57 ++-
 .../scripts/interface/gen-perl/Blur/Blur.pm     |  42 ++
 .../scripts/interface/gen-perl/Blur/Types.pm    |  66 +++
 .../src/main/scripts/interface/gen-rb/blur.rb   |  14 +-
 .../main/scripts/interface/gen-rb/blur_types.rb |  28 +-
 23 files changed, 1635 insertions(+), 70 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/0ed107ba/blur-core/src/main/java/org/apache/blur/manager/status/QueryStatus.java
----------------------------------------------------------------------
diff --git a/blur-core/src/main/java/org/apache/blur/manager/status/QueryStatus.java b/blur-core/src/main/java/org/apache/blur/manager/status/QueryStatus.java
index 35895bb..08c2b0b 100644
--- a/blur-core/src/main/java/org/apache/blur/manager/status/QueryStatus.java
+++ b/blur-core/src/main/java/org/apache/blur/manager/status/QueryStatus.java
@@ -18,16 +18,16 @@ package org.apache.blur.manager.status;
  */
 import java.lang.management.ManagementFactory;
 import java.lang.management.ThreadMXBean;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicLong;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicReference;
 
 import org.apache.blur.thrift.generated.BlurQuery;
 import org.apache.blur.thrift.generated.BlurQueryStatus;
-import org.apache.blur.thrift.generated.QueryState;
 import org.apache.blur.thrift.generated.CpuTime;
+import org.apache.blur.thrift.generated.QueryState;
 
 /**
  * This class is accessed by multiple threads (one for each shard) 
@@ -45,10 +45,10 @@ public class QueryStatus implements Comparable<QueryStatus> {
   private long _finishedTime;
   private final ThreadMXBean _bean = ManagementFactory.getThreadMXBean();
   private final long _ttl;
-  private final AtomicBoolean _interrupted = new AtomicBoolean(false);
+  private final AtomicReference<QueryState> _state = new AtomicReference<QueryState>();
   private final AtomicInteger _totalShards = new AtomicInteger();
   private final AtomicInteger _completeShards = new AtomicInteger();
-  private AtomicBoolean _running;
+  private final AtomicBoolean _running;
   private final Map<String, CpuTime> _cpuTimes = new HashMap<String, CpuTime>();
 
   public QueryStatus(long ttl, String table, BlurQuery blurQuery, AtomicBoolean running) {
@@ -85,9 +85,14 @@ public class QueryStatus implements Comparable<QueryStatus> {
   public long getUserUuid() {
     return _blurQuery.uuid;
   }
+  
+  public void stopQueryForBackPressure() {
+    _state.set(QueryState.BACK_PRESSURE_INTERRUPTED);
+    _running.set(false);
+  }
 
   public void cancelQuery() {
-    _interrupted.set(true);
+    _state.set(QueryState.INTERRUPTED);
     _running.set(false);
   }
 
@@ -105,13 +110,7 @@ public class QueryStatus implements Comparable<QueryStatus> {
   }
 
   private QueryState getQueryState() {
-    if (_interrupted.get()) {
-      return QueryState.INTERRUPTED;
-    } else if (_finished) {
-      return QueryState.COMPLETE;
-    } else {
-      return QueryState.RUNNING;
-    }
+    return _state.get();
   }
 
   public String getTable() {
@@ -123,6 +122,9 @@ public class QueryStatus implements Comparable<QueryStatus> {
   }
 
   public void setFinished(boolean finished) {
+    if (_state.get() == QueryState.RUNNING) {
+      _state.set(QueryState.COMPLETE);
+    }
     this._finished = finished;
     _finishedTime = System.currentTimeMillis();
   }

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/0ed107ba/blur-core/src/main/java/org/apache/blur/manager/status/QueryStatusManager.java
----------------------------------------------------------------------
diff --git a/blur-core/src/main/java/org/apache/blur/manager/status/QueryStatusManager.java b/blur-core/src/main/java/org/apache/blur/manager/status/QueryStatusManager.java
index 88915c7..5abc1c3 100644
--- a/blur-core/src/main/java/org/apache/blur/manager/status/QueryStatusManager.java
+++ b/blur-core/src/main/java/org/apache/blur/manager/status/QueryStatusManager.java
@@ -31,6 +31,9 @@ import org.apache.blur.log.Log;
 import org.apache.blur.log.LogFactory;
 import org.apache.blur.thrift.generated.BlurQuery;
 import org.apache.blur.thrift.generated.BlurQueryStatus;
+import org.apache.blur.thrift.generated.QueryState;
+import org.apache.blur.utils.GCWatcher;
+import org.apache.blur.utils.GCWatcher.Action;
 
 public class QueryStatusManager {
 
@@ -53,6 +56,12 @@ public class QueryStatusManager {
         }
       }
     }, statusCleanupTimerDelay, statusCleanupTimerDelay);
+    GCWatcher.registerAction(new Action() {
+      @Override
+      public void takeAction() throws Exception {
+        stopAllQueriesForBackPressure();
+      }
+    });
   }
 
   public void close() {
@@ -126,4 +135,13 @@ public class QueryStatusManager {
     }
     return new ArrayList<Long>(ids);
   }
+
+  public void stopAllQueriesForBackPressure() {
+    LOG.warn("Stopping all queries for back pressure.");
+    for (QueryStatus status : currentQueryStatusCollection.keySet()) {
+      if (status.getQueryStatus().getState() == QueryState.RUNNING) {
+        status.stopQueryForBackPressure();
+      }
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/0ed107ba/blur-core/src/main/java/org/apache/blur/thrift/BlurControllerServer.java
----------------------------------------------------------------------
diff --git a/blur-core/src/main/java/org/apache/blur/thrift/BlurControllerServer.java b/blur-core/src/main/java/org/apache/blur/thrift/BlurControllerServer.java
index 54524f4..4c69b09 100644
--- a/blur-core/src/main/java/org/apache/blur/thrift/BlurControllerServer.java
+++ b/blur-core/src/main/java/org/apache/blur/thrift/BlurControllerServer.java
@@ -58,6 +58,7 @@ import org.apache.blur.thirdparty.thrift_0_9_0.TException;
 import org.apache.blur.thrift.commands.BlurCommand;
 import org.apache.blur.thrift.generated.Blur.Client;
 import org.apache.blur.thrift.generated.Blur.Iface;
+import org.apache.blur.thrift.generated.BackPressureException;
 import org.apache.blur.thrift.generated.BlurException;
 import org.apache.blur.thrift.generated.BlurQuery;
 import org.apache.blur.thrift.generated.BlurQueryStatus;
@@ -298,7 +299,7 @@ public class BlurControllerServer extends TableAdmin implements Iface {
   }
 
   @Override
-  public BlurResults query(final String table, final BlurQuery blurQuery) throws BlurException, TException {
+  public BlurResults query(final String table, final BlurQuery blurQuery) throws BlurException, BackPressureException, TException {
     checkTable(table);
     String cluster = _clusterStatus.getCluster(true, table);
     _queryChecker.checkQuery(blurQuery);
@@ -423,7 +424,7 @@ public class BlurControllerServer extends TableAdmin implements Iface {
   }
 
   @Override
-  public FetchResult fetchRow(final String table, final Selector selector) throws BlurException, TException {
+  public FetchResult fetchRow(final String table, final Selector selector) throws BlurException, BackPressureException, TException {
     checkTable(table);
     IndexManager.validSelector(selector);
     String clientHostnamePort = null;

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/0ed107ba/blur-core/src/main/java/org/apache/blur/thrift/BlurShardServer.java
----------------------------------------------------------------------
diff --git a/blur-core/src/main/java/org/apache/blur/thrift/BlurShardServer.java b/blur-core/src/main/java/org/apache/blur/thrift/BlurShardServer.java
index 2d6a022..7915260 100644
--- a/blur-core/src/main/java/org/apache/blur/thrift/BlurShardServer.java
+++ b/blur-core/src/main/java/org/apache/blur/thrift/BlurShardServer.java
@@ -41,6 +41,7 @@ import org.apache.blur.manager.results.BlurResultIterable;
 import org.apache.blur.manager.writer.BlurIndex;
 import org.apache.blur.server.ShardServerContext;
 import org.apache.blur.thirdparty.thrift_0_9_0.TException;
+import org.apache.blur.thrift.generated.BackPressureException;
 import org.apache.blur.thrift.generated.Blur.Iface;
 import org.apache.blur.thrift.generated.BlurException;
 import org.apache.blur.thrift.generated.BlurQuery;
@@ -88,7 +89,7 @@ public class BlurShardServer extends TableAdmin implements Iface {
   }
 
   @Override
-  public BlurResults query(String table, BlurQuery blurQuery) throws BlurException, TException {
+  public BlurResults query(String table, BlurQuery blurQuery) throws BlurException, BackPressureException, TException {
     checkTable(_cluster, table);
     resetSearchers();
     _queryChecker.checkQuery(blurQuery);
@@ -135,7 +136,7 @@ public class BlurShardServer extends TableAdmin implements Iface {
   }
 
   @Override
-  public String parseQuery(String table, SimpleQuery simpleQuery) throws BlurException, TException {
+  public String parseQuery(String table, SimpleQuery simpleQuery) throws BlurException, BackPressureException, TException {
     try {
       return _indexManager.parseQuery(table, simpleQuery);
     } catch (Throwable e) {

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/0ed107ba/blur-core/src/main/java/org/apache/blur/thrift/ThriftBlurShardServer.java
----------------------------------------------------------------------
diff --git a/blur-core/src/main/java/org/apache/blur/thrift/ThriftBlurShardServer.java b/blur-core/src/main/java/org/apache/blur/thrift/ThriftBlurShardServer.java
index 66a11a2..964e1e8 100644
--- a/blur-core/src/main/java/org/apache/blur/thrift/ThriftBlurShardServer.java
+++ b/blur-core/src/main/java/org/apache/blur/thrift/ThriftBlurShardServer.java
@@ -75,6 +75,7 @@ import org.apache.blur.thirdparty.thrift_0_9_0.server.TServlet;
 import org.apache.blur.thrift.generated.Blur;
 import org.apache.blur.thrift.generated.Blur.Iface;
 import org.apache.blur.utils.BlurUtil;
+import org.apache.blur.utils.GCWatcher;
 import org.apache.blur.utils.MemoryReporter;
 import org.apache.blur.zookeeper.ZkUtils;
 import org.apache.hadoop.conf.Configuration;
@@ -96,6 +97,8 @@ public class ThriftBlurShardServer extends ThriftServer {
     ReporterSetup.setupReporters(configuration);
     MemoryReporter.enable();
     setupJvmMetrics();
+    //make this configurable
+    GCWatcher.init(0.75);
     ThriftServer server = createServer(serverIndex, configuration);
     server.start();
   }

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/0ed107ba/blur-core/src/main/java/org/apache/blur/utils/GCWatcher.java
----------------------------------------------------------------------
diff --git a/blur-core/src/main/java/org/apache/blur/utils/GCWatcher.java b/blur-core/src/main/java/org/apache/blur/utils/GCWatcher.java
index fbe0aa5..3837a65 100644
--- a/blur-core/src/main/java/org/apache/blur/utils/GCWatcher.java
+++ b/blur-core/src/main/java/org/apache/blur/utils/GCWatcher.java
@@ -72,8 +72,10 @@ public class GCWatcher extends TimerTask {
     if (_bean != null) {
       _timer = new Timer("gc-watch", true);
       _timer.schedule(this, _period, _period);
+      LOG.info("GCWatcher was setup.");
     } else {
       _timer = null;
+      LOG.warn("GCWatcher was NOT setup.");
     }
   }
 
@@ -120,7 +122,7 @@ public class GCWatcher extends TimerTask {
         LOG.info("totalTime spent in GC [{0}] collected [{1}]", totalTime, (max - used));
         long upperLimit = (long) (max * _ratio);
         if (used > upperLimit) {
-          LOG.error("WARNING!!!! - Heap used [{0}] over limit of [{1}], taking action to avoid an OOM error.", used,
+          LOG.error("----- WARNING !!!! - Heap used [{0}] over limit of [{1}], taking action to avoid an OOM error.", used,
               upperLimit);
           synchronized (_actions) {
             for (Action action : _actions) {
@@ -220,7 +222,7 @@ public class GCWatcher extends TimerTask {
       try {
         _instance = new GCWatcher(ratio);
       } catch (Exception e) {
-
+        LOG.error("GCWatcher had error initializing", e);
       }
     } else {
       LOG.warn("GCWatcher has already been initialized");

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/0ed107ba/blur-query/src/main/java/org/apache/blur/lucene/search/StopExecutionCollector.java
----------------------------------------------------------------------
diff --git a/blur-query/src/main/java/org/apache/blur/lucene/search/StopExecutionCollector.java b/blur-query/src/main/java/org/apache/blur/lucene/search/StopExecutionCollector.java
index d97a14f..bb6727a 100644
--- a/blur-query/src/main/java/org/apache/blur/lucene/search/StopExecutionCollector.java
+++ b/blur-query/src/main/java/org/apache/blur/lucene/search/StopExecutionCollector.java
@@ -28,9 +28,9 @@ public class StopExecutionCollector extends Collector {
 
   private static final long _5MS = TimeUnit.MILLISECONDS.toNanos(5);
 
-  private Collector _collector;
-  private AtomicBoolean _running;
-  private long last;
+  private final Collector _collector;
+  private final AtomicBoolean _running;
+  private long _last;
 
   public StopExecutionCollector(Collector collector, AtomicBoolean running) {
     _collector = collector;
@@ -47,11 +47,11 @@ public class StopExecutionCollector extends Collector {
 
   public void collect(int doc) throws IOException {
     long now = System.nanoTime();
-    if (last + _5MS < now) {
+    if (_last + _5MS < now) {
       if (!_running.get()) {
         throw new StopExecutionCollectorException();
       }
-      last = now;
+      _last = now;
     }
     _collector.collect(doc);
   }

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/0ed107ba/blur-store/src/main/java/org/apache/blur/index/ExitableReader.java
----------------------------------------------------------------------
diff --git a/blur-store/src/main/java/org/apache/blur/index/ExitableReader.java b/blur-store/src/main/java/org/apache/blur/index/ExitableReader.java
index ba60b81..9fddce4 100644
--- a/blur-store/src/main/java/org/apache/blur/index/ExitableReader.java
+++ b/blur-store/src/main/java/org/apache/blur/index/ExitableReader.java
@@ -297,6 +297,6 @@ public class ExitableReader extends FilterDirectoryReader {
 
   @Override
   public String toString() {
-    return super.toString();
+    return "ExitableReader(" + in.toString() + ")";
   }
 }

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

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/0ed107ba/blur-thrift/src/main/java/org/apache/blur/thrift/generated/Blur.java
----------------------------------------------------------------------
diff --git a/blur-thrift/src/main/java/org/apache/blur/thrift/generated/Blur.java b/blur-thrift/src/main/java/org/apache/blur/thrift/generated/Blur.java
index 88b8357..170b6f6 100644
--- a/blur-thrift/src/main/java/org/apache/blur/thrift/generated/Blur.java
+++ b/blur-thrift/src/main/java/org/apache/blur/thrift/generated/Blur.java
@@ -136,7 +136,7 @@ public class Blur {
      * @param table
      * @param blurQuery
      */
-    public BlurResults query(String table, BlurQuery blurQuery) throws BlurException, org.apache.blur.thirdparty.thrift_0_9_0.TException;
+    public BlurResults query(String table, BlurQuery blurQuery) throws BlurException, BackPressureException, org.apache.blur.thirdparty.thrift_0_9_0.TException;
 
     /**
      * Parses the given query and return the string represents the query.
@@ -194,7 +194,7 @@ public class Blur {
 
     public long recordFrequency(String table, String columnFamily, String columnName, String value) throws BlurException, org.apache.blur.thirdparty.thrift_0_9_0.TException;
 
-    public FetchResult fetchRow(String table, Selector selector) throws BlurException, org.apache.blur.thirdparty.thrift_0_9_0.TException;
+    public FetchResult fetchRow(String table, Selector selector) throws BlurException, BackPressureException, org.apache.blur.thirdparty.thrift_0_9_0.TException;
 
     public void mutate(RowMutation mutation) throws BlurException, org.apache.blur.thirdparty.thrift_0_9_0.TException;
 
@@ -507,7 +507,7 @@ public class Blur {
       throw new org.apache.blur.thirdparty.thrift_0_9_0.TApplicationException(org.apache.blur.thirdparty.thrift_0_9_0.TApplicationException.MISSING_RESULT, "describe failed: unknown result");
     }
 
-    public BlurResults query(String table, BlurQuery blurQuery) throws BlurException, org.apache.blur.thirdparty.thrift_0_9_0.TException
+    public BlurResults query(String table, BlurQuery blurQuery) throws BlurException, BackPressureException, org.apache.blur.thirdparty.thrift_0_9_0.TException
     {
       send_query(table, blurQuery);
       return recv_query();
@@ -521,7 +521,7 @@ public class Blur {
       sendBase("query", args);
     }
 
-    public BlurResults recv_query() throws BlurException, org.apache.blur.thirdparty.thrift_0_9_0.TException
+    public BlurResults recv_query() throws BlurException, BackPressureException, org.apache.blur.thirdparty.thrift_0_9_0.TException
     {
       query_result result = new query_result();
       receiveBase(result, "query");
@@ -531,6 +531,9 @@ public class Blur {
       if (result.ex != null) {
         throw result.ex;
       }
+      if (result.bpex != null) {
+        throw result.bpex;
+      }
       throw new org.apache.blur.thirdparty.thrift_0_9_0.TApplicationException(org.apache.blur.thirdparty.thrift_0_9_0.TApplicationException.MISSING_RESULT, "query failed: unknown result");
     }
 
@@ -801,7 +804,7 @@ public class Blur {
       throw new org.apache.blur.thirdparty.thrift_0_9_0.TApplicationException(org.apache.blur.thirdparty.thrift_0_9_0.TApplicationException.MISSING_RESULT, "recordFrequency failed: unknown result");
     }
 
-    public FetchResult fetchRow(String table, Selector selector) throws BlurException, org.apache.blur.thirdparty.thrift_0_9_0.TException
+    public FetchResult fetchRow(String table, Selector selector) throws BlurException, BackPressureException, org.apache.blur.thirdparty.thrift_0_9_0.TException
     {
       send_fetchRow(table, selector);
       return recv_fetchRow();
@@ -815,7 +818,7 @@ public class Blur {
       sendBase("fetchRow", args);
     }
 
-    public FetchResult recv_fetchRow() throws BlurException, org.apache.blur.thirdparty.thrift_0_9_0.TException
+    public FetchResult recv_fetchRow() throws BlurException, BackPressureException, org.apache.blur.thirdparty.thrift_0_9_0.TException
     {
       fetchRow_result result = new fetchRow_result();
       receiveBase(result, "fetchRow");
@@ -825,6 +828,9 @@ public class Blur {
       if (result.ex != null) {
         throw result.ex;
       }
+      if (result.bpex != null) {
+        throw result.bpex;
+      }
       throw new org.apache.blur.thirdparty.thrift_0_9_0.TApplicationException(org.apache.blur.thirdparty.thrift_0_9_0.TApplicationException.MISSING_RESULT, "fetchRow failed: unknown result");
     }
 
@@ -1358,7 +1364,7 @@ public class Blur {
         prot.writeMessageEnd();
       }
 
-      public BlurResults getResult() throws BlurException, org.apache.blur.thirdparty.thrift_0_9_0.TException {
+      public BlurResults getResult() throws BlurException, BackPressureException, org.apache.blur.thirdparty.thrift_0_9_0.TException {
         if (getState() != org.apache.blur.thirdparty.thrift_0_9_0.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -1743,7 +1749,7 @@ public class Blur {
         prot.writeMessageEnd();
       }
 
-      public FetchResult getResult() throws BlurException, org.apache.blur.thirdparty.thrift_0_9_0.TException {
+      public FetchResult getResult() throws BlurException, BackPressureException, org.apache.blur.thirdparty.thrift_0_9_0.TException {
         if (getState() != org.apache.blur.thirdparty.thrift_0_9_0.async.TAsyncMethodCall.State.RESPONSE_READ) {
           throw new IllegalStateException("Method call not finished!");
         }
@@ -2333,6 +2339,8 @@ public class Blur {
           result.success = iface.query(args.table, args.blurQuery);
         } catch (BlurException ex) {
           result.ex = ex;
+        } catch (BackPressureException bpex) {
+          result.bpex = bpex;
         }
         return result;
       }
@@ -2598,6 +2606,8 @@ public class Blur {
           result.success = iface.fetchRow(args.table, args.selector);
         } catch (BlurException ex) {
           result.ex = ex;
+        } catch (BackPressureException bpex) {
+          result.bpex = bpex;
         }
         return result;
       }
@@ -9908,6 +9918,7 @@ public class Blur {
 
     private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField SUCCESS_FIELD_DESC = new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("success", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT, (short)0);
     private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField EX_FIELD_DESC = new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("ex", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT, (short)1);
+    private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField BPEX_FIELD_DESC = new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("bpex", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT, (short)2);
 
     private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
     static {
@@ -9917,11 +9928,13 @@ public class Blur {
 
     public BlurResults success; // required
     public BlurException ex; // required
+    public BackPressureException bpex; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.blur.thirdparty.thrift_0_9_0.TFieldIdEnum {
       SUCCESS((short)0, "success"),
-      EX((short)1, "ex");
+      EX((short)1, "ex"),
+      BPEX((short)2, "bpex");
 
       private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -9940,6 +9953,8 @@ public class Blur {
             return SUCCESS;
           case 1: // EX
             return EX;
+          case 2: // BPEX
+            return BPEX;
           default:
             return null;
         }
@@ -9987,6 +10002,8 @@ public class Blur {
           new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.StructMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT, BlurResults.class)));
       tmpMap.put(_Fields.EX, new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldMetaData("ex", org.apache.blur.thirdparty.thrift_0_9_0.TFieldRequirementType.DEFAULT, 
           new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldValueMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT)));
+      tmpMap.put(_Fields.BPEX, new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldMetaData("bpex", org.apache.blur.thirdparty.thrift_0_9_0.TFieldRequirementType.DEFAULT, 
+          new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldValueMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT)));
       metaDataMap = Collections.unmodifiableMap(tmpMap);
       org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldMetaData.addStructMetaDataMap(query_result.class, metaDataMap);
     }
@@ -9996,11 +10013,13 @@ public class Blur {
 
     public query_result(
       BlurResults success,
-      BlurException ex)
+      BlurException ex,
+      BackPressureException bpex)
     {
       this();
       this.success = success;
       this.ex = ex;
+      this.bpex = bpex;
     }
 
     /**
@@ -10013,6 +10032,9 @@ public class Blur {
       if (other.isSetEx()) {
         this.ex = new BlurException(other.ex);
       }
+      if (other.isSetBpex()) {
+        this.bpex = new BackPressureException(other.bpex);
+      }
     }
 
     public query_result deepCopy() {
@@ -10023,6 +10045,7 @@ public class Blur {
     public void clear() {
       this.success = null;
       this.ex = null;
+      this.bpex = null;
     }
 
     public BlurResults getSuccess() {
@@ -10073,6 +10096,30 @@ public class Blur {
       }
     }
 
+    public BackPressureException getBpex() {
+      return this.bpex;
+    }
+
+    public query_result setBpex(BackPressureException bpex) {
+      this.bpex = bpex;
+      return this;
+    }
+
+    public void unsetBpex() {
+      this.bpex = null;
+    }
+
+    /** Returns true if field bpex is set (has been assigned a value) and false otherwise */
+    public boolean isSetBpex() {
+      return this.bpex != null;
+    }
+
+    public void setBpexIsSet(boolean value) {
+      if (!value) {
+        this.bpex = null;
+      }
+    }
+
     public void setFieldValue(_Fields field, Object value) {
       switch (field) {
       case SUCCESS:
@@ -10091,6 +10138,14 @@ public class Blur {
         }
         break;
 
+      case BPEX:
+        if (value == null) {
+          unsetBpex();
+        } else {
+          setBpex((BackPressureException)value);
+        }
+        break;
+
       }
     }
 
@@ -10102,6 +10157,9 @@ public class Blur {
       case EX:
         return getEx();
 
+      case BPEX:
+        return getBpex();
+
       }
       throw new IllegalStateException();
     }
@@ -10117,6 +10175,8 @@ public class Blur {
         return isSetSuccess();
       case EX:
         return isSetEx();
+      case BPEX:
+        return isSetBpex();
       }
       throw new IllegalStateException();
     }
@@ -10152,6 +10212,15 @@ public class Blur {
           return false;
       }
 
+      boolean this_present_bpex = true && this.isSetBpex();
+      boolean that_present_bpex = true && that.isSetBpex();
+      if (this_present_bpex || that_present_bpex) {
+        if (!(this_present_bpex && that_present_bpex))
+          return false;
+        if (!this.bpex.equals(that.bpex))
+          return false;
+      }
+
       return true;
     }
 
@@ -10188,6 +10257,16 @@ public class Blur {
           return lastComparison;
         }
       }
+      lastComparison = Boolean.valueOf(isSetBpex()).compareTo(typedOther.isSetBpex());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetBpex()) {
+        lastComparison = org.apache.blur.thirdparty.thrift_0_9_0.TBaseHelper.compareTo(this.bpex, typedOther.bpex);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
       return 0;
     }
 
@@ -10223,6 +10302,14 @@ public class Blur {
         sb.append(this.ex);
       }
       first = false;
+      if (!first) sb.append(", ");
+      sb.append("bpex:");
+      if (this.bpex == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.bpex);
+      }
+      first = false;
       sb.append(")");
       return sb.toString();
     }
@@ -10287,6 +10374,15 @@ public class Blur {
                 org.apache.blur.thirdparty.thrift_0_9_0.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
+            case 2: // BPEX
+              if (schemeField.type == org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT) {
+                struct.bpex = new BackPressureException();
+                struct.bpex.read(iprot);
+                struct.setBpexIsSet(true);
+              } else { 
+                org.apache.blur.thirdparty.thrift_0_9_0.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
             default:
               org.apache.blur.thirdparty.thrift_0_9_0.protocol.TProtocolUtil.skip(iprot, schemeField.type);
           }
@@ -10312,6 +10408,11 @@ public class Blur {
           struct.ex.write(oprot);
           oprot.writeFieldEnd();
         }
+        if (struct.bpex != null) {
+          oprot.writeFieldBegin(BPEX_FIELD_DESC);
+          struct.bpex.write(oprot);
+          oprot.writeFieldEnd();
+        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
@@ -10336,19 +10437,25 @@ public class Blur {
         if (struct.isSetEx()) {
           optionals.set(1);
         }
-        oprot.writeBitSet(optionals, 2);
+        if (struct.isSetBpex()) {
+          optionals.set(2);
+        }
+        oprot.writeBitSet(optionals, 3);
         if (struct.isSetSuccess()) {
           struct.success.write(oprot);
         }
         if (struct.isSetEx()) {
           struct.ex.write(oprot);
         }
+        if (struct.isSetBpex()) {
+          struct.bpex.write(oprot);
+        }
       }
 
       @Override
       public void read(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TProtocol prot, query_result struct) throws org.apache.blur.thirdparty.thrift_0_9_0.TException {
         TTupleProtocol iprot = (TTupleProtocol) prot;
-        BitSet incoming = iprot.readBitSet(2);
+        BitSet incoming = iprot.readBitSet(3);
         if (incoming.get(0)) {
           struct.success = new BlurResults();
           struct.success.read(iprot);
@@ -10359,6 +10466,11 @@ public class Blur {
           struct.ex.read(iprot);
           struct.setExIsSet(true);
         }
+        if (incoming.get(2)) {
+          struct.bpex = new BackPressureException();
+          struct.bpex.read(iprot);
+          struct.setBpexIsSet(true);
+        }
       }
     }
 
@@ -20005,6 +20117,7 @@ public class Blur {
 
     private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField SUCCESS_FIELD_DESC = new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("success", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT, (short)0);
     private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField EX_FIELD_DESC = new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("ex", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT, (short)1);
+    private static final org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField BPEX_FIELD_DESC = new org.apache.blur.thirdparty.thrift_0_9_0.protocol.TField("bpex", org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT, (short)2);
 
     private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
     static {
@@ -20014,11 +20127,13 @@ public class Blur {
 
     public FetchResult success; // required
     public BlurException ex; // required
+    public BackPressureException bpex; // required
 
     /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
     public enum _Fields implements org.apache.blur.thirdparty.thrift_0_9_0.TFieldIdEnum {
       SUCCESS((short)0, "success"),
-      EX((short)1, "ex");
+      EX((short)1, "ex"),
+      BPEX((short)2, "bpex");
 
       private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -20037,6 +20152,8 @@ public class Blur {
             return SUCCESS;
           case 1: // EX
             return EX;
+          case 2: // BPEX
+            return BPEX;
           default:
             return null;
         }
@@ -20084,6 +20201,8 @@ public class Blur {
           new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.StructMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT, FetchResult.class)));
       tmpMap.put(_Fields.EX, new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldMetaData("ex", org.apache.blur.thirdparty.thrift_0_9_0.TFieldRequirementType.DEFAULT, 
           new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldValueMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT)));
+      tmpMap.put(_Fields.BPEX, new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldMetaData("bpex", org.apache.blur.thirdparty.thrift_0_9_0.TFieldRequirementType.DEFAULT, 
+          new org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldValueMetaData(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT)));
       metaDataMap = Collections.unmodifiableMap(tmpMap);
       org.apache.blur.thirdparty.thrift_0_9_0.meta_data.FieldMetaData.addStructMetaDataMap(fetchRow_result.class, metaDataMap);
     }
@@ -20093,11 +20212,13 @@ public class Blur {
 
     public fetchRow_result(
       FetchResult success,
-      BlurException ex)
+      BlurException ex,
+      BackPressureException bpex)
     {
       this();
       this.success = success;
       this.ex = ex;
+      this.bpex = bpex;
     }
 
     /**
@@ -20110,6 +20231,9 @@ public class Blur {
       if (other.isSetEx()) {
         this.ex = new BlurException(other.ex);
       }
+      if (other.isSetBpex()) {
+        this.bpex = new BackPressureException(other.bpex);
+      }
     }
 
     public fetchRow_result deepCopy() {
@@ -20120,6 +20244,7 @@ public class Blur {
     public void clear() {
       this.success = null;
       this.ex = null;
+      this.bpex = null;
     }
 
     public FetchResult getSuccess() {
@@ -20170,6 +20295,30 @@ public class Blur {
       }
     }
 
+    public BackPressureException getBpex() {
+      return this.bpex;
+    }
+
+    public fetchRow_result setBpex(BackPressureException bpex) {
+      this.bpex = bpex;
+      return this;
+    }
+
+    public void unsetBpex() {
+      this.bpex = null;
+    }
+
+    /** Returns true if field bpex is set (has been assigned a value) and false otherwise */
+    public boolean isSetBpex() {
+      return this.bpex != null;
+    }
+
+    public void setBpexIsSet(boolean value) {
+      if (!value) {
+        this.bpex = null;
+      }
+    }
+
     public void setFieldValue(_Fields field, Object value) {
       switch (field) {
       case SUCCESS:
@@ -20188,6 +20337,14 @@ public class Blur {
         }
         break;
 
+      case BPEX:
+        if (value == null) {
+          unsetBpex();
+        } else {
+          setBpex((BackPressureException)value);
+        }
+        break;
+
       }
     }
 
@@ -20199,6 +20356,9 @@ public class Blur {
       case EX:
         return getEx();
 
+      case BPEX:
+        return getBpex();
+
       }
       throw new IllegalStateException();
     }
@@ -20214,6 +20374,8 @@ public class Blur {
         return isSetSuccess();
       case EX:
         return isSetEx();
+      case BPEX:
+        return isSetBpex();
       }
       throw new IllegalStateException();
     }
@@ -20249,6 +20411,15 @@ public class Blur {
           return false;
       }
 
+      boolean this_present_bpex = true && this.isSetBpex();
+      boolean that_present_bpex = true && that.isSetBpex();
+      if (this_present_bpex || that_present_bpex) {
+        if (!(this_present_bpex && that_present_bpex))
+          return false;
+        if (!this.bpex.equals(that.bpex))
+          return false;
+      }
+
       return true;
     }
 
@@ -20285,6 +20456,16 @@ public class Blur {
           return lastComparison;
         }
       }
+      lastComparison = Boolean.valueOf(isSetBpex()).compareTo(typedOther.isSetBpex());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetBpex()) {
+        lastComparison = org.apache.blur.thirdparty.thrift_0_9_0.TBaseHelper.compareTo(this.bpex, typedOther.bpex);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
       return 0;
     }
 
@@ -20320,6 +20501,14 @@ public class Blur {
         sb.append(this.ex);
       }
       first = false;
+      if (!first) sb.append(", ");
+      sb.append("bpex:");
+      if (this.bpex == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.bpex);
+      }
+      first = false;
       sb.append(")");
       return sb.toString();
     }
@@ -20384,6 +20573,15 @@ public class Blur {
                 org.apache.blur.thirdparty.thrift_0_9_0.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
+            case 2: // BPEX
+              if (schemeField.type == org.apache.blur.thirdparty.thrift_0_9_0.protocol.TType.STRUCT) {
+                struct.bpex = new BackPressureException();
+                struct.bpex.read(iprot);
+                struct.setBpexIsSet(true);
+              } else { 
+                org.apache.blur.thirdparty.thrift_0_9_0.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
             default:
               org.apache.blur.thirdparty.thrift_0_9_0.protocol.TProtocolUtil.skip(iprot, schemeField.type);
           }
@@ -20409,6 +20607,11 @@ public class Blur {
           struct.ex.write(oprot);
           oprot.writeFieldEnd();
         }
+        if (struct.bpex != null) {
+          oprot.writeFieldBegin(BPEX_FIELD_DESC);
+          struct.bpex.write(oprot);
+          oprot.writeFieldEnd();
+        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
@@ -20433,19 +20636,25 @@ public class Blur {
         if (struct.isSetEx()) {
           optionals.set(1);
         }
-        oprot.writeBitSet(optionals, 2);
+        if (struct.isSetBpex()) {
+          optionals.set(2);
+        }
+        oprot.writeBitSet(optionals, 3);
         if (struct.isSetSuccess()) {
           struct.success.write(oprot);
         }
         if (struct.isSetEx()) {
           struct.ex.write(oprot);
         }
+        if (struct.isSetBpex()) {
+          struct.bpex.write(oprot);
+        }
       }
 
       @Override
       public void read(org.apache.blur.thirdparty.thrift_0_9_0.protocol.TProtocol prot, fetchRow_result struct) throws org.apache.blur.thirdparty.thrift_0_9_0.TException {
         TTupleProtocol iprot = (TTupleProtocol) prot;
-        BitSet incoming = iprot.readBitSet(2);
+        BitSet incoming = iprot.readBitSet(3);
         if (incoming.get(0)) {
           struct.success = new FetchResult();
           struct.success.read(iprot);
@@ -20456,6 +20665,11 @@ public class Blur {
           struct.ex.read(iprot);
           struct.setExIsSet(true);
         }
+        if (incoming.get(2)) {
+          struct.bpex = new BackPressureException();
+          struct.bpex.read(iprot);
+          struct.setBpexIsSet(true);
+        }
       }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/0ed107ba/blur-thrift/src/main/java/org/apache/blur/thrift/generated/QueryState.java
----------------------------------------------------------------------
diff --git a/blur-thrift/src/main/java/org/apache/blur/thrift/generated/QueryState.java b/blur-thrift/src/main/java/org/apache/blur/thrift/generated/QueryState.java
index d721550..25b02bc 100644
--- a/blur-thrift/src/main/java/org/apache/blur/thrift/generated/QueryState.java
+++ b/blur-thrift/src/main/java/org/apache/blur/thrift/generated/QueryState.java
@@ -39,7 +39,8 @@ import org.apache.blur.thirdparty.thrift_0_9_0.TEnum;
 public enum QueryState implements org.apache.blur.thirdparty.thrift_0_9_0.TEnum {
   RUNNING(0),
   INTERRUPTED(1),
-  COMPLETE(2);
+  COMPLETE(2),
+  BACK_PRESSURE_INTERRUPTED(3);
 
   private final int value;
 
@@ -66,6 +67,8 @@ public enum QueryState implements org.apache.blur.thirdparty.thrift_0_9_0.TEnum
         return INTERRUPTED;
       case 2:
         return COMPLETE;
+      case 3:
+        return BACK_PRESSURE_INTERRUPTED;
       default:
         return null;
     }

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/0ed107ba/distribution/src/main/scripts/interface/Blur.thrift
----------------------------------------------------------------------
diff --git a/distribution/src/main/scripts/interface/Blur.thrift b/distribution/src/main/scripts/interface/Blur.thrift
index 0c8fff1..c1a8d98 100644
--- a/distribution/src/main/scripts/interface/Blur.thrift
+++ b/distribution/src/main/scripts/interface/Blur.thrift
@@ -36,6 +36,16 @@ exception BlurException {
 }
 
 /** 
+  * BackPressureException that carries a message.
+  */
+exception BackPressureException {
+  /** 
+   * The message in the exception. 
+   */
+  1:string message
+}
+
+/** 
   * The scoring type used during a SuperQuery to score multi Record hits within a ColumnFamily.<br/><br/>
   * SUPER - During a multi Record match, a calculation of the best match Record plus how often it occurs within the match Row produces the score that is used in the scoring of the SuperQuery.<br/><br/>
   * AGGREGATE - During a multi Record match, the aggregate score of all the Records within a ColumnFamily is used in the scoring of the SuperQuery.<br/><br/>
@@ -58,7 +68,8 @@ enum ScoreType {
 enum QueryState {
   RUNNING,
   INTERRUPTED,
-  COMPLETE
+  COMPLETE,
+  BACK_PRESSURE_INTERRUPTED
 }
 
 /**
@@ -767,7 +778,7 @@ service Blur {
    * @param table the table name.
    * @param blurQuery the query to execute.
    */
-  BlurResults query(1:string table, 2:BlurQuery blurQuery) throws (1:BlurException ex)
+  BlurResults query(1:string table, 2:BlurQuery blurQuery) throws (1:BlurException ex, 2:BackPressureException bpex)
 
   /**
    * Parses the given query and return the string represents the query.
@@ -807,7 +818,7 @@ service Blur {
   list<string> terms(1:string table, 2:string columnFamily, 3:string columnName, 4:string startWith, 5:i16 size) throws (1:BlurException ex)
   i64 recordFrequency(1:string table, 2:string columnFamily, 3:string columnName, 4:string value) throws (1:BlurException ex)
 
-  FetchResult fetchRow(1:string table, 2:Selector selector) throws (1:BlurException ex)
+  FetchResult fetchRow(1:string table, 2:Selector selector) throws (1:BlurException ex, 2:BackPressureException bpex)
 
   void mutate(1:RowMutation mutation) throws (1:BlurException ex)
   void mutateBatch(1:list<RowMutation> mutations) throws (1:BlurException ex)

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/0ed107ba/distribution/src/main/scripts/interface/gen-html/Blur.html
----------------------------------------------------------------------
diff --git a/distribution/src/main/scripts/interface/gen-html/Blur.html b/distribution/src/main/scripts/interface/gen-html/Blur.html
index f91ed0d..bd033ed 100644
--- a/distribution/src/main/scripts/interface/gen-html/Blur.html
+++ b/distribution/src/main/scripts/interface/gen-html/Blur.html
@@ -45,6 +45,7 @@
 </td>
 <td><a href="Blur.html#Struct_AlternateColumnDefinition">AlternateColumnDefinition</a><br/>
 <a href="Blur.html#Struct_AnalyzerDefinition">AnalyzerDefinition</a><br/>
+<a href="Blur.html#Struct_BackPressureException">BackPressureException</a><br/>
 <a href="Blur.html#Struct_BlurException">BlurException</a><br/>
 <a href="Blur.html#Struct_BlurQuery">BlurQuery</a><br/>
 <a href="Blur.html#Struct_BlurQueryStatus">BlurQueryStatus</a><br/>
@@ -101,6 +102,7 @@ COMPLETE - Query is complete.<br/>
 <tr><td><code>RUNNING</code></td><td><code>0</code></td></tr>
 <tr><td><code>INTERRUPTED</code></td><td><code>1</code></td></tr>
 <tr><td><code>COMPLETE</code></td><td><code>2</code></td></tr>
+<tr><td><code>BACK_PRESSURE_INTERRUPTED</code></td><td><code>3</code></td></tr>
 </table></div>
 <div class="definition"><h3 id="Enum_RowMutationType">Enumeration: RowMutationType</h3>
 Specifies the type of Row mutation that should occur during a mutation of a given Row.<br/><br/>
@@ -143,6 +145,11 @@ See shardServerLayoutOptions method in the Blur service for details.
 </td><td>default</td><td></td></tr>
 </table><br/>BlurException that carries a message plus the original stack
 trace (if any).
+<br/></div><div class="definition"><h3 id="Struct_BackPressureException">Exception: BackPressureException</h3>
+<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
+<tr><td>1</td><td>message</td><td><code>string</code></td><td>The message in the exception.
+</td><td>default</td><td></td></tr>
+</table><br/>BackPressureException that carries a message.
 <br/></div><div class="definition"><h3 id="Struct_Column">Struct: Column</h3>
 <table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>name</td><td><code>string</code></td><td>The name of the column.
@@ -517,7 +524,7 @@ the shard given the same situation.
 <br/></div><div class="definition"><h4 id="Fn_Blur_query">Function: Blur.query</h4>
 <pre><code><a href="Blur.html#Struct_BlurResults">BlurResults</a></code> query(<code>string</code> table,
                   <code><a href="Blur.html#Struct_BlurQuery">BlurQuery</a></code> blurQuery)
-    throws <code><a href="Blur.html#Struct_BlurException">BlurException</a></code>
+    throws <code><a href="Blur.html#Struct_BlurException">BlurException</a></code>, <code><a href="Blur.html#Struct_BackPressureException">BackPressureException</a></code>
 </pre>Executes a query against a the given table and returns the results.  If this method is executed against a controller the results will contain the aggregated results from all the shards.  If this method is executed against a shard server the results will only contain aggregated results from the shards of the given table that are being served on the shard server, if any.
 @param table the table name.
 @param blurQuery the query to execute.
@@ -577,7 +584,7 @@ the shard given the same situation.
 </pre></div><div class="definition"><h4 id="Fn_Blur_fetchRow">Function: Blur.fetchRow</h4>
 <pre><code><a href="Blur.html#Struct_FetchResult">FetchResult</a></code> fetchRow(<code>string</code> table,
                      <code><a href="Blur.html#Struct_Selector">Selector</a></code> selector)
-    throws <code><a href="Blur.html#Struct_BlurException">BlurException</a></code>
+    throws <code><a href="Blur.html#Struct_BlurException">BlurException</a></code>, <code><a href="Blur.html#Struct_BackPressureException">BackPressureException</a></code>
 </pre></div><div class="definition"><h4 id="Fn_Blur_mutate">Function: Blur.mutate</h4>
 <pre><code>void</code> mutate(<code><a href="Blur.html#Struct_RowMutation">RowMutation</a></code> mutation)
     throws <code><a href="Blur.html#Struct_BlurException">BlurException</a></code>

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/0ed107ba/distribution/src/main/scripts/interface/gen-html/index.html
----------------------------------------------------------------------
diff --git a/distribution/src/main/scripts/interface/gen-html/index.html b/distribution/src/main/scripts/interface/gen-html/index.html
index f5836f7..232e0e4 100644
--- a/distribution/src/main/scripts/interface/gen-html/index.html
+++ b/distribution/src/main/scripts/interface/gen-html/index.html
@@ -41,6 +41,7 @@
 </td>
 <td><a href="Blur.html#Struct_AlternateColumnDefinition">AlternateColumnDefinition</a><br/>
 <a href="Blur.html#Struct_AnalyzerDefinition">AnalyzerDefinition</a><br/>
+<a href="Blur.html#Struct_BackPressureException">BackPressureException</a><br/>
 <a href="Blur.html#Struct_BlurException">BlurException</a><br/>
 <a href="Blur.html#Struct_BlurQuery">BlurQuery</a><br/>
 <a href="Blur.html#Struct_BlurQueryStatus">BlurQueryStatus</a><br/>

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


Mime
View raw message