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/08/10 15:06:53 UTC

[46/46] hbase-site git commit: Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.

Published site at 82d554e3783372cc6b05489452c815b57c06f6cd.


Project: http://git-wip-us.apache.org/repos/asf/hbase-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase-site/commit/47be635d
Tree: http://git-wip-us.apache.org/repos/asf/hbase-site/tree/47be635d
Diff: http://git-wip-us.apache.org/repos/asf/hbase-site/diff/47be635d

Branch: refs/heads/asf-site
Commit: 47be635d181b64a0d68e0b0fa4b011b2b3d15158
Parents: 8d17471
Author: jenkins <bu...@apache.org>
Authored: Thu Aug 10 15:05:51 2017 +0000
Committer: jenkins <bu...@apache.org>
Committed: Thu Aug 10 15:05:51 2017 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |    4 +-
 apache_hbase_reference_guide.pdf                |    6 +-
 apidocs/index-all.html                          |    6 +-
 .../RawScanResultConsumer.ScanController.html   |   44 +-
 .../RawScanResultConsumer.ScanResumer.html      |    4 +-
 .../hbase/client/RawScanResultConsumer.html     |   14 +-
 .../hadoop/hbase/client/class-use/Cursor.html   |   15 +
 .../hadoop/hbase/client/package-summary.html    |    2 +-
 .../apache/hadoop/hbase/client/package-use.html |    2 +-
 .../RawScanResultConsumer.ScanController.html   |  208 +-
 .../RawScanResultConsumer.ScanResumer.html      |  208 +-
 .../hbase/client/RawScanResultConsumer.html     |  208 +-
 bulk-loads.html                                 |    4 +-
 checkstyle-aggregate.html                       | 5672 ++++++++-------
 checkstyle.rss                                  |   12 +-
 coc.html                                        |    4 +-
 cygwin.html                                     |    4 +-
 dependencies.html                               |    4 +-
 dependency-convergence.html                     |    4 +-
 dependency-info.html                            |    4 +-
 dependency-management.html                      |    4 +-
 devapidocs/constant-values.html                 |   60 +-
 devapidocs/index-all.html                       |   74 +-
 .../hadoop/hbase/backup/package-tree.html       |    2 +-
 .../org/apache/hadoop/hbase/class-use/Cell.html |   40 +-
 .../class-use/InterfaceAudience.Public.html     |    2 +-
 .../hbase/classification/package-tree.html      |    6 +-
 ...ionRpcRetryingCaller.ScanControllerImpl.html |   74 +-
 ...onRpcRetryingCaller.ScanControllerState.html |   14 +-
 ...RegionRpcRetryingCaller.ScanResumerImpl.html |   20 +-
 ...egionRpcRetryingCaller.ScanResumerState.html |   12 +-
 .../AsyncScanSingleRegionRpcRetryingCaller.html |   88 +-
 .../RawScanResultConsumer.ScanController.html   |   44 +-
 .../RawScanResultConsumer.ScanResumer.html      |    4 +-
 .../hbase/client/RawScanResultConsumer.html     |   14 +-
 .../hadoop/hbase/client/class-use/Cursor.html   |   32 +
 .../hadoop/hbase/client/package-summary.html    |    2 +-
 .../hadoop/hbase/client/package-tree.html       |   26 +-
 .../apache/hadoop/hbase/client/package-use.html |    4 +-
 .../hadoop/hbase/filter/package-tree.html       |   10 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |    8 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |    2 +-
 .../hadoop/hbase/master/package-tree.html       |    4 +-
 .../hbase/monitoring/MonitoredRPCHandler.html   |    2 +-
 .../monitoring/MonitoredRPCHandlerImpl.html     |    4 +-
 .../hadoop/hbase/monitoring/MonitoredTask.html  |   62 +-
 .../hbase/monitoring/MonitoredTaskImpl.html     |  115 +-
 .../monitoring/TaskMonitor.MonitorRunnable.html |  323 +
 ...askMonitor.PassthroughInvocationHandler.html |   12 +-
 .../TaskMonitor.TaskAndWeakRefPair.html         |   12 +-
 .../hadoop/hbase/monitoring/TaskMonitor.html    |  265 +-
 .../class-use/TaskMonitor.MonitorRunnable.html  |  125 +
 .../hbase/monitoring/package-summary.html       |    6 +-
 .../hadoop/hbase/monitoring/package-tree.html   |    1 +
 .../org/apache/hadoop/hbase/package-tree.html   |   14 +-
 .../hadoop/hbase/procedure2/package-tree.html   |    6 +-
 .../hadoop/hbase/quotas/package-tree.html       |    8 +-
 .../hbase/regionserver/MobStoreScanner.html     |    2 +-
 .../regionserver/NoLimitScannerContext.html     |    2 +-
 .../regionserver/RSRpcServices.LogDelegate.html |    4 +-
 ...SRpcServices.RegionScannerCloseCallBack.html |    8 +-
 .../RSRpcServices.RegionScannerHolder.html      |   24 +-
 ...pcServices.RegionScannerShippedCallBack.html |   12 +-
 ...RpcServices.RegionScannersCloseCallBack.html |   10 +-
 .../RSRpcServices.ScannerListener.html          |    8 +-
 .../hbase/regionserver/RSRpcServices.html       |  224 +-
 .../regionserver/ReversedMobStoreScanner.html   |    2 +-
 .../regionserver/ReversedStoreScanner.html      |    2 +-
 .../regionserver/ScannerContext.Builder.html    |   24 +-
 .../ScannerContext.LimitFields.html             |   62 +-
 .../regionserver/ScannerContext.LimitScope.html |   16 +-
 .../regionserver/ScannerContext.NextState.html  |   32 +-
 .../hbase/regionserver/ScannerContext.html      |  126 +-
 ...StoreScanner.StoreScannerCompactionRace.html |   12 +-
 .../hadoop/hbase/regionserver/StoreScanner.html |  172 +-
 .../hadoop/hbase/regionserver/package-tree.html |   16 +-
 .../regionserver/querymatcher/package-tree.html |    2 +-
 .../hbase/regionserver/wal/package-tree.html    |    2 +-
 .../hbase/security/access/package-tree.html     |    2 +-
 .../hadoop/hbase/security/package-tree.html     |    2 +-
 .../hadoop/hbase/thrift/package-tree.html       |    4 +-
 .../apache/hadoop/hbase/util/package-tree.html  |   10 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |    2 +-
 devapidocs/overview-tree.html                   |    1 +
 .../org/apache/hadoop/hbase/Version.html        |    6 +-
 ...ionRpcRetryingCaller.ScanControllerImpl.html | 1018 +--
 ...onRpcRetryingCaller.ScanControllerState.html | 1018 +--
 ...RegionRpcRetryingCaller.ScanResumerImpl.html | 1018 +--
 ...egionRpcRetryingCaller.ScanResumerState.html | 1018 +--
 .../AsyncScanSingleRegionRpcRetryingCaller.html | 1018 +--
 .../RawScanResultConsumer.ScanController.html   |  208 +-
 .../RawScanResultConsumer.ScanResumer.html      |  208 +-
 .../hbase/client/RawScanResultConsumer.html     |  208 +-
 .../monitoring/MonitoredRPCHandlerImpl.html     |   12 +-
 .../hbase/monitoring/MonitoredTask.State.html   |   76 +-
 .../hadoop/hbase/monitoring/MonitoredTask.html  |   76 +-
 .../hbase/monitoring/MonitoredTaskImpl.html     |  300 +-
 .../monitoring/TaskMonitor.MonitorRunnable.html |  355 +
 ...askMonitor.PassthroughInvocationHandler.html |  436 +-
 .../TaskMonitor.TaskAndWeakRefPair.html         |  436 +-
 .../hadoop/hbase/monitoring/TaskMonitor.html    |  436 +-
 .../regionserver/RSRpcServices.LogDelegate.html | 6833 +++++++++---------
 ...SRpcServices.RegionScannerCloseCallBack.html | 6833 +++++++++---------
 .../RSRpcServices.RegionScannerHolder.html      | 6833 +++++++++---------
 ...pcServices.RegionScannerShippedCallBack.html | 6833 +++++++++---------
 ...RpcServices.RegionScannersCloseCallBack.html | 6833 +++++++++---------
 .../RSRpcServices.ScannerListener.html          | 6833 +++++++++---------
 .../hbase/regionserver/RSRpcServices.html       | 6833 +++++++++---------
 .../regionserver/ScannerContext.Builder.html    | 1344 ++--
 .../ScannerContext.LimitFields.html             | 1344 ++--
 .../regionserver/ScannerContext.LimitScope.html | 1344 ++--
 .../regionserver/ScannerContext.NextState.html  | 1344 ++--
 .../hbase/regionserver/ScannerContext.html      | 1344 ++--
 ...StoreScanner.StoreScannerCompactionRace.html | 2239 +++---
 .../hadoop/hbase/regionserver/StoreScanner.html | 2239 +++---
 export_control.html                             |    4 +-
 hbase-annotations/checkstyle.html               |    4 +-
 hbase-annotations/dependencies.html             |    4 +-
 hbase-annotations/dependency-convergence.html   |    4 +-
 hbase-annotations/dependency-info.html          |    4 +-
 hbase-annotations/dependency-management.html    |    4 +-
 hbase-annotations/index.html                    |    4 +-
 hbase-annotations/integration.html              |    4 +-
 hbase-annotations/issue-tracking.html           |    4 +-
 hbase-annotations/license.html                  |    4 +-
 hbase-annotations/mail-lists.html               |    4 +-
 hbase-annotations/plugin-management.html        |    4 +-
 hbase-annotations/plugins.html                  |    4 +-
 hbase-annotations/project-info.html             |    4 +-
 hbase-annotations/project-reports.html          |    4 +-
 hbase-annotations/project-summary.html          |    4 +-
 hbase-annotations/source-repository.html        |    4 +-
 hbase-annotations/team-list.html                |    4 +-
 hbase-archetypes/dependencies.html              |    4 +-
 hbase-archetypes/dependency-convergence.html    |    4 +-
 hbase-archetypes/dependency-info.html           |    4 +-
 hbase-archetypes/dependency-management.html     |    4 +-
 .../hbase-archetype-builder/dependencies.html   |    4 +-
 .../dependency-convergence.html                 |    4 +-
 .../dependency-info.html                        |    4 +-
 .../dependency-management.html                  |    4 +-
 .../hbase-archetype-builder/index.html          |    4 +-
 .../hbase-archetype-builder/integration.html    |    4 +-
 .../hbase-archetype-builder/issue-tracking.html |    4 +-
 .../hbase-archetype-builder/license.html        |    4 +-
 .../hbase-archetype-builder/mail-lists.html     |    4 +-
 .../plugin-management.html                      |    4 +-
 .../hbase-archetype-builder/plugins.html        |    4 +-
 .../hbase-archetype-builder/project-info.html   |    4 +-
 .../project-summary.html                        |    4 +-
 .../source-repository.html                      |    4 +-
 .../hbase-archetype-builder/team-list.html      |    4 +-
 .../hbase-client-project/checkstyle.html        |    4 +-
 .../hbase-client-project/dependencies.html      |    4 +-
 .../dependency-convergence.html                 |    4 +-
 .../hbase-client-project/dependency-info.html   |    4 +-
 .../dependency-management.html                  |    4 +-
 .../hbase-client-project/index.html             |    4 +-
 .../hbase-client-project/integration.html       |    4 +-
 .../hbase-client-project/issue-tracking.html    |    4 +-
 .../hbase-client-project/license.html           |    4 +-
 .../hbase-client-project/mail-lists.html        |    4 +-
 .../hbase-client-project/plugin-management.html |    4 +-
 .../hbase-client-project/plugins.html           |    4 +-
 .../hbase-client-project/project-info.html      |    4 +-
 .../hbase-client-project/project-reports.html   |    4 +-
 .../hbase-client-project/project-summary.html   |    4 +-
 .../hbase-client-project/source-repository.html |    4 +-
 .../hbase-client-project/team-list.html         |    4 +-
 .../hbase-shaded-client-project/checkstyle.html |    4 +-
 .../dependencies.html                           |    4 +-
 .../dependency-convergence.html                 |    4 +-
 .../dependency-info.html                        |    4 +-
 .../dependency-management.html                  |    4 +-
 .../hbase-shaded-client-project/index.html      |    4 +-
 .../integration.html                            |    4 +-
 .../issue-tracking.html                         |    4 +-
 .../hbase-shaded-client-project/license.html    |    4 +-
 .../hbase-shaded-client-project/mail-lists.html |    4 +-
 .../plugin-management.html                      |    4 +-
 .../hbase-shaded-client-project/plugins.html    |    4 +-
 .../project-info.html                           |    4 +-
 .../project-reports.html                        |    4 +-
 .../project-summary.html                        |    4 +-
 .../source-repository.html                      |    4 +-
 .../hbase-shaded-client-project/team-list.html  |    4 +-
 hbase-archetypes/index.html                     |    4 +-
 hbase-archetypes/integration.html               |    4 +-
 hbase-archetypes/issue-tracking.html            |    4 +-
 hbase-archetypes/license.html                   |    4 +-
 hbase-archetypes/mail-lists.html                |    4 +-
 hbase-archetypes/plugin-management.html         |    4 +-
 hbase-archetypes/plugins.html                   |    4 +-
 hbase-archetypes/project-info.html              |    4 +-
 hbase-archetypes/project-summary.html           |    4 +-
 hbase-archetypes/source-repository.html         |    4 +-
 hbase-archetypes/team-list.html                 |    4 +-
 hbase-spark/checkstyle.html                     |    4 +-
 hbase-spark/dependencies.html                   |    4 +-
 hbase-spark/dependency-convergence.html         |    4 +-
 hbase-spark/dependency-info.html                |    4 +-
 hbase-spark/dependency-management.html          |    4 +-
 hbase-spark/index.html                          |    4 +-
 hbase-spark/integration.html                    |    4 +-
 hbase-spark/issue-tracking.html                 |    4 +-
 hbase-spark/license.html                        |    4 +-
 hbase-spark/mail-lists.html                     |    4 +-
 hbase-spark/plugin-management.html              |    4 +-
 hbase-spark/plugins.html                        |    4 +-
 hbase-spark/project-info.html                   |    4 +-
 hbase-spark/project-reports.html                |    4 +-
 hbase-spark/project-summary.html                |    4 +-
 hbase-spark/source-repository.html              |    4 +-
 hbase-spark/team-list.html                      |    4 +-
 index.html                                      |    4 +-
 integration.html                                |    4 +-
 issue-tracking.html                             |    4 +-
 license.html                                    |  208 +-
 mail-lists.html                                 |    4 +-
 metrics.html                                    |    4 +-
 old_news.html                                   |    4 +-
 plugin-management.html                          |    4 +-
 plugins.html                                    |    4 +-
 poweredbyhbase.html                             |    4 +-
 project-info.html                               |    4 +-
 project-reports.html                            |    4 +-
 project-summary.html                            |    4 +-
 pseudo-distributed.html                         |    4 +-
 replication.html                                |    4 +-
 resources.html                                  |    4 +-
 source-repository.html                          |    4 +-
 sponsors.html                                   |    4 +-
 supportingprojects.html                         |    4 +-
 team-list.html                                  |    4 +-
 testdevapidocs/allclasses-frame.html            |    6 +-
 testdevapidocs/allclasses-noframe.html          |    6 +-
 testdevapidocs/constant-values.html             |   38 +-
 testdevapidocs/index-all.html                   |  132 +-
 .../hbase/class-use/HBaseTestingUtility.html    |  222 +-
 .../client/AbstractTestAsyncTableScan.html      |    4 +-
 .../AbstractTestScanCursor.SparseFilter.html    |  391 +
 .../hbase/client/AbstractTestScanCursor.html    |  619 ++
 .../hadoop/hbase/client/AbstractTestShell.html  |    4 +-
 ...IntoShippedBlocks.CompactorStoreScanner.html |    2 +-
 ...onInReseekRegionObserver.MyStoreScanner.html |    2 +-
 .../hadoop/hbase/client/TestPutWriteToWal.html  |    4 +-
 .../hbase/client/TestRawAsyncScanCursor.html    |  367 +
 .../TestRawAsyncTableLimitedScanWithFilter.html |    4 +-
 .../apache/hadoop/hbase/client/TestScan.html    |    4 +-
 .../hadoop/hbase/client/TestScanCursor.html     |  355 +
 .../client/TestScannersFromClientSide.html      |    4 +-
 .../AbstractTestScanCursor.SparseFilter.html    |  125 +
 .../class-use/AbstractTestScanCursor.html       |  169 +
 .../class-use/TestRawAsyncScanCursor.html       |  125 +
 .../hbase/client/class-use/TestScanCursor.html  |  125 +
 .../hadoop/hbase/client/package-frame.html      |    4 +
 .../hadoop/hbase/client/package-summary.html    |   54 +-
 .../hadoop/hbase/client/package-tree.html       |    7 +
 .../apache/hadoop/hbase/client/package-use.html |   47 +-
 .../hbase/monitoring/TestTaskMonitor.html       |   34 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    8 +-
 .../hadoop/hbase/procedure2/package-tree.html   |    2 +-
 .../hadoop/hbase/regionserver/TestScanner.html  |    4 +-
 .../TestScannerCursor.SparseFilter.html         |  350 -
 .../hbase/regionserver/TestScannerCursor.html   |  638 --
 .../TestScannerHeartbeatMessages.html           |    4 +-
 .../TestStoreScanner.CellGridStoreScanner.html  |    2 +-
 ....CellWithVersionsNoOptimizeStoreScanner.html |    2 +-
 ...oreScanner.CellWithVersionsStoreScanner.html |    2 +-
 .../TestScannerCursor.SparseFilter.html         |  125 -
 .../class-use/TestScannerCursor.html            |  125 -
 .../hbase/regionserver/package-frame.html       |    2 -
 .../hbase/regionserver/package-summary.html     |    8 -
 .../hadoop/hbase/regionserver/package-tree.html |    8 +-
 .../apache/hadoop/hbase/test/package-tree.html  |    4 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |    2 +-
 testdevapidocs/overview-tree.html               |    9 +-
 .../AbstractTestScanCursor.SparseFilter.html    |  218 +
 .../hbase/client/AbstractTestScanCursor.html    |  218 +
 .../hbase/client/TestRawAsyncScanCursor.html    |  179 +
 .../hadoop/hbase/client/TestScanCursor.html     |  162 +
 .../hbase/monitoring/TestTaskMonitor.html       |  226 +-
 .../TestScannerCursor.SparseFilter.html         |  263 -
 .../hbase/regionserver/TestScannerCursor.html   |  263 -
 284 files changed, 42350 insertions(+), 39597 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/47be635d/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index aeaa904..860277d 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20170809" />
+    <meta name="Date-Revision-yyyymmdd" content="20170810" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -606,7 +606,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-08-09</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-08-10</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/47be635d/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index f89b0fc..2ba9414 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.0.alpha.15, based on Prawn 2.2.2)
 /Producer (Apache HBase Team)
-/ModDate (D:20170809184114+00'00')
-/CreationDate (D:20170809184114+00'00')
+/ModDate (D:20170810144502+00'00')
+/CreationDate (D:20170810144502+00'00')
 >>
 endobj
 2 0 obj
@@ -27334,7 +27334,7 @@ endobj
 endobj
 136 0 obj
 << /Limits [(__anchor-top) (adding.new.node)]
-/Names [(__anchor-top) 25 0 R (__indexterm-6955510) 3262 0 R (__indexterm-6957760) 3264 0 R (__indexterm-6959822) 3265 0 R (__indexterm-6961696) 3266 0 R (acid) 891 0 R (add-metric-name-and-function-to-hadoop-compat-interface) 3361 0 R (add-the-implementation-to-both-hadoop-1-and-hadoop-2-compat-modules) 3362 0 R (add.metrics) 3359 0 R (adding-a-new-chapter-to-the-hbase-reference-guide) 3596 0 R (adding.new.node) 2859 0 R]
+/Names [(__anchor-top) 25 0 R (__indexterm-6955508) 3262 0 R (__indexterm-6957758) 3264 0 R (__indexterm-6959820) 3265 0 R (__indexterm-6961694) 3266 0 R (acid) 891 0 R (add-metric-name-and-function-to-hadoop-compat-interface) 3361 0 R (add-the-implementation-to-both-hadoop-1-and-hadoop-2-compat-modules) 3362 0 R (add.metrics) 3359 0 R (adding-a-new-chapter-to-the-hbase-reference-guide) 3596 0 R (adding.new.node) 2859 0 R]
 >>
 endobj
 137 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/47be635d/apidocs/index-all.html
----------------------------------------------------------------------
diff --git a/apidocs/index-all.html b/apidocs/index-all.html
index 209ec91..0dc7f76 100644
--- a/apidocs/index-all.html
+++ b/apidocs/index-all.html
@@ -2719,6 +2719,10 @@
  <a href="org/apache/hadoop/hbase/client/Result.html#isCursor--"><code>Result.isCursor()</code></a>
  <a href="org/apache/hadoop/hbase/client/Result.html#getCursor--"><code>Result.getCursor()</code></a></div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html#cursor--">cursor()</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client">RawScanResultConsumer.ScanController</a></dt>
+<dd>
+<div class="block">Get the scan cursor if available.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/Constants.html#CUSTOM_FILTERS">CUSTOM_FILTERS</a></span> - Static variable in interface org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/Constants.html" title="interface in org.apache.hadoop.hbase.rest">Constants</a></dt>
 <dd>&nbsp;</dd>
 </dl>
@@ -12687,7 +12691,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </dd>
 <dt><a href="org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">RawScanResultConsumer.ScanController</span></a> - Interface in <a href="org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
 <dd>
-<div class="block">Used to suspend or stop a scan.</div>
+<div class="block">Used to suspend or stop a scan, or get a scan cursor if available.</div>
 </dd>
 <dt><a href="org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanResumer.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">RawScanResultConsumer.ScanResumer</span></a> - Interface in <a href="org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
 <dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/47be635d/apidocs/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html b/apidocs/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html
index aa9f8f6..551a67d 100644
--- a/apidocs/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html
+++ b/apidocs/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":6,"i1":6};
+var methods = {"i0":6,"i1":6,"i2":6};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -106,15 +106,15 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.html#line.60">RawScanResultConsumer.ScanController</a></pre>
-<div class="block">Used to suspend or stop a scan.
+public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.html#line.62">RawScanResultConsumer.ScanController</a></pre>
+<div class="block">Used to suspend or stop a scan, or get a scan cursor if available.
  <p>
- Notice that, you should only call the methods below inside onNext or onHeartbeat method. A
- IllegalStateException will be thrown if you call them at other places.
+ Notice that, you should only call the <a href="../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html#suspend--"><code>suspend()</code></a> or <a href="../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html#terminate--"><code>terminate()</code></a> inside onNext
+ or onHeartbeat method. A IllegalStateException will be thrown if you call them at other places.
  <p>
- You can only call one of the methods below, i.e., call suspend or terminate(of course you are
- free to not call them both), and the methods are not reentrant. A IllegalStateException will be
- thrown if you have already called one of the methods.</div>
+ You can only call one of the <a href="../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html#suspend--"><code>suspend()</code></a> and <a href="../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html#terminate--"><code>terminate()</code></a> methods(of course you
+ are free to not call them both), and the methods are not reentrant. An IllegalStateException
+ will be thrown if you have already called one of the methods.</div>
 </li>
 </ul>
 </div>
@@ -134,12 +134,18 @@ public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr id="i0" class="altColor">
+<td class="colFirst"><code><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/client/Cursor.html" title="class in org.apache.hadoop.hbase.client">Cursor</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html#cursor--">cursor</a></span>()</code>
+<div class="block">Get the scan cursor if available.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanResumer.html" title="interface in org.apache.hadoop.hbase.client">RawScanResultConsumer.ScanResumer</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html#suspend--">suspend</a></span>()</code>
 <div class="block">Suspend the scan.</div>
 </td>
 </tr>
-<tr id="i1" class="rowColor">
+<tr id="i2" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html#terminate--">terminate</a></span>()</code>
 <div class="block">Terminate the scan.</div>
@@ -166,7 +172,7 @@ public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase
 <ul class="blockList">
 <li class="blockList">
 <h4>suspend</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanResumer.html" title="interface in org.apache.hadoop.hbase.client">RawScanResultConsumer.ScanResumer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html#line.69">suspend</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanResumer.html" title="interface in org.apache.hadoop.hbase.client">RawScanResultConsumer.ScanResumer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html#line.71">suspend</a>()</pre>
 <div class="block">Suspend the scan.
  <p>
  This means we will stop fetching data in background, i.e., will not call onNext any more
@@ -180,16 +186,30 @@ public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase
 <a name="terminate--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>terminate</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html#line.77">terminate</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html#line.79">terminate</a>()</pre>
 <div class="block">Terminate the scan.
  <p>
  This is useful when you have got enough results and want to stop the scan in onNext method,
  or you want to stop the scan in onHeartbeat method because it has spent too many time.</div>
 </li>
 </ul>
+<a name="cursor--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>cursor</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/client/Cursor.html" title="class in org.apache.hadoop.hbase.client">Cursor</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html#line.85">cursor</a>()</pre>
+<div class="block">Get the scan cursor if available.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The scan cursor.</dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/47be635d/apidocs/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanResumer.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanResumer.html b/apidocs/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanResumer.html
index 00a65ba..da5dec0 100644
--- a/apidocs/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanResumer.html
+++ b/apidocs/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanResumer.html
@@ -106,7 +106,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.html#line.40">RawScanResultConsumer.ScanResumer</a></pre>
+public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.html#line.42">RawScanResultConsumer.ScanResumer</a></pre>
 <div class="block">Used to resume a scan.</div>
 </li>
 </ul>
@@ -153,7 +153,7 @@ public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase
 <ul class="blockListLast">
 <li class="blockList">
 <h4>resume</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanResumer.html#line.46">resume</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanResumer.html#line.48">resume</a>()</pre>
 <div class="block">Resume the scan. You are free to call it multiple time but only the first call will take
  effect.</div>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/47be635d/apidocs/org/apache/hadoop/hbase/client/RawScanResultConsumer.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/client/RawScanResultConsumer.html b/apidocs/org/apache/hadoop/hbase/client/RawScanResultConsumer.html
index 8993ca2..fbf7f4d 100644
--- a/apidocs/org/apache/hadoop/hbase/client/RawScanResultConsumer.html
+++ b/apidocs/org/apache/hadoop/hbase/client/RawScanResultConsumer.html
@@ -102,7 +102,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.html#line.34">RawScanResultConsumer</a></pre>
+public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.html#line.36">RawScanResultConsumer</a></pre>
 <div class="block">Receives <a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client"><code>Result</code></a> for an asynchronous scan.
  <p>
  Notice that, the <a href="../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.html#onNext-org.apache.hadoop.hbase.client.Result:A-org.apache.hadoop.hbase.client.RawScanResultConsumer.ScanController-"><code>onNext(Result[], ScanController)</code></a> method will be called in the thread
@@ -131,7 +131,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <tr class="altColor">
 <td class="colFirst"><code>static interface&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client">RawScanResultConsumer.ScanController</a></span></code>
-<div class="block">Used to suspend or stop a scan.</div>
+<div class="block">Used to suspend or stop a scan, or get a scan cursor if available.</div>
 </td>
 </tr>
 <tr class="rowColor">
@@ -210,7 +210,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>onNext</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.html#line.87">onNext</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>[]&nbsp;results,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.html#line.95">onNext</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>[]&nbsp;results,
             <a href="../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client">RawScanResultConsumer.ScanController</a>&nbsp;controller)</pre>
 <div class="block">Indicate that we have receive some data.</div>
 <dl>
@@ -228,7 +228,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>onHeartbeat</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.html#line.98">onHeartbeat</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client">RawScanResultConsumer.ScanController</a>&nbsp;controller)</pre>
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.html#line.106">onHeartbeat</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client">RawScanResultConsumer.ScanController</a>&nbsp;controller)</pre>
 <div class="block">Indicate that there is an heartbeat message but we have not cumulated enough cells to call
  onNext.
  <p>
@@ -247,7 +247,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>onError</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.html#line.106">onError</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;error)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.html#line.114">onError</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;error)</pre>
 <div class="block">Indicate that we hit an unrecoverable error and the scan operation is terminated.
  <p>
  We will not call <a href="../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.html#onComplete--"><code>onComplete()</code></a> after calling <a href="../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.html#onError-java.lang.Throwable-"><code>onError(Throwable)</code></a>.</div>
@@ -259,7 +259,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockList">
 <li class="blockList">
 <h4>onComplete</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.html#line.111">onComplete</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.html#line.119">onComplete</a>()</pre>
 <div class="block">Indicate that the scan operation is completed normally.</div>
 </li>
 </ul>
@@ -269,7 +269,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client
 <ul class="blockListLast">
 <li class="blockList">
 <h4>onScanMetricsCreated</h4>
-<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.html#line.119">onScanMetricsCreated</a>(org.apache.hadoop.hbase.client.metrics.ScanMetrics&nbsp;scanMetrics)</pre>
+<pre>default&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.html#line.127">onScanMetricsCreated</a>(org.apache.hadoop.hbase.client.metrics.ScanMetrics&nbsp;scanMetrics)</pre>
 <div class="block">If <code>scan.isScanMetricsEnabled()</code> returns true, then this method will be called prior to
  all other methods in this interface to give you the <code>ScanMetrics</code> instance for this scan
  operation. The <code>ScanMetrics</code> instance will be updated on-the-fly during the scan, you can

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/47be635d/apidocs/org/apache/hadoop/hbase/client/class-use/Cursor.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/client/class-use/Cursor.html b/apidocs/org/apache/hadoop/hbase/client/class-use/Cursor.html
index b10a9c7..8b33f72 100644
--- a/apidocs/org/apache/hadoop/hbase/client/class-use/Cursor.html
+++ b/apidocs/org/apache/hadoop/hbase/client/class-use/Cursor.html
@@ -113,6 +113,21 @@
 </tbody>
 </table>
 <table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a> that return types with arguments of type <a href="../../../../../../org/apache/hadoop/hbase/client/Cursor.html" title="class in org.apache.hadoop.hbase.client">Cursor</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code><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/client/Cursor.html" title="class in org.apache.hadoop.hbase.client">Cursor</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">RawScanResultConsumer.ScanController.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html#cursor--">cursor</a></span>()</code>
+<div class="block">Get the scan cursor if available.</div>
+</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
 <caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a> with parameters of type <a href="../../../../../../org/apache/hadoop/hbase/client/Cursor.html" title="class in org.apache.hadoop.hbase.client">Cursor</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/47be635d/apidocs/org/apache/hadoop/hbase/client/package-summary.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/client/package-summary.html b/apidocs/org/apache/hadoop/hbase/client/package-summary.html
index df746ac..17a8670 100644
--- a/apidocs/org/apache/hadoop/hbase/client/package-summary.html
+++ b/apidocs/org/apache/hadoop/hbase/client/package-summary.html
@@ -192,7 +192,7 @@
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client">RawScanResultConsumer.ScanController</a></td>
 <td class="colLast">
-<div class="block">Used to suspend or stop a scan.</div>
+<div class="block">Used to suspend or stop a scan, or get a scan cursor if available.</div>
 </td>
 </tr>
 <tr class="altColor">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/47be635d/apidocs/org/apache/hadoop/hbase/client/package-use.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/client/package-use.html b/apidocs/org/apache/hadoop/hbase/client/package-use.html
index 1d7dd88..d8e47e3 100644
--- a/apidocs/org/apache/hadoop/hbase/client/package-use.html
+++ b/apidocs/org/apache/hadoop/hbase/client/package-use.html
@@ -367,7 +367,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tr>
 <tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/client/class-use/RawScanResultConsumer.ScanController.html#org.apache.hadoop.hbase.client">RawScanResultConsumer.ScanController</a>
-<div class="block">Used to suspend or stop a scan.</div>
+<div class="block">Used to suspend or stop a scan, or get a scan cursor if available.</div>
 </td>
 </tr>
 <tr class="rowColor">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/47be635d/apidocs/src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html b/apidocs/src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html
index 6ecabed..59c2836 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanController.html
@@ -25,108 +25,116 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.client;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.client.Result;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.client.metrics.ScanMetrics;<a name="line.22"></a>
-<span class="sourceLineNo">023</span><a name="line.23"></a>
-<span class="sourceLineNo">024</span>/**<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * Receives {@link Result} for an asynchronous scan.<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * &lt;p&gt;<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * Notice that, the {@link #onNext(Result[], ScanController)} method will be called in the thread<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * which we send request to HBase service. So if you want the asynchronous scanner fetch data from<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * HBase in background while you process the returned data, you need to move the processing work to<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * another thread to make the {@code onNext} call return immediately. And please do NOT do any time<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * consuming tasks in all methods below unless you know what you are doing.<a name="line.31"></a>
-<span class="sourceLineNo">032</span> */<a name="line.32"></a>
-<span class="sourceLineNo">033</span>@InterfaceAudience.Public<a name="line.33"></a>
-<span class="sourceLineNo">034</span>public interface RawScanResultConsumer {<a name="line.34"></a>
-<span class="sourceLineNo">035</span><a name="line.35"></a>
-<span class="sourceLineNo">036</span>  /**<a name="line.36"></a>
-<span class="sourceLineNo">037</span>   * Used to resume a scan.<a name="line.37"></a>
-<span class="sourceLineNo">038</span>   */<a name="line.38"></a>
-<span class="sourceLineNo">039</span>  @InterfaceAudience.Public<a name="line.39"></a>
-<span class="sourceLineNo">040</span>  interface ScanResumer {<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>    /**<a name="line.42"></a>
-<span class="sourceLineNo">043</span>     * Resume the scan. You are free to call it multiple time but only the first call will take<a name="line.43"></a>
-<span class="sourceLineNo">044</span>     * effect.<a name="line.44"></a>
-<span class="sourceLineNo">045</span>     */<a name="line.45"></a>
-<span class="sourceLineNo">046</span>    void resume();<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  }<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>  /**<a name="line.49"></a>
-<span class="sourceLineNo">050</span>   * Used to suspend or stop a scan.<a name="line.50"></a>
-<span class="sourceLineNo">051</span>   * &lt;p&gt;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>   * Notice that, you should only call the methods below inside onNext or onHeartbeat method. A<a name="line.52"></a>
-<span class="sourceLineNo">053</span>   * IllegalStateException will be thrown if you call them at other places.<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   * &lt;p&gt;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   * You can only call one of the methods below, i.e., call suspend or terminate(of course you are<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   * free to not call them both), and the methods are not reentrant. A IllegalStateException will be<a name="line.56"></a>
-<span class="sourceLineNo">057</span>   * thrown if you have already called one of the methods.<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   */<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  @InterfaceAudience.Public<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  interface ScanController {<a name="line.60"></a>
-<span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>    /**<a name="line.62"></a>
-<span class="sourceLineNo">063</span>     * Suspend the scan.<a name="line.63"></a>
-<span class="sourceLineNo">064</span>     * &lt;p&gt;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>     * This means we will stop fetching data in background, i.e., will not call onNext any more<a name="line.65"></a>
-<span class="sourceLineNo">066</span>     * before you resume the scan.<a name="line.66"></a>
-<span class="sourceLineNo">067</span>     * @return A resumer used to resume the scan later.<a name="line.67"></a>
-<span class="sourceLineNo">068</span>     */<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    ScanResumer suspend();<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>    /**<a name="line.71"></a>
-<span class="sourceLineNo">072</span>     * Terminate the scan.<a name="line.72"></a>
-<span class="sourceLineNo">073</span>     * &lt;p&gt;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>     * This is useful when you have got enough results and want to stop the scan in onNext method,<a name="line.74"></a>
-<span class="sourceLineNo">075</span>     * or you want to stop the scan in onHeartbeat method because it has spent too many time.<a name="line.75"></a>
-<span class="sourceLineNo">076</span>     */<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    void terminate();<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  }<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  /**<a name="line.80"></a>
-<span class="sourceLineNo">081</span>   * Indicate that we have receive some data.<a name="line.81"></a>
-<span class="sourceLineNo">082</span>   * @param results the data fetched from HBase service.<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   * @param controller used to suspend or terminate the scan. Notice that the {@code controller}<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   *          instance is only valid within scope of onNext method. You can only call its method in<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   *          onNext, do NOT store it and call it later outside onNext.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   */<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  void onNext(Result[] results, ScanController controller);<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  /**<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   * Indicate that there is an heartbeat message but we have not cumulated enough cells to call<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   * onNext.<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   * &lt;p&gt;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>   * This method give you a chance to terminate a slow scan operation.<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   * @param controller used to suspend or terminate the scan. Notice that the {@code controller}<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   *          instance is only valid within the scope of onHeartbeat method. You can only call its<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   *          method in onHeartbeat, do NOT store it and call it later outside onHeartbeat.<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   */<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  default void onHeartbeat(ScanController controller) {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  }<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  /**<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * Indicate that we hit an unrecoverable error and the scan operation is terminated.<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * &lt;p&gt;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * We will not call {@link #onComplete()} after calling {@link #onError(Throwable)}.<a name="line.104"></a>
+<span class="sourceLineNo">020</span>import java.util.Optional;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.client.Result;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.client.metrics.ScanMetrics;<a name="line.24"></a>
+<span class="sourceLineNo">025</span><a name="line.25"></a>
+<span class="sourceLineNo">026</span>/**<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * Receives {@link Result} for an asynchronous scan.<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * &lt;p&gt;<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * Notice that, the {@link #onNext(Result[], ScanController)} method will be called in the thread<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * which we send request to HBase service. So if you want the asynchronous scanner fetch data from<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * HBase in background while you process the returned data, you need to move the processing work to<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * another thread to make the {@code onNext} call return immediately. And please do NOT do any time<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * consuming tasks in all methods below unless you know what you are doing.<a name="line.33"></a>
+<span class="sourceLineNo">034</span> */<a name="line.34"></a>
+<span class="sourceLineNo">035</span>@InterfaceAudience.Public<a name="line.35"></a>
+<span class="sourceLineNo">036</span>public interface RawScanResultConsumer {<a name="line.36"></a>
+<span class="sourceLineNo">037</span><a name="line.37"></a>
+<span class="sourceLineNo">038</span>  /**<a name="line.38"></a>
+<span class="sourceLineNo">039</span>   * Used to resume a scan.<a name="line.39"></a>
+<span class="sourceLineNo">040</span>   */<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  @InterfaceAudience.Public<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  interface ScanResumer {<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>    /**<a name="line.44"></a>
+<span class="sourceLineNo">045</span>     * Resume the scan. You are free to call it multiple time but only the first call will take<a name="line.45"></a>
+<span class="sourceLineNo">046</span>     * effect.<a name="line.46"></a>
+<span class="sourceLineNo">047</span>     */<a name="line.47"></a>
+<span class="sourceLineNo">048</span>    void resume();<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  }<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  /**<a name="line.51"></a>
+<span class="sourceLineNo">052</span>   * Used to suspend or stop a scan, or get a scan cursor if available.<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   * &lt;p&gt;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   * Notice that, you should only call the {@link #suspend()} or {@link #terminate()} inside onNext<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   * or onHeartbeat method. A IllegalStateException will be thrown if you call them at other places.<a name="line.55"></a>
+<span class="sourceLineNo">056</span>   * &lt;p&gt;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>   * You can only call one of the {@link #suspend()} and {@link #terminate()} methods(of course you<a name="line.57"></a>
+<span class="sourceLineNo">058</span>   * are free to not call them both), and the methods are not reentrant. An IllegalStateException<a name="line.58"></a>
+<span class="sourceLineNo">059</span>   * will be thrown if you have already called one of the methods.<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   */<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  @InterfaceAudience.Public<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  interface ScanController {<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>    /**<a name="line.64"></a>
+<span class="sourceLineNo">065</span>     * Suspend the scan.<a name="line.65"></a>
+<span class="sourceLineNo">066</span>     * &lt;p&gt;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>     * This means we will stop fetching data in background, i.e., will not call onNext any more<a name="line.67"></a>
+<span class="sourceLineNo">068</span>     * before you resume the scan.<a name="line.68"></a>
+<span class="sourceLineNo">069</span>     * @return A resumer used to resume the scan later.<a name="line.69"></a>
+<span class="sourceLineNo">070</span>     */<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    ScanResumer suspend();<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>    /**<a name="line.73"></a>
+<span class="sourceLineNo">074</span>     * Terminate the scan.<a name="line.74"></a>
+<span class="sourceLineNo">075</span>     * &lt;p&gt;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>     * This is useful when you have got enough results and want to stop the scan in onNext method,<a name="line.76"></a>
+<span class="sourceLineNo">077</span>     * or you want to stop the scan in onHeartbeat method because it has spent too many time.<a name="line.77"></a>
+<span class="sourceLineNo">078</span>     */<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    void terminate();<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>    /**<a name="line.81"></a>
+<span class="sourceLineNo">082</span>     * Get the scan cursor if available.<a name="line.82"></a>
+<span class="sourceLineNo">083</span>     * @return The scan cursor.<a name="line.83"></a>
+<span class="sourceLineNo">084</span>     */<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    Optional&lt;Cursor&gt; cursor();<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  }<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  /**<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   * Indicate that we have receive some data.<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   * @param results the data fetched from HBase service.<a name="line.90"></a>
+<span class="sourceLineNo">091</span>   * @param controller used to suspend or terminate the scan. Notice that the {@code controller}<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   *          instance is only valid within scope of onNext method. You can only call its method in<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   *          onNext, do NOT store it and call it later outside onNext.<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  void onNext(Result[] results, ScanController controller);<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  /**<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * Indicate that there is an heartbeat message but we have not cumulated enough cells to call<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * onNext.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * &lt;p&gt;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * This method give you a chance to terminate a slow scan operation.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * @param controller used to suspend or terminate the scan. Notice that the {@code controller}<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   *          instance is only valid within the scope of onHeartbeat method. You can only call its<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   *          method in onHeartbeat, do NOT store it and call it later outside onHeartbeat.<a name="line.104"></a>
 <span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  void onError(Throwable error);<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  /**<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * Indicate that the scan operation is completed normally.<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  void onComplete();<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * If {@code scan.isScanMetricsEnabled()} returns true, then this method will be called prior to<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * all other methods in this interface to give you the {@link ScanMetrics} instance for this scan<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   * operation. The {@link ScanMetrics} instance will be updated on-the-fly during the scan, you can<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   * store it somewhere to get the metrics at any time if you want.<a name="line.117"></a>
+<span class="sourceLineNo">106</span>  default void onHeartbeat(ScanController controller) {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  }<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span>  /**<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * Indicate that we hit an unrecoverable error and the scan operation is terminated.<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   * &lt;p&gt;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   * We will not call {@link #onComplete()} after calling {@link #onError(Throwable)}.<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   */<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  void onError(Throwable error);<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>  /**<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * Indicate that the scan operation is completed normally.<a name="line.117"></a>
 <span class="sourceLineNo">118</span>   */<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  default void onScanMetricsCreated(ScanMetrics scanMetrics) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
-<span class="sourceLineNo">121</span>}<a name="line.121"></a>
+<span class="sourceLineNo">119</span>  void onComplete();<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>  /**<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * If {@code scan.isScanMetricsEnabled()} returns true, then this method will be called prior to<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   * all other methods in this interface to give you the {@link ScanMetrics} instance for this scan<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   * operation. The {@link ScanMetrics} instance will be updated on-the-fly during the scan, you can<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   * store it somewhere to get the metrics at any time if you want.<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   */<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  default void onScanMetricsCreated(ScanMetrics scanMetrics) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  }<a name="line.128"></a>
+<span class="sourceLineNo">129</span>}<a name="line.129"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/47be635d/apidocs/src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanResumer.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanResumer.html b/apidocs/src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanResumer.html
index 6ecabed..59c2836 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanResumer.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/client/RawScanResultConsumer.ScanResumer.html
@@ -25,108 +25,116 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.client;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.client.Result;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.client.metrics.ScanMetrics;<a name="line.22"></a>
-<span class="sourceLineNo">023</span><a name="line.23"></a>
-<span class="sourceLineNo">024</span>/**<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * Receives {@link Result} for an asynchronous scan.<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * &lt;p&gt;<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * Notice that, the {@link #onNext(Result[], ScanController)} method will be called in the thread<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * which we send request to HBase service. So if you want the asynchronous scanner fetch data from<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * HBase in background while you process the returned data, you need to move the processing work to<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * another thread to make the {@code onNext} call return immediately. And please do NOT do any time<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * consuming tasks in all methods below unless you know what you are doing.<a name="line.31"></a>
-<span class="sourceLineNo">032</span> */<a name="line.32"></a>
-<span class="sourceLineNo">033</span>@InterfaceAudience.Public<a name="line.33"></a>
-<span class="sourceLineNo">034</span>public interface RawScanResultConsumer {<a name="line.34"></a>
-<span class="sourceLineNo">035</span><a name="line.35"></a>
-<span class="sourceLineNo">036</span>  /**<a name="line.36"></a>
-<span class="sourceLineNo">037</span>   * Used to resume a scan.<a name="line.37"></a>
-<span class="sourceLineNo">038</span>   */<a name="line.38"></a>
-<span class="sourceLineNo">039</span>  @InterfaceAudience.Public<a name="line.39"></a>
-<span class="sourceLineNo">040</span>  interface ScanResumer {<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>    /**<a name="line.42"></a>
-<span class="sourceLineNo">043</span>     * Resume the scan. You are free to call it multiple time but only the first call will take<a name="line.43"></a>
-<span class="sourceLineNo">044</span>     * effect.<a name="line.44"></a>
-<span class="sourceLineNo">045</span>     */<a name="line.45"></a>
-<span class="sourceLineNo">046</span>    void resume();<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  }<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>  /**<a name="line.49"></a>
-<span class="sourceLineNo">050</span>   * Used to suspend or stop a scan.<a name="line.50"></a>
-<span class="sourceLineNo">051</span>   * &lt;p&gt;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>   * Notice that, you should only call the methods below inside onNext or onHeartbeat method. A<a name="line.52"></a>
-<span class="sourceLineNo">053</span>   * IllegalStateException will be thrown if you call them at other places.<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   * &lt;p&gt;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   * You can only call one of the methods below, i.e., call suspend or terminate(of course you are<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   * free to not call them both), and the methods are not reentrant. A IllegalStateException will be<a name="line.56"></a>
-<span class="sourceLineNo">057</span>   * thrown if you have already called one of the methods.<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   */<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  @InterfaceAudience.Public<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  interface ScanController {<a name="line.60"></a>
-<span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>    /**<a name="line.62"></a>
-<span class="sourceLineNo">063</span>     * Suspend the scan.<a name="line.63"></a>
-<span class="sourceLineNo">064</span>     * &lt;p&gt;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>     * This means we will stop fetching data in background, i.e., will not call onNext any more<a name="line.65"></a>
-<span class="sourceLineNo">066</span>     * before you resume the scan.<a name="line.66"></a>
-<span class="sourceLineNo">067</span>     * @return A resumer used to resume the scan later.<a name="line.67"></a>
-<span class="sourceLineNo">068</span>     */<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    ScanResumer suspend();<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>    /**<a name="line.71"></a>
-<span class="sourceLineNo">072</span>     * Terminate the scan.<a name="line.72"></a>
-<span class="sourceLineNo">073</span>     * &lt;p&gt;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>     * This is useful when you have got enough results and want to stop the scan in onNext method,<a name="line.74"></a>
-<span class="sourceLineNo">075</span>     * or you want to stop the scan in onHeartbeat method because it has spent too many time.<a name="line.75"></a>
-<span class="sourceLineNo">076</span>     */<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    void terminate();<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  }<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  /**<a name="line.80"></a>
-<span class="sourceLineNo">081</span>   * Indicate that we have receive some data.<a name="line.81"></a>
-<span class="sourceLineNo">082</span>   * @param results the data fetched from HBase service.<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   * @param controller used to suspend or terminate the scan. Notice that the {@code controller}<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   *          instance is only valid within scope of onNext method. You can only call its method in<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   *          onNext, do NOT store it and call it later outside onNext.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   */<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  void onNext(Result[] results, ScanController controller);<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  /**<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   * Indicate that there is an heartbeat message but we have not cumulated enough cells to call<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   * onNext.<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   * &lt;p&gt;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>   * This method give you a chance to terminate a slow scan operation.<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   * @param controller used to suspend or terminate the scan. Notice that the {@code controller}<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   *          instance is only valid within the scope of onHeartbeat method. You can only call its<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   *          method in onHeartbeat, do NOT store it and call it later outside onHeartbeat.<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   */<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  default void onHeartbeat(ScanController controller) {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  }<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  /**<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * Indicate that we hit an unrecoverable error and the scan operation is terminated.<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * &lt;p&gt;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * We will not call {@link #onComplete()} after calling {@link #onError(Throwable)}.<a name="line.104"></a>
+<span class="sourceLineNo">020</span>import java.util.Optional;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.client.Result;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.client.metrics.ScanMetrics;<a name="line.24"></a>
+<span class="sourceLineNo">025</span><a name="line.25"></a>
+<span class="sourceLineNo">026</span>/**<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * Receives {@link Result} for an asynchronous scan.<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * &lt;p&gt;<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * Notice that, the {@link #onNext(Result[], ScanController)} method will be called in the thread<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * which we send request to HBase service. So if you want the asynchronous scanner fetch data from<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * HBase in background while you process the returned data, you need to move the processing work to<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * another thread to make the {@code onNext} call return immediately. And please do NOT do any time<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * consuming tasks in all methods below unless you know what you are doing.<a name="line.33"></a>
+<span class="sourceLineNo">034</span> */<a name="line.34"></a>
+<span class="sourceLineNo">035</span>@InterfaceAudience.Public<a name="line.35"></a>
+<span class="sourceLineNo">036</span>public interface RawScanResultConsumer {<a name="line.36"></a>
+<span class="sourceLineNo">037</span><a name="line.37"></a>
+<span class="sourceLineNo">038</span>  /**<a name="line.38"></a>
+<span class="sourceLineNo">039</span>   * Used to resume a scan.<a name="line.39"></a>
+<span class="sourceLineNo">040</span>   */<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  @InterfaceAudience.Public<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  interface ScanResumer {<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>    /**<a name="line.44"></a>
+<span class="sourceLineNo">045</span>     * Resume the scan. You are free to call it multiple time but only the first call will take<a name="line.45"></a>
+<span class="sourceLineNo">046</span>     * effect.<a name="line.46"></a>
+<span class="sourceLineNo">047</span>     */<a name="line.47"></a>
+<span class="sourceLineNo">048</span>    void resume();<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  }<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  /**<a name="line.51"></a>
+<span class="sourceLineNo">052</span>   * Used to suspend or stop a scan, or get a scan cursor if available.<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   * &lt;p&gt;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   * Notice that, you should only call the {@link #suspend()} or {@link #terminate()} inside onNext<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   * or onHeartbeat method. A IllegalStateException will be thrown if you call them at other places.<a name="line.55"></a>
+<span class="sourceLineNo">056</span>   * &lt;p&gt;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>   * You can only call one of the {@link #suspend()} and {@link #terminate()} methods(of course you<a name="line.57"></a>
+<span class="sourceLineNo">058</span>   * are free to not call them both), and the methods are not reentrant. An IllegalStateException<a name="line.58"></a>
+<span class="sourceLineNo">059</span>   * will be thrown if you have already called one of the methods.<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   */<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  @InterfaceAudience.Public<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  interface ScanController {<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>    /**<a name="line.64"></a>
+<span class="sourceLineNo">065</span>     * Suspend the scan.<a name="line.65"></a>
+<span class="sourceLineNo">066</span>     * &lt;p&gt;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>     * This means we will stop fetching data in background, i.e., will not call onNext any more<a name="line.67"></a>
+<span class="sourceLineNo">068</span>     * before you resume the scan.<a name="line.68"></a>
+<span class="sourceLineNo">069</span>     * @return A resumer used to resume the scan later.<a name="line.69"></a>
+<span class="sourceLineNo">070</span>     */<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    ScanResumer suspend();<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>    /**<a name="line.73"></a>
+<span class="sourceLineNo">074</span>     * Terminate the scan.<a name="line.74"></a>
+<span class="sourceLineNo">075</span>     * &lt;p&gt;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>     * This is useful when you have got enough results and want to stop the scan in onNext method,<a name="line.76"></a>
+<span class="sourceLineNo">077</span>     * or you want to stop the scan in onHeartbeat method because it has spent too many time.<a name="line.77"></a>
+<span class="sourceLineNo">078</span>     */<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    void terminate();<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>    /**<a name="line.81"></a>
+<span class="sourceLineNo">082</span>     * Get the scan cursor if available.<a name="line.82"></a>
+<span class="sourceLineNo">083</span>     * @return The scan cursor.<a name="line.83"></a>
+<span class="sourceLineNo">084</span>     */<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    Optional&lt;Cursor&gt; cursor();<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  }<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  /**<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   * Indicate that we have receive some data.<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   * @param results the data fetched from HBase service.<a name="line.90"></a>
+<span class="sourceLineNo">091</span>   * @param controller used to suspend or terminate the scan. Notice that the {@code controller}<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   *          instance is only valid within scope of onNext method. You can only call its method in<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   *          onNext, do NOT store it and call it later outside onNext.<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  void onNext(Result[] results, ScanController controller);<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  /**<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * Indicate that there is an heartbeat message but we have not cumulated enough cells to call<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * onNext.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * &lt;p&gt;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * This method give you a chance to terminate a slow scan operation.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * @param controller used to suspend or terminate the scan. Notice that the {@code controller}<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   *          instance is only valid within the scope of onHeartbeat method. You can only call its<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   *          method in onHeartbeat, do NOT store it and call it later outside onHeartbeat.<a name="line.104"></a>
 <span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  void onError(Throwable error);<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  /**<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * Indicate that the scan operation is completed normally.<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  void onComplete();<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * If {@code scan.isScanMetricsEnabled()} returns true, then this method will be called prior to<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * all other methods in this interface to give you the {@link ScanMetrics} instance for this scan<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   * operation. The {@link ScanMetrics} instance will be updated on-the-fly during the scan, you can<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   * store it somewhere to get the metrics at any time if you want.<a name="line.117"></a>
+<span class="sourceLineNo">106</span>  default void onHeartbeat(ScanController controller) {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  }<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span>  /**<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * Indicate that we hit an unrecoverable error and the scan operation is terminated.<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   * &lt;p&gt;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   * We will not call {@link #onComplete()} after calling {@link #onError(Throwable)}.<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   */<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  void onError(Throwable error);<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>  /**<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * Indicate that the scan operation is completed normally.<a name="line.117"></a>
 <span class="sourceLineNo">118</span>   */<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  default void onScanMetricsCreated(ScanMetrics scanMetrics) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
-<span class="sourceLineNo">121</span>}<a name="line.121"></a>
+<span class="sourceLineNo">119</span>  void onComplete();<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>  /**<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * If {@code scan.isScanMetricsEnabled()} returns true, then this method will be called prior to<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   * all other methods in this interface to give you the {@link ScanMetrics} instance for this scan<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   * operation. The {@link ScanMetrics} instance will be updated on-the-fly during the scan, you can<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   * store it somewhere to get the metrics at any time if you want.<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   */<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  default void onScanMetricsCreated(ScanMetrics scanMetrics) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  }<a name="line.128"></a>
+<span class="sourceLineNo">129</span>}<a name="line.129"></a>