You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2017/11/01 15:17:29 UTC

[40/51] [partial] hbase-site git commit: Published site at .

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/93ae3fc9/devapidocs/org/apache/hadoop/hbase/coprocessor/ObserverContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/ObserverContext.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/ObserverContext.html
index bbd6733..5b974cd 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/ObserverContext.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/ObserverContext.html
@@ -106,7 +106,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <dl>
 <dt>All Known Implementing Classes:</dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverOperation</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverOperationWithoutResult</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverOperationWithResult</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.MasterObserverOperation.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost.MasterObserverOperation</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContextImpl</a>, <
 a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.BulkLoadObserverOperation.html" title="class in org.apache.hadoop.hbase.regionserver">RegionCoprocessorHost.BulkLoadObserverOperation</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.RegionObserverOperation.html" title="class in org.apache.hadoop.hbase.regionserver">RegionCoprocessorHost.RegionObserverOperation</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerObserverOperation.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost.RegionServerObserverOperation</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.WALObserverOperation.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALCoprocessorHost.WALObserverOperation</a></dd>
+<dd><a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverOperation</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithoutResult.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverOperationWithoutResult</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperationWithResult.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost.ObserverOperationWithResult</a>, <a href="../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.MasterObserverOperation.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost.MasterObserverOperation</a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html" title="class in org.apache.hadoop.hbase.coprocessor">ObserverContextImpl</a>, <
 a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.BulkLoadObserverOperation.html" title="class in org.apache.hadoop.hbase.regionserver">RegionCoprocessorHost.BulkLoadObserverOperation</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.RegionObserverOperationWithoutResult.html" title="class in org.apache.hadoop.hbase.regionserver">RegionCoprocessorHost.RegionObserverOperationWithoutResult</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerObserverOperation.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost.RegionServerObserverOperation</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.WALObserverOperation.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALCoprocessorHost.WALObserverOperation</a></dd>
 </dl>
 <hr>
 <br>
@@ -115,10 +115,10 @@ var activeTableTab = "activeTableTab";
 public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContext.html#line.40">ObserverContext</a>&lt;E extends <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&gt;</pre>
 <div class="block">Carries the execution state for a given invocation of an Observer coprocessor
  (<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html" title="interface in org.apache.hadoop.hbase.coprocessor"><code>RegionObserver</code></a>, <a href="../../../../../org/apache/hadoop/hbase/coprocessor/MasterObserver.html" title="interface in org.apache.hadoop.hbase.coprocessor"><code>MasterObserver</code></a>, or <a href="../../../../../org/apache/hadoop/hbase/coprocessor/WALObserver.html" title="interface in org.apache.hadoop.hbase.coprocessor"><code>WALObserver</code></a>)
- method.  The same ObserverContext instance is passed sequentially to all loaded
+ method. The same ObserverContext instance is passed sequentially to all loaded
  coprocessors for a given Observer method trigger, with the
- <code>CoprocessorEnvironment</code> reference swapped out for each
- coprocessor.</div>
+ <code>CoprocessorEnvironment</code> reference set appropriately for each Coprocessor type:
+ e.g. the RegionCoprocessorEnvironment is passed to RegionCoprocessors, and so on.</div>
 </li>
 </ul>
 </div>
@@ -140,15 +140,16 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/coproc
 <tr id="i0" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html#bypass--">bypass</a></span>()</code>
-<div class="block">Call to indicate that the current coprocessor's return value should be
- used in place of the normal HBase obtained value.</div>
+<div class="block">Call to indicate that the current coprocessor's return value (or parameter -- depends on the
+ call-type) should be used in place of the value that would be obtained via normal processing;
+ i.e.</div>
 </td>
 </tr>
 <tr id="i1" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html#complete--">complete</a></span>()</code>
-<div class="block">Call to indicate that additional coprocessors further down the execution
- chain do not need to be invoked.</div>
+<div class="block">Call to skip out on calling remaining coprocessors in current execution chain (there may be
+ more than one coprocessor chained to a method call).</div>
 </td>
 </tr>
 <tr id="i2" class="altColor">
@@ -191,9 +192,32 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/coproc
 <ul class="blockList">
 <li class="blockList">
 <h4>bypass</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContext.html#line.47">bypass</a>()</pre>
-<div class="block">Call to indicate that the current coprocessor's return value should be
- used in place of the normal HBase obtained value.</div>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContext.html#line.67">bypass</a>()</pre>
+<div class="block">Call to indicate that the current coprocessor's return value (or parameter -- depends on the
+ call-type) should be used in place of the value that would be obtained via normal processing;
+ i.e. bypass the core call and return the Coprocessor's result instead. DOES NOT work for all
+ Coprocessor invocations, only on a small subset of methods, mostly preXXX calls in
+ RegionObserver. Check javadoc on the pertinent Coprocessor Observer to see if
+ <code>bypass</code> is supported.
+ <p>This behavior of honoring only a subset of methods is new since hbase-2.0.0.
+ <p>Where bypass is supported what is being bypassed is all of the core code
+ implementing the remainder of the operation. In order to understand what
+ calling bypass() will skip, a coprocessor implementer should read and
+ understand all of the remaining code and its nuances. Although this
+ is good practice for coprocessor developers in general, it demands a lot.
+ What is skipped is extremely version dependent. The core code will vary, perhaps significantly,
+ even between point releases. We do not provide the promise of consistent behavior even between
+ point releases for the bypass semantic. To achieve
+ that we could not change any code between hook points. Therefore the
+ coprocessor implementer becomes an HBase core developer in practice as soon
+ as they rely on bypass(). Every release of HBase may break the assumption
+ that the replacement for the bypassed code takes care of all necessary
+ skipped concerns. Because those concerns can change at any point, such an
+ assumption is never safe.</p></div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html#complete--"><code>complete()</code></a></dd>
+</dl>
 </li>
 </ul>
 <a name="complete--">
@@ -202,10 +226,17 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/coproc
 <ul class="blockList">
 <li class="blockList">
 <h4>complete</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContext.html#line.54">complete</a>()</pre>
-<div class="block">Call to indicate that additional coprocessors further down the execution
- chain do not need to be invoked.  Implies that this coprocessor's response
- is definitive.</div>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContext.html#line.78">complete</a>()</pre>
+<div class="block">Call to skip out on calling remaining coprocessors in current execution chain (there may be
+ more than one coprocessor chained to a method call). Implies that this coprocessor's response
+ is definitive.
+ <p>Since hbase-2.0.0, only <code>complete</code> of 'bypassable' methods has an effect. See
+ javadoc on the Coprocessor Observer method as to whether bypass (and thereby 'complete') is
+ supported. This behavior of honoring only a subset of methods is new since hbase-2.0.0.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html#bypass--"><code>bypass()</code></a></dd>
+</dl>
 </li>
 </ul>
 <a name="getCaller--">
@@ -214,7 +245,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/coproc
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getCaller</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContext.html#line.62">getCaller</a>()</pre>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContext.html#line.86">getCaller</a>()</pre>
 <div class="block">Returns the active user for the coprocessor call. If an explicit <code>User</code> instance was
  provided to the constructor, that will be returned, otherwise if we are in the context of an
  RPC call, the remote user is used. May not be present if the execution is outside of an RPC

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/93ae3fc9/devapidocs/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html
index 65311d5..d69eb5e 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":41,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10};
+var methods = {"i0":10,"i1":10,"i2":41,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -146,12 +146,24 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverC
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#bypass">bypass</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#bypassable">bypassable</a></span></code>
+<div class="block">Is this operation bypassable?</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#caller">caller</a></span></code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#completable">completable</a></span></code>&nbsp;</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#complete">complete</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#complete">complete</a></span></code>
+<div class="block">Is this operation completable?</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html" title="type parameter in ObserverContextImpl">E</a></code></td>
@@ -174,6 +186,11 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverC
 <tr class="altColor">
 <td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#ObserverContextImpl-org.apache.hadoop.hbase.security.User-">ObserverContextImpl</a></span>(<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;caller)</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#ObserverContextImpl-org.apache.hadoop.hbase.security.User-boolean-boolean-">ObserverContextImpl</a></span>(<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;caller,
+                   boolean&nbsp;bypassable,
+                   boolean&nbsp;completable)</code>&nbsp;</td>
+</tr>
 </table>
 </li>
 </ul>
@@ -192,15 +209,16 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverC
 <tr id="i0" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#bypass--">bypass</a></span>()</code>
-<div class="block">Call to indicate that the current coprocessor's return value should be
- used in place of the normal HBase obtained value.</div>
+<div class="block">Call to indicate that the current coprocessor's return value (or parameter -- depends on the
+ call-type) should be used in place of the value that would be obtained via normal processing;
+ i.e.</div>
 </td>
 </tr>
 <tr id="i1" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#complete--">complete</a></span>()</code>
-<div class="block">Call to indicate that additional coprocessors further down the execution
- chain do not need to be invoked.</div>
+<div class="block">Call to skip out on calling remaining coprocessors in current execution chain (there may be
+ more than one coprocessor chained to a method call).</div>
 </td>
 </tr>
 <tr id="i2" class="altColor">
@@ -220,14 +238,22 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverC
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#getEnvironment--">getEnvironment</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i5" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#isBypassable--">isBypassable</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#isCompleable--">isCompleable</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#prepare-E-">prepare</a></span>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html" title="type parameter in ObserverContextImpl">E</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#shouldBypass--">shouldBypass</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#shouldComplete--">shouldComplete</a></span>()</code>&nbsp;</td>
 </tr>
@@ -271,13 +297,33 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverC
 <pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.37">bypass</a></pre>
 </li>
 </ul>
+<a name="bypassable">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>bypassable</h4>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.41">bypassable</a></pre>
+<div class="block">Is this operation bypassable?</div>
+</li>
+</ul>
 <a name="complete">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>complete</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.38">complete</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.45">complete</a></pre>
+<div class="block">Is this operation completable?</div>
+</li>
+</ul>
+<a name="completable">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>completable</h4>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.46">completable</a></pre>
 </li>
 </ul>
 <a name="caller">
@@ -286,7 +332,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverC
 <ul class="blockListLast">
 <li class="blockList">
 <h4>caller</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.39">caller</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.47">caller</a></pre>
 </li>
 </ul>
 </li>
@@ -300,10 +346,21 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverC
 <a name="ObserverContextImpl-org.apache.hadoop.hbase.security.User-">
 <!--   -->
 </a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ObserverContextImpl</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.49">ObserverContextImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;caller)</pre>
+</li>
+</ul>
+<a name="ObserverContextImpl-org.apache.hadoop.hbase.security.User-boolean-boolean-">
+<!--   -->
+</a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ObserverContextImpl</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.41">ObserverContextImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;caller)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.53">ObserverContextImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;caller,
+                           boolean&nbsp;bypassable,
+                           boolean&nbsp;completable)</pre>
 </li>
 </ul>
 </li>
@@ -320,7 +377,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverC
 <ul class="blockList">
 <li class="blockList">
 <h4>getEnvironment</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html" title="type parameter in ObserverContextImpl">E</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.45">getEnvironment</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html" title="type parameter in ObserverContextImpl">E</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.59">getEnvironment</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html#getEnvironment--">getEnvironment</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="interface in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html" title="type parameter in ObserverContextImpl">E</a> extends <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&gt;</code></dd>
@@ -335,7 +392,16 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverC
 <ul class="blockList">
 <li class="blockList">
 <h4>prepare</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.49">prepare</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html" title="type parameter in ObserverContextImpl">E</a>&nbsp;env)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.63">prepare</a>(<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html" title="type parameter in ObserverContextImpl">E</a>&nbsp;env)</pre>
+</li>
+</ul>
+<a name="isBypassable--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isBypassable</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.67">isBypassable</a>()</pre>
 </li>
 </ul>
 <a name="bypass--">
@@ -344,30 +410,65 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverC
 <ul class="blockList">
 <li class="blockList">
 <h4>bypass</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.53">bypass</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.71">bypass</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html#bypass--">ObserverContext</a></code></span></div>
-<div class="block">Call to indicate that the current coprocessor's return value should be
- used in place of the normal HBase obtained value.</div>
+<div class="block">Call to indicate that the current coprocessor's return value (or parameter -- depends on the
+ call-type) should be used in place of the value that would be obtained via normal processing;
+ i.e. bypass the core call and return the Coprocessor's result instead. DOES NOT work for all
+ Coprocessor invocations, only on a small subset of methods, mostly preXXX calls in
+ RegionObserver. Check javadoc on the pertinent Coprocessor Observer to see if
+ <code>bypass</code> is supported.
+ <p>This behavior of honoring only a subset of methods is new since hbase-2.0.0.
+ <p>Where bypass is supported what is being bypassed is all of the core code
+ implementing the remainder of the operation. In order to understand what
+ calling bypass() will skip, a coprocessor implementer should read and
+ understand all of the remaining code and its nuances. Although this
+ is good practice for coprocessor developers in general, it demands a lot.
+ What is skipped is extremely version dependent. The core code will vary, perhaps significantly,
+ even between point releases. We do not provide the promise of consistent behavior even between
+ point releases for the bypass semantic. To achieve
+ that we could not change any code between hook points. Therefore the
+ coprocessor implementer becomes an HBase core developer in practice as soon
+ as they rely on bypass(). Every release of HBase may break the assumption
+ that the replacement for the bypassed code takes care of all necessary
+ skipped concerns. Because those concerns can change at any point, such an
+ assumption is never safe.</p></div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html#bypass--">bypass</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="interface in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html" title="type parameter in ObserverContextImpl">E</a> extends <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&gt;</code></dd>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html#complete--"><code>ObserverContext.complete()</code></a></dd>
 </dl>
 </li>
 </ul>
+<a name="isCompleable--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isCompleable</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.78">isCompleable</a>()</pre>
+</li>
+</ul>
 <a name="complete--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>complete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.57">complete</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.82">complete</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html#complete--">ObserverContext</a></code></span></div>
-<div class="block">Call to indicate that additional coprocessors further down the execution
- chain do not need to be invoked.  Implies that this coprocessor's response
- is definitive.</div>
+<div class="block">Call to skip out on calling remaining coprocessors in current execution chain (there may be
+ more than one coprocessor chained to a method call). Implies that this coprocessor's response
+ is definitive.
+ <p>Since hbase-2.0.0, only <code>complete</code> of 'bypassable' methods has an effect. See
+ javadoc on the Coprocessor Observer method as to whether bypass (and thereby 'complete') is
+ supported. This behavior of honoring only a subset of methods is new since hbase-2.0.0.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html#complete--">complete</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="interface in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html" title="type parameter in ObserverContextImpl">E</a> extends <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&gt;</code></dd>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html#bypass--"><code>ObserverContext.bypass()</code></a></dd>
 </dl>
 </li>
 </ul>
@@ -377,7 +478,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverC
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldBypass</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.65">shouldBypass</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.93">shouldBypass</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd><code>true</code>, if <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html#bypass--"><code>ObserverContext.bypass()</code></a> was called by one of the loaded
@@ -391,7 +492,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverC
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldComplete</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.77">shouldComplete</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.108">shouldComplete</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd><code>true</code>, if <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html#complete--"><code>ObserverContext.complete()</code></a> was called by one of the loaded
@@ -405,7 +506,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverC
 <ul class="blockList">
 <li class="blockList">
 <h4>getCaller</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.85">getCaller</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.119">getCaller</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html#getCaller--">ObserverContext</a></code></span></div>
 <div class="block">Returns the active user for the coprocessor call. If an explicit <code>User</code> instance was
  provided to the constructor, that will be returned, otherwise if we are in the context of an
@@ -426,7 +527,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverC
 <li class="blockList">
 <h4>createAndPrepare</h4>
 <pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;&lt;E extends <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&gt;&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="interface in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;E&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.100">createAndPrepare</a>(E&nbsp;env)</pre>
+public static&nbsp;&lt;E extends <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&gt;&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="interface in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;E&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html#line.134">createAndPrepare</a>(E&nbsp;env)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block">Instantiates a new ObserverContext instance if the passed reference is <code>null</code> and
  sets the environment in the new or existing instance. This allows deferring the instantiation