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 2018/07/03 20:06:16 UTC

[01/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site 8e541fb05 -> bcb555af5


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html
index 8cb24b3..bd3c59e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html
@@ -426,1268 +426,1286 @@
 <span class="sourceLineNo">418</span>   * @param inMemory if block is in-memory<a name="line.418"></a>
 <span class="sourceLineNo">419</span>   * @param wait if true, blocking wait when queue is full<a name="line.419"></a>
 <span class="sourceLineNo">420</span>   */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  public void cacheBlockWithWait(BlockCacheKey cacheKey, Cacheable cachedItem, boolean inMemory,<a name="line.421"></a>
+<span class="sourceLineNo">421</span>  private void cacheBlockWithWait(BlockCacheKey cacheKey, Cacheable cachedItem, boolean inMemory,<a name="line.421"></a>
 <span class="sourceLineNo">422</span>      boolean wait) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    if (LOG.isTraceEnabled()) LOG.trace("Caching key=" + cacheKey + ", item=" + cachedItem);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    if (!cacheEnabled) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      return;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>    if (backingMap.containsKey(cacheKey) || ramCache.containsKey(cacheKey)) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      Cacheable existingBlock = getBlock(cacheKey, false, false, false);<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>      try {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        int comparison = BlockCacheUtil.validateBlockAddition(existingBlock, cachedItem, cacheKey);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>        if (comparison != 0) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          if (comparison &lt; 0) {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>            LOG.warn("Cached block contents differ by nextBlockOnDiskSize. Keeping cached block.");<a name="line.435"></a>
-<span class="sourceLineNo">436</span>            return;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          } else {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>            LOG.warn("Cached block contents differ by nextBlockOnDiskSize. Caching new block.");<a name="line.438"></a>
-<span class="sourceLineNo">439</span>          }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        } else {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>          String msg = "Caching an already cached block: " + cacheKey;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>          msg += ". This is harmless and can happen in rare cases (see HBASE-8547)";<a name="line.442"></a>
-<span class="sourceLineNo">443</span>          LOG.warn(msg);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          return;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      } finally {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        // return the block since we need to decrement the count<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        returnBlock(cacheKey, existingBlock);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>    /*<a name="line.452"></a>
-<span class="sourceLineNo">453</span>     * Stuff the entry into the RAM cache so it can get drained to the persistent store<a name="line.453"></a>
-<span class="sourceLineNo">454</span>     */<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    RAMQueueEntry re =<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        new RAMQueueEntry(cacheKey, cachedItem, accessCount.incrementAndGet(), inMemory);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    if (ramCache.putIfAbsent(cacheKey, re) != null) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      return;<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    }<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    int queueNum = (cacheKey.hashCode() &amp; 0x7FFFFFFF) % writerQueues.size();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    BlockingQueue&lt;RAMQueueEntry&gt; bq = writerQueues.get(queueNum);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    boolean successfulAddition = false;<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    if (wait) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      try {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        successfulAddition = bq.offer(re, DEFAULT_CACHE_WAIT_TIME, TimeUnit.MILLISECONDS);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      } catch (InterruptedException e) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        Thread.currentThread().interrupt();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      }<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    } else {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      successfulAddition = bq.offer(re);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    if (!successfulAddition) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      ramCache.remove(cacheKey);<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      cacheStats.failInsert();<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    } else {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      this.blockNumber.increment();<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      this.heapSize.add(cachedItem.heapSize());<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      blocksByHFile.add(cacheKey);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>  /**<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * Get the buffer of the block with the specified key.<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * @param key block's cache key<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * @param caching true if the caller caches blocks on cache misses<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @param repeat Whether this is a repeat lookup for the same block<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * @param updateCacheMetrics Whether we should update cache metrics or not<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @return buffer of specified cache key, or null if not in cache<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  @Override<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  public Cacheable getBlock(BlockCacheKey key, boolean caching, boolean repeat,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      boolean updateCacheMetrics) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    if (!cacheEnabled) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      return null;<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    RAMQueueEntry re = ramCache.get(key);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    if (re != null) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      if (updateCacheMetrics) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>        cacheStats.hit(caching, key.isPrimary(), key.getBlockType());<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      }<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      re.access(accessCount.incrementAndGet());<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      return re.getData();<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    }<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    BucketEntry bucketEntry = backingMap.get(key);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    if (bucketEntry != null) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      long start = System.nanoTime();<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      ReentrantReadWriteLock lock = offsetLock.getLock(bucketEntry.offset());<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      try {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>        lock.readLock().lock();<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        // We can not read here even if backingMap does contain the given key because its offset<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        // maybe changed. If we lock BlockCacheKey instead of offset, then we can only check<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        // existence here.<a name="line.512"></a>
-<span class="sourceLineNo">513</span>        if (bucketEntry.equals(backingMap.get(key))) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>          // TODO : change this area - should be removed after server cells and<a name="line.514"></a>
-<span class="sourceLineNo">515</span>          // 12295 are available<a name="line.515"></a>
-<span class="sourceLineNo">516</span>          int len = bucketEntry.getLength();<a name="line.516"></a>
-<span class="sourceLineNo">517</span>          if (LOG.isTraceEnabled()) {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>            LOG.trace("Read offset=" + bucketEntry.offset() + ", len=" + len);<a name="line.518"></a>
+<span class="sourceLineNo">423</span>    if (cacheEnabled) {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      if (backingMap.containsKey(cacheKey) || ramCache.containsKey(cacheKey)) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        if (BlockCacheUtil.shouldReplaceExistingCacheBlock(this, cacheKey, cachedItem)) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>          cacheBlockWithWaitInternal(cacheKey, cachedItem, inMemory, wait);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        }<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      } else {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>        cacheBlockWithWaitInternal(cacheKey, cachedItem, inMemory, wait);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      }<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    }<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  }<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>  private void cacheBlockWithWaitInternal(BlockCacheKey cacheKey, Cacheable cachedItem,<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      boolean inMemory, boolean wait) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>    if (!cacheEnabled) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      return;<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    }<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    LOG.trace("Caching key={}, item={}", cacheKey, cachedItem);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    // Stuff the entry into the RAM cache so it can get drained to the persistent store<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    RAMQueueEntry re =<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        new RAMQueueEntry(cacheKey, cachedItem, accessCount.incrementAndGet(), inMemory);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    /**<a name="line.443"></a>
+<span class="sourceLineNo">444</span>     * Don't use ramCache.put(cacheKey, re) here. because there may be a existing entry with same<a name="line.444"></a>
+<span class="sourceLineNo">445</span>     * key in ramCache, the heap size of bucket cache need to update if replacing entry from<a name="line.445"></a>
+<span class="sourceLineNo">446</span>     * ramCache. But WriterThread will also remove entry from ramCache and update heap size, if<a name="line.446"></a>
+<span class="sourceLineNo">447</span>     * using ramCache.put(), It's possible that the removed entry in WriterThread is not the correct<a name="line.447"></a>
+<span class="sourceLineNo">448</span>     * one, then the heap size will mess up (HBASE-20789)<a name="line.448"></a>
+<span class="sourceLineNo">449</span>     */<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    if (ramCache.putIfAbsent(cacheKey, re) != null) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      return;<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    int queueNum = (cacheKey.hashCode() &amp; 0x7FFFFFFF) % writerQueues.size();<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    BlockingQueue&lt;RAMQueueEntry&gt; bq = writerQueues.get(queueNum);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    boolean successfulAddition = false;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    if (wait) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      try {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        successfulAddition = bq.offer(re, DEFAULT_CACHE_WAIT_TIME, TimeUnit.MILLISECONDS);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      } catch (InterruptedException e) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>        Thread.currentThread().interrupt();<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      }<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    } else {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      successfulAddition = bq.offer(re);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    if (!successfulAddition) {<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      ramCache.remove(cacheKey);<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      cacheStats.failInsert();<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    } else {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      this.blockNumber.increment();<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      this.heapSize.add(cachedItem.heapSize());<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      blocksByHFile.add(cacheKey);<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
+<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
+<span class="sourceLineNo">474</span><a name="line.474"></a>
+<span class="sourceLineNo">475</span>  /**<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   * Get the buffer of the block with the specified key.<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * @param key block's cache key<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   * @param caching true if the caller caches blocks on cache misses<a name="line.478"></a>
+<span class="sourceLineNo">479</span>   * @param repeat Whether this is a repeat lookup for the same block<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * @param updateCacheMetrics Whether we should update cache metrics or not<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   * @return buffer of specified cache key, or null if not in cache<a name="line.481"></a>
+<span class="sourceLineNo">482</span>   */<a name="line.482"></a>
+<span class="sourceLineNo">483</span>  @Override<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  public Cacheable getBlock(BlockCacheKey key, boolean caching, boolean repeat,<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      boolean updateCacheMetrics) {<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    if (!cacheEnabled) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      return null;<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    RAMQueueEntry re = ramCache.get(key);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    if (re != null) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      if (updateCacheMetrics) {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>        cacheStats.hit(caching, key.isPrimary(), key.getBlockType());<a name="line.492"></a>
+<span class="sourceLineNo">493</span>      }<a name="line.493"></a>
+<span class="sourceLineNo">494</span>      re.access(accessCount.incrementAndGet());<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      return re.getData();<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    BucketEntry bucketEntry = backingMap.get(key);<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    if (bucketEntry != null) {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      long start = System.nanoTime();<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      ReentrantReadWriteLock lock = offsetLock.getLock(bucketEntry.offset());<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      try {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        lock.readLock().lock();<a name="line.502"></a>
+<span class="sourceLineNo">503</span>        // We can not read here even if backingMap does contain the given key because its offset<a name="line.503"></a>
+<span class="sourceLineNo">504</span>        // maybe changed. If we lock BlockCacheKey instead of offset, then we can only check<a name="line.504"></a>
+<span class="sourceLineNo">505</span>        // existence here.<a name="line.505"></a>
+<span class="sourceLineNo">506</span>        if (bucketEntry.equals(backingMap.get(key))) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>          // TODO : change this area - should be removed after server cells and<a name="line.507"></a>
+<span class="sourceLineNo">508</span>          // 12295 are available<a name="line.508"></a>
+<span class="sourceLineNo">509</span>          int len = bucketEntry.getLength();<a name="line.509"></a>
+<span class="sourceLineNo">510</span>          if (LOG.isTraceEnabled()) {<a name="line.510"></a>
+<span class="sourceLineNo">511</span>            LOG.trace("Read offset=" + bucketEntry.offset() + ", len=" + len);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>          }<a name="line.512"></a>
+<span class="sourceLineNo">513</span>          Cacheable cachedBlock = ioEngine.read(bucketEntry.offset(), len,<a name="line.513"></a>
+<span class="sourceLineNo">514</span>              bucketEntry.deserializerReference(this.deserialiserMap));<a name="line.514"></a>
+<span class="sourceLineNo">515</span>          long timeTaken = System.nanoTime() - start;<a name="line.515"></a>
+<span class="sourceLineNo">516</span>          if (updateCacheMetrics) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>            cacheStats.hit(caching, key.isPrimary(), key.getBlockType());<a name="line.517"></a>
+<span class="sourceLineNo">518</span>            cacheStats.ioHit(timeTaken);<a name="line.518"></a>
 <span class="sourceLineNo">519</span>          }<a name="line.519"></a>
-<span class="sourceLineNo">520</span>          Cacheable cachedBlock = ioEngine.read(bucketEntry.offset(), len,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>              bucketEntry.deserializerReference(this.deserialiserMap));<a name="line.521"></a>
-<span class="sourceLineNo">522</span>          long timeTaken = System.nanoTime() - start;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>          if (updateCacheMetrics) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>            cacheStats.hit(caching, key.isPrimary(), key.getBlockType());<a name="line.524"></a>
-<span class="sourceLineNo">525</span>            cacheStats.ioHit(timeTaken);<a name="line.525"></a>
+<span class="sourceLineNo">520</span>          if (cachedBlock.getMemoryType() == MemoryType.SHARED) {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>            bucketEntry.incrementRefCountAndGet();<a name="line.521"></a>
+<span class="sourceLineNo">522</span>          }<a name="line.522"></a>
+<span class="sourceLineNo">523</span>          bucketEntry.access(accessCount.incrementAndGet());<a name="line.523"></a>
+<span class="sourceLineNo">524</span>          if (this.ioErrorStartTime &gt; 0) {<a name="line.524"></a>
+<span class="sourceLineNo">525</span>            ioErrorStartTime = -1;<a name="line.525"></a>
 <span class="sourceLineNo">526</span>          }<a name="line.526"></a>
-<span class="sourceLineNo">527</span>          if (cachedBlock.getMemoryType() == MemoryType.SHARED) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>            bucketEntry.incrementRefCountAndGet();<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          }<a name="line.529"></a>
-<span class="sourceLineNo">530</span>          bucketEntry.access(accessCount.incrementAndGet());<a name="line.530"></a>
-<span class="sourceLineNo">531</span>          if (this.ioErrorStartTime &gt; 0) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>            ioErrorStartTime = -1;<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          }<a name="line.533"></a>
-<span class="sourceLineNo">534</span>          return cachedBlock;<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        }<a name="line.535"></a>
-<span class="sourceLineNo">536</span>      } catch (IOException ioex) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>        LOG.error("Failed reading block " + key + " from bucket cache", ioex);<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        checkIOErrorIsTolerated();<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      } finally {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        lock.readLock().unlock();<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      }<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    }<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    if (!repeat &amp;&amp; updateCacheMetrics) {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      cacheStats.miss(caching, key.isPrimary(), key.getBlockType());<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    }<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    return null;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>  }<a name="line.547"></a>
-<span class="sourceLineNo">548</span><a name="line.548"></a>
-<span class="sourceLineNo">549</span>  @VisibleForTesting<a name="line.549"></a>
-<span class="sourceLineNo">550</span>  void blockEvicted(BlockCacheKey cacheKey, BucketEntry bucketEntry, boolean decrementBlockNumber) {<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    bucketAllocator.freeBlock(bucketEntry.offset());<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    realCacheSize.add(-1 * bucketEntry.getLength());<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    blocksByHFile.remove(cacheKey);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    if (decrementBlockNumber) {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      this.blockNumber.decrement();<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    }<a name="line.556"></a>
-<span class="sourceLineNo">557</span>  }<a name="line.557"></a>
-<span class="sourceLineNo">558</span><a name="line.558"></a>
-<span class="sourceLineNo">559</span>  @Override<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  public boolean evictBlock(BlockCacheKey cacheKey) {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    return evictBlock(cacheKey, true);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>  }<a name="line.562"></a>
-<span class="sourceLineNo">563</span><a name="line.563"></a>
-<span class="sourceLineNo">564</span>  // does not check for the ref count. Just tries to evict it if found in the<a name="line.564"></a>
-<span class="sourceLineNo">565</span>  // bucket map<a name="line.565"></a>
-<span class="sourceLineNo">566</span>  private boolean forceEvict(BlockCacheKey cacheKey) {<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    if (!cacheEnabled) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      return false;<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    }<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    RAMQueueEntry removedBlock = checkRamCache(cacheKey);<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    BucketEntry bucketEntry = backingMap.get(cacheKey);<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    if (bucketEntry == null) {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      if (removedBlock != null) {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>        cacheStats.evicted(0, cacheKey.isPrimary());<a name="line.574"></a>
-<span class="sourceLineNo">575</span>        return true;<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      } else {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>        return false;<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      }<a name="line.578"></a>
-<span class="sourceLineNo">579</span>    }<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    ReentrantReadWriteLock lock = offsetLock.getLock(bucketEntry.offset());<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    try {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      lock.writeLock().lock();<a name="line.582"></a>
-<span class="sourceLineNo">583</span>      if (backingMap.remove(cacheKey, bucketEntry)) {<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        blockEvicted(cacheKey, bucketEntry, removedBlock == null);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      } else {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>        return false;<a name="line.586"></a>
-<span class="sourceLineNo">587</span>      }<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    } finally {<a name="line.588"></a>
-<span class="sourceLineNo">589</span>      lock.writeLock().unlock();<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    }<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    cacheStats.evicted(bucketEntry.getCachedTime(), cacheKey.isPrimary());<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    return true;<a name="line.592"></a>
-<span class="sourceLineNo">593</span>  }<a name="line.593"></a>
-<span class="sourceLineNo">594</span><a name="line.594"></a>
-<span class="sourceLineNo">595</span>  private RAMQueueEntry checkRamCache(BlockCacheKey cacheKey) {<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    RAMQueueEntry removedBlock = ramCache.remove(cacheKey);<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    if (removedBlock != null) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      this.blockNumber.decrement();<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      this.heapSize.add(-1 * removedBlock.getData().heapSize());<a name="line.599"></a>
+<span class="sourceLineNo">527</span>          return cachedBlock;<a name="line.527"></a>
+<span class="sourceLineNo">528</span>        }<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      } catch (IOException ioex) {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>        LOG.error("Failed reading block " + key + " from bucket cache", ioex);<a name="line.530"></a>
+<span class="sourceLineNo">531</span>        checkIOErrorIsTolerated();<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      } finally {<a name="line.532"></a>
+<span class="sourceLineNo">533</span>        lock.readLock().unlock();<a name="line.533"></a>
+<span class="sourceLineNo">534</span>      }<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    }<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    if (!repeat &amp;&amp; updateCacheMetrics) {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      cacheStats.miss(caching, key.isPrimary(), key.getBlockType());<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    return null;<a name="line.539"></a>
+<span class="sourceLineNo">540</span>  }<a name="line.540"></a>
+<span class="sourceLineNo">541</span><a name="line.541"></a>
+<span class="sourceLineNo">542</span>  @VisibleForTesting<a name="line.542"></a>
+<span class="sourceLineNo">543</span>  void blockEvicted(BlockCacheKey cacheKey, BucketEntry bucketEntry, boolean decrementBlockNumber) {<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    bucketAllocator.freeBlock(bucketEntry.offset());<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    realCacheSize.add(-1 * bucketEntry.getLength());<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    blocksByHFile.remove(cacheKey);<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    if (decrementBlockNumber) {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      this.blockNumber.decrement();<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    }<a name="line.549"></a>
+<span class="sourceLineNo">550</span>  }<a name="line.550"></a>
+<span class="sourceLineNo">551</span><a name="line.551"></a>
+<span class="sourceLineNo">552</span>  @Override<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  public boolean evictBlock(BlockCacheKey cacheKey) {<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    return evictBlock(cacheKey, true);<a name="line.554"></a>
+<span class="sourceLineNo">555</span>  }<a name="line.555"></a>
+<span class="sourceLineNo">556</span><a name="line.556"></a>
+<span class="sourceLineNo">557</span>  // does not check for the ref count. Just tries to evict it if found in the<a name="line.557"></a>
+<span class="sourceLineNo">558</span>  // bucket map<a name="line.558"></a>
+<span class="sourceLineNo">559</span>  private boolean forceEvict(BlockCacheKey cacheKey) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    if (!cacheEnabled) {<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      return false;<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    }<a name="line.562"></a>
+<span class="sourceLineNo">563</span>    RAMQueueEntry removedBlock = checkRamCache(cacheKey);<a name="line.563"></a>
+<span class="sourceLineNo">564</span>    BucketEntry bucketEntry = backingMap.get(cacheKey);<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    if (bucketEntry == null) {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      if (removedBlock != null) {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>        cacheStats.evicted(0, cacheKey.isPrimary());<a name="line.567"></a>
+<span class="sourceLineNo">568</span>        return true;<a name="line.568"></a>
+<span class="sourceLineNo">569</span>      } else {<a name="line.569"></a>
+<span class="sourceLineNo">570</span>        return false;<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      }<a name="line.571"></a>
+<span class="sourceLineNo">572</span>    }<a name="line.572"></a>
+<span class="sourceLineNo">573</span>    ReentrantReadWriteLock lock = offsetLock.getLock(bucketEntry.offset());<a name="line.573"></a>
+<span class="sourceLineNo">574</span>    try {<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      lock.writeLock().lock();<a name="line.575"></a>
+<span class="sourceLineNo">576</span>      if (backingMap.remove(cacheKey, bucketEntry)) {<a name="line.576"></a>
+<span class="sourceLineNo">577</span>        blockEvicted(cacheKey, bucketEntry, removedBlock == null);<a name="line.577"></a>
+<span class="sourceLineNo">578</span>      } else {<a name="line.578"></a>
+<span class="sourceLineNo">579</span>        return false;<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      }<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    } finally {<a name="line.581"></a>
+<span class="sourceLineNo">582</span>      lock.writeLock().unlock();<a name="line.582"></a>
+<span class="sourceLineNo">583</span>    }<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    cacheStats.evicted(bucketEntry.getCachedTime(), cacheKey.isPrimary());<a name="line.584"></a>
+<span class="sourceLineNo">585</span>    return true;<a name="line.585"></a>
+<span class="sourceLineNo">586</span>  }<a name="line.586"></a>
+<span class="sourceLineNo">587</span><a name="line.587"></a>
+<span class="sourceLineNo">588</span>  private RAMQueueEntry checkRamCache(BlockCacheKey cacheKey) {<a name="line.588"></a>
+<span class="sourceLineNo">589</span>    RAMQueueEntry removedBlock = ramCache.remove(cacheKey);<a name="line.589"></a>
+<span class="sourceLineNo">590</span>    if (removedBlock != null) {<a name="line.590"></a>
+<span class="sourceLineNo">591</span>      this.blockNumber.decrement();<a name="line.591"></a>
+<span class="sourceLineNo">592</span>      this.heapSize.add(-1 * removedBlock.getData().heapSize());<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    }<a name="line.593"></a>
+<span class="sourceLineNo">594</span>    return removedBlock;<a name="line.594"></a>
+<span class="sourceLineNo">595</span>  }<a name="line.595"></a>
+<span class="sourceLineNo">596</span><a name="line.596"></a>
+<span class="sourceLineNo">597</span>  public boolean evictBlock(BlockCacheKey cacheKey, boolean deletedBlock) {<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    if (!cacheEnabled) {<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      return false;<a name="line.599"></a>
 <span class="sourceLineNo">600</span>    }<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    return removedBlock;<a name="line.601"></a>
-<span class="sourceLineNo">602</span>  }<a name="line.602"></a>
-<span class="sourceLineNo">603</span><a name="line.603"></a>
-<span class="sourceLineNo">604</span>  public boolean evictBlock(BlockCacheKey cacheKey, boolean deletedBlock) {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    if (!cacheEnabled) {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      return false;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    }<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    RAMQueueEntry removedBlock = checkRamCache(cacheKey);<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    BucketEntry bucketEntry = backingMap.get(cacheKey);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    if (bucketEntry == null) {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      if (removedBlock != null) {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>        cacheStats.evicted(0, cacheKey.isPrimary());<a name="line.612"></a>
-<span class="sourceLineNo">613</span>        return true;<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      } else {<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        return false;<a name="line.615"></a>
-<span class="sourceLineNo">616</span>      }<a name="line.616"></a>
-<span class="sourceLineNo">617</span>    }<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    ReentrantReadWriteLock lock = offsetLock.getLock(bucketEntry.offset());<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    try {<a name="line.619"></a>
-<span class="sourceLineNo">620</span>      lock.writeLock().lock();<a name="line.620"></a>
-<span class="sourceLineNo">621</span>      int refCount = bucketEntry.getRefCount();<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      if (refCount == 0) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>        if (backingMap.remove(cacheKey, bucketEntry)) {<a name="line.623"></a>
-<span class="sourceLineNo">624</span>          blockEvicted(cacheKey, bucketEntry, removedBlock == null);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>        } else {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>          return false;<a name="line.626"></a>
-<span class="sourceLineNo">627</span>        }<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      } else {<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        if(!deletedBlock) {<a name="line.629"></a>
-<span class="sourceLineNo">630</span>          if (LOG.isDebugEnabled()) {<a name="line.630"></a>
-<span class="sourceLineNo">631</span>            LOG.debug("This block " + cacheKey + " is still referred by " + refCount<a name="line.631"></a>
-<span class="sourceLineNo">632</span>                + " readers. Can not be freed now");<a name="line.632"></a>
+<span class="sourceLineNo">601</span>    RAMQueueEntry removedBlock = checkRamCache(cacheKey);<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    BucketEntry bucketEntry = backingMap.get(cacheKey);<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    if (bucketEntry == null) {<a name="line.603"></a>
+<span class="sourceLineNo">604</span>      if (removedBlock != null) {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>        cacheStats.evicted(0, cacheKey.isPrimary());<a name="line.605"></a>
+<span class="sourceLineNo">606</span>        return true;<a name="line.606"></a>
+<span class="sourceLineNo">607</span>      } else {<a name="line.607"></a>
+<span class="sourceLineNo">608</span>        return false;<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      }<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    }<a name="line.610"></a>
+<span class="sourceLineNo">611</span>    ReentrantReadWriteLock lock = offsetLock.getLock(bucketEntry.offset());<a name="line.611"></a>
+<span class="sourceLineNo">612</span>    try {<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      lock.writeLock().lock();<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      int refCount = bucketEntry.getRefCount();<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      if (refCount == 0) {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        if (backingMap.remove(cacheKey, bucketEntry)) {<a name="line.616"></a>
+<span class="sourceLineNo">617</span>          blockEvicted(cacheKey, bucketEntry, removedBlock == null);<a name="line.617"></a>
+<span class="sourceLineNo">618</span>        } else {<a name="line.618"></a>
+<span class="sourceLineNo">619</span>          return false;<a name="line.619"></a>
+<span class="sourceLineNo">620</span>        }<a name="line.620"></a>
+<span class="sourceLineNo">621</span>      } else {<a name="line.621"></a>
+<span class="sourceLineNo">622</span>        if(!deletedBlock) {<a name="line.622"></a>
+<span class="sourceLineNo">623</span>          if (LOG.isDebugEnabled()) {<a name="line.623"></a>
+<span class="sourceLineNo">624</span>            LOG.debug("This block " + cacheKey + " is still referred by " + refCount<a name="line.624"></a>
+<span class="sourceLineNo">625</span>                + " readers. Can not be freed now");<a name="line.625"></a>
+<span class="sourceLineNo">626</span>          }<a name="line.626"></a>
+<span class="sourceLineNo">627</span>          return false;<a name="line.627"></a>
+<span class="sourceLineNo">628</span>        } else {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>          if (LOG.isDebugEnabled()) {<a name="line.629"></a>
+<span class="sourceLineNo">630</span>            LOG.debug("This block " + cacheKey + " is still referred by " + refCount<a name="line.630"></a>
+<span class="sourceLineNo">631</span>                + " readers. Can not be freed now. Hence will mark this"<a name="line.631"></a>
+<span class="sourceLineNo">632</span>                + " for evicting at a later point");<a name="line.632"></a>
 <span class="sourceLineNo">633</span>          }<a name="line.633"></a>
-<span class="sourceLineNo">634</span>          return false;<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        } else {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>          if (LOG.isDebugEnabled()) {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>            LOG.debug("This block " + cacheKey + " is still referred by " + refCount<a name="line.637"></a>
-<span class="sourceLineNo">638</span>                + " readers. Can not be freed now. Hence will mark this"<a name="line.638"></a>
-<span class="sourceLineNo">639</span>                + " for evicting at a later point");<a name="line.639"></a>
-<span class="sourceLineNo">640</span>          }<a name="line.640"></a>
-<span class="sourceLineNo">641</span>          bucketEntry.markForEvict();<a name="line.641"></a>
-<span class="sourceLineNo">642</span>        }<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      }<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    } finally {<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      lock.writeLock().unlock();<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    }<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    cacheStats.evicted(bucketEntry.getCachedTime(), cacheKey.isPrimary());<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    return true;<a name="line.648"></a>
-<span class="sourceLineNo">649</span>  }<a name="line.649"></a>
-<span class="sourceLineNo">650</span><a name="line.650"></a>
-<span class="sourceLineNo">651</span>  /*<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * Statistics thread.  Periodically output cache statistics to the log.<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   */<a name="line.653"></a>
-<span class="sourceLineNo">654</span>  private static class StatisticsThread extends Thread {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    private final BucketCache bucketCache;<a name="line.655"></a>
-<span class="sourceLineNo">656</span><a name="line.656"></a>
-<span class="sourceLineNo">657</span>    public StatisticsThread(BucketCache bucketCache) {<a name="line.657"></a>
-<span class="sourceLineNo">658</span>      super("BucketCacheStatsThread");<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      setDaemon(true);<a name="line.659"></a>
-<span class="sourceLineNo">660</span>      this.bucketCache = bucketCache;<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    }<a name="line.661"></a>
-<span class="sourceLineNo">662</span><a name="line.662"></a>
-<span class="sourceLineNo">663</span>    @Override<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    public void run() {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>      bucketCache.logStats();<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    }<a name="line.666"></a>
-<span class="sourceLineNo">667</span>  }<a name="line.667"></a>
-<span class="sourceLineNo">668</span><a name="line.668"></a>
-<span class="sourceLineNo">669</span>  public void logStats() {<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    long totalSize = bucketAllocator.getTotalSize();<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    long usedSize = bucketAllocator.getUsedSize();<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    long freeSize = totalSize - usedSize;<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    long cacheSize = getRealCacheSize();<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    LOG.info("failedBlockAdditions=" + cacheStats.getFailedInserts() + ", " +<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        "totalSize=" + StringUtils.byteDesc(totalSize) + ", " +<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        "freeSize=" + StringUtils.byteDesc(freeSize) + ", " +<a name="line.676"></a>
-<span class="sourceLineNo">677</span>        "usedSize=" + StringUtils.byteDesc(usedSize) +", " +<a name="line.677"></a>
-<span class="sourceLineNo">678</span>        "cacheSize=" + StringUtils.byteDesc(cacheSize) +", " +<a name="line.678"></a>
-<span class="sourceLineNo">679</span>        "accesses=" + cacheStats.getRequestCount() + ", " +<a name="line.679"></a>
-<span class="sourceLineNo">680</span>        "hits=" + cacheStats.getHitCount() + ", " +<a name="line.680"></a>
-<span class="sourceLineNo">681</span>        "IOhitsPerSecond=" + cacheStats.getIOHitsPerSecond() + ", " +<a name="line.681"></a>
-<span class="sourceLineNo">682</span>        "IOTimePerHit=" + String.format("%.2f", cacheStats.getIOTimePerHit())+ ", " +<a name="line.682"></a>
-<span class="sourceLineNo">683</span>        "hitRatio=" + (cacheStats.getHitCount() == 0 ? "0," :<a name="line.683"></a>
-<span class="sourceLineNo">684</span>          (StringUtils.formatPercent(cacheStats.getHitRatio(), 2)+ ", ")) +<a name="line.684"></a>
-<span class="sourceLineNo">685</span>        "cachingAccesses=" + cacheStats.getRequestCachingCount() + ", " +<a name="line.685"></a>
-<span class="sourceLineNo">686</span>        "cachingHits=" + cacheStats.getHitCachingCount() + ", " +<a name="line.686"></a>
-<span class="sourceLineNo">687</span>        "cachingHitsRatio=" +(cacheStats.getHitCachingCount() == 0 ? "0," :<a name="line.687"></a>
-<span class="sourceLineNo">688</span>          (StringUtils.formatPercent(cacheStats.getHitCachingRatio(), 2)+ ", ")) +<a name="line.688"></a>
-<span class="sourceLineNo">689</span>        "evictions=" + cacheStats.getEvictionCount() + ", " +<a name="line.689"></a>
-<span class="sourceLineNo">690</span>        "evicted=" + cacheStats.getEvictedCount() + ", " +<a name="line.690"></a>
-<span class="sourceLineNo">691</span>        "evictedPerRun=" + cacheStats.evictedPerEviction());<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    cacheStats.reset();<a name="line.692"></a>
-<span class="sourceLineNo">693</span>  }<a name="line.693"></a>
-<span class="sourceLineNo">694</span><a name="line.694"></a>
-<span class="sourceLineNo">695</span>  public long getRealCacheSize() {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    return this.realCacheSize.sum();<a name="line.696"></a>
-<span class="sourceLineNo">697</span>  }<a name="line.697"></a>
-<span class="sourceLineNo">698</span><a name="line.698"></a>
-<span class="sourceLineNo">699</span>  private long acceptableSize() {<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    return (long) Math.floor(bucketAllocator.getTotalSize() * acceptableFactor);<a name="line.700"></a>
-<span class="sourceLineNo">701</span>  }<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>  @VisibleForTesting<a name="line.703"></a>
-<span class="sourceLineNo">704</span>  long getPartitionSize(float partitionFactor) {<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    return (long) Math.floor(bucketAllocator.getTotalSize() * partitionFactor * minFactor);<a name="line.705"></a>
-<span class="sourceLineNo">706</span>  }<a name="line.706"></a>
-<span class="sourceLineNo">707</span><a name="line.707"></a>
-<span class="sourceLineNo">708</span>  /**<a name="line.708"></a>
-<span class="sourceLineNo">709</span>   * Return the count of bucketSizeinfos still need free space<a name="line.709"></a>
-<span class="sourceLineNo">710</span>   */<a name="line.710"></a>
-<span class="sourceLineNo">711</span>  private int bucketSizesAboveThresholdCount(float minFactor) {<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    BucketAllocator.IndexStatistics[] stats = bucketAllocator.getIndexStatistics();<a name="line.712"></a>
-<span class="sourceLineNo">713</span>    int fullCount = 0;<a name="line.713"></a>
-<span class="sourceLineNo">714</span>    for (int i = 0; i &lt; stats.length; i++) {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>      long freeGoal = (long) Math.floor(stats[i].totalCount() * (1 - minFactor));<a name="line.715"></a>
-<span class="sourceLineNo">716</span>      freeGoal = Math.max(freeGoal, 1);<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      if (stats[i].freeCount() &lt; freeGoal) {<a name="line.717"></a>
-<span class="sourceLineNo">718</span>        fullCount++;<a name="line.718"></a>
-<span class="sourceLineNo">719</span>      }<a name="line.719"></a>
-<span class="sourceLineNo">720</span>    }<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    return fullCount;<a name="line.721"></a>
-<span class="sourceLineNo">722</span>  }<a name="line.722"></a>
-<span class="sourceLineNo">723</span><a name="line.723"></a>
-<span class="sourceLineNo">724</span>  /**<a name="line.724"></a>
-<span class="sourceLineNo">725</span>   * This method will find the buckets that are minimally occupied<a name="line.725"></a>
-<span class="sourceLineNo">726</span>   * and are not reference counted and will free them completely<a name="line.726"></a>
-<span class="sourceLineNo">727</span>   * without any constraint on the access times of the elements,<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   * and as a process will completely free at most the number of buckets<a name="line.728"></a>
-<span class="sourceLineNo">729</span>   * passed, sometimes it might not due to changing refCounts<a name="line.729"></a>
-<span class="sourceLineNo">730</span>   *<a name="line.730"></a>
-<span class="sourceLineNo">731</span>   * @param completelyFreeBucketsNeeded number of buckets to free<a name="line.731"></a>
-<span class="sourceLineNo">732</span>   **/<a name="line.732"></a>
-<span class="sourceLineNo">733</span>  private void freeEntireBuckets(int completelyFreeBucketsNeeded) {<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    if (completelyFreeBucketsNeeded != 0) {<a name="line.734"></a>
-<span class="sourceLineNo">735</span>      // First we will build a set where the offsets are reference counted, usually<a name="line.735"></a>
-<span class="sourceLineNo">736</span>      // this set is small around O(Handler Count) unless something else is wrong<a name="line.736"></a>
-<span class="sourceLineNo">737</span>      Set&lt;Integer&gt; inUseBuckets = new HashSet&lt;Integer&gt;();<a name="line.737"></a>
-<span class="sourceLineNo">738</span>      for (BucketEntry entry : backingMap.values()) {<a name="line.738"></a>
-<span class="sourceLineNo">739</span>        if (entry.getRefCount() != 0) {<a name="line.739"></a>
-<span class="sourceLineNo">740</span>          inUseBuckets.add(bucketAllocator.getBucketIndex(entry.offset()));<a name="line.740"></a>
-<span class="sourceLineNo">741</span>        }<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      }<a name="line.742"></a>
-<span class="sourceLineNo">743</span><a name="line.743"></a>
-<span class="sourceLineNo">744</span>      Set&lt;Integer&gt; candidateBuckets = bucketAllocator.getLeastFilledBuckets(<a name="line.744"></a>
-<span class="sourceLineNo">745</span>          inUseBuckets, completelyFreeBucketsNeeded);<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      for (Map.Entry&lt;BlockCacheKey, BucketEntry&gt; entry : backingMap.entrySet()) {<a name="line.746"></a>
-<span class="sourceLineNo">747</span>        if (candidateBuckets.contains(bucketAllocator<a name="line.747"></a>
-<span class="sourceLineNo">748</span>            .getBucketIndex(entry.getValue().offset()))) {<a name="line.748"></a>
-<span class="sourceLineNo">749</span>          evictBlock(entry.getKey(), false);<a name="line.749"></a>
-<span class="sourceLineNo">750</span>        }<a name="line.750"></a>
-<span class="sourceLineNo">751</span>      }<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    }<a name="line.752"></a>
-<span class="sourceLineNo">753</span>  }<a name="line.753"></a>
-<span class="sourceLineNo">754</span><a name="line.754"></a>
-<span class="sourceLineNo">755</span>  /**<a name="line.755"></a>
-<span class="sourceLineNo">756</span>   * Free the space if the used size reaches acceptableSize() or one size block<a name="line.756"></a>
-<span class="sourceLineNo">757</span>   * couldn't be allocated. When freeing the space, we use the LRU algorithm and<a name="line.757"></a>
-<span class="sourceLineNo">758</span>   * ensure there must be some blocks evicted<a name="line.758"></a>
-<span class="sourceLineNo">759</span>   * @param why Why we are being called<a name="line.759"></a>
-<span class="sourceLineNo">760</span>   */<a name="line.760"></a>
-<span class="sourceLineNo">761</span>  private void freeSpace(final String why) {<a name="line.761"></a>
-<span class="sourceLineNo">762</span>    // Ensure only one freeSpace progress at a time<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    if (!freeSpaceLock.tryLock()) {<a name="line.763"></a>
-<span class="sourceLineNo">764</span>      return;<a name="line.764"></a>
-<span class="sourceLineNo">765</span>    }<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    try {<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      freeInProgress = true;<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      long bytesToFreeWithoutExtra = 0;<a name="line.768"></a>
-<span class="sourceLineNo">769</span>      // Calculate free byte for each bucketSizeinfo<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      StringBuilder msgBuffer = LOG.isDebugEnabled()? new StringBuilder(): null;<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      BucketAllocator.IndexStatistics[] stats = bucketAllocator.getIndexStatistics();<a name="line.771"></a>
-<span class="sourceLineNo">772</span>      long[] bytesToFreeForBucket = new long[stats.length];<a name="line.772"></a>
-<span class="sourceLineNo">773</span>      for (int i = 0; i &lt; stats.length; i++) {<a name="line.773"></a>
-<span class="sourceLineNo">774</span>        bytesToFreeForBucket[i] = 0;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>        long freeGoal = (long) Math.floor(stats[i].totalCount() * (1 - minFactor));<a name="line.775"></a>
-<span class="sourceLineNo">776</span>        freeGoal = Math.max(freeGoal, 1);<a name="line.776"></a>
-<span class="sourceLineNo">777</span>        if (stats[i].freeCount() &lt; freeGoal) {<a name="line.777"></a>
-<span class="sourceLineNo">778</span>          bytesToFreeForBucket[i] = stats[i].itemSize() * (freeGoal - stats[i].freeCount());<a name="line.778"></a>
-<span class="sourceLineNo">779</span>          bytesToFreeWithoutExtra += bytesToFreeForBucket[i];<a name="line.779"></a>
-<span class="sourceLineNo">780</span>          if (msgBuffer != null) {<a name="line.780"></a>
-<span class="sourceLineNo">781</span>            msgBuffer.append("Free for bucketSize(" + stats[i].itemSize() + ")="<a name="line.781"></a>
-<span class="sourceLineNo">782</span>              + StringUtils.byteDesc(bytesToFreeForBucket[i]) + ", ");<a name="line.782"></a>
-<span class="sourceLineNo">783</span>          }<a name="line.783"></a>
-<span class="sourceLineNo">784</span>        }<a name="line.784"></a>
+<span class="sourceLineNo">634</span>          bucketEntry.markForEvict();<a name="line.634"></a>
+<span class="sourceLineNo">635</span>        }<a name="line.635"></a>
+<span class="sourceLineNo">636</span>      }<a name="line.636"></a>
+<span class="sourceLineNo">637</span>    } finally {<a name="line.637"></a>
+<span class="sourceLineNo">638</span>      lock.writeLock().unlock();<a name="line.638"></a>
+<span class="sourceLineNo">639</span>    }<a name="line.639"></a>
+<span class="sourceLineNo">640</span>    cacheStats.evicted(bucketEntry.getCachedTime(), cacheKey.isPrimary());<a name="line.640"></a>
+<span class="sourceLineNo">641</span>    return true;<a name="line.641"></a>
+<span class="sourceLineNo">642</span>  }<a name="line.642"></a>
+<span class="sourceLineNo">643</span><a name="line.643"></a>
+<span class="sourceLineNo">644</span>  /*<a name="line.644"></a>
+<span class="sourceLineNo">645</span>   * Statistics thread.  Periodically output cache statistics to the log.<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   */<a name="line.646"></a>
+<span class="sourceLineNo">647</span>  private static class StatisticsThread extends Thread {<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    private final BucketCache bucketCache;<a name="line.648"></a>
+<span class="sourceLineNo">649</span><a name="line.649"></a>
+<span class="sourceLineNo">650</span>    public StatisticsThread(BucketCache bucketCache) {<a name="line.650"></a>
+<span class="sourceLineNo">651</span>      super("BucketCacheStatsThread");<a name="line.651"></a>
+<span class="sourceLineNo">652</span>      setDaemon(true);<a name="line.652"></a>
+<span class="sourceLineNo">653</span>      this.bucketCache = bucketCache;<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    }<a name="line.654"></a>
+<span class="sourceLineNo">655</span><a name="line.655"></a>
+<span class="sourceLineNo">656</span>    @Override<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    public void run() {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      bucketCache.logStats();<a name="line.658"></a>
+<span class="sourceLineNo">659</span>    }<a name="line.659"></a>
+<span class="sourceLineNo">660</span>  }<a name="line.660"></a>
+<span class="sourceLineNo">661</span><a name="line.661"></a>
+<span class="sourceLineNo">662</span>  public void logStats() {<a name="line.662"></a>
+<span class="sourceLineNo">663</span>    long totalSize = bucketAllocator.getTotalSize();<a name="line.663"></a>
+<span class="sourceLineNo">664</span>    long usedSize = bucketAllocator.getUsedSize();<a name="line.664"></a>
+<span class="sourceLineNo">665</span>    long freeSize = totalSize - usedSize;<a name="line.665"></a>
+<span class="sourceLineNo">666</span>    long cacheSize = getRealCacheSize();<a name="line.666"></a>
+<span class="sourceLineNo">667</span>    LOG.info("failedBlockAdditions=" + cacheStats.getFailedInserts() + ", " +<a name="line.667"></a>
+<span class="sourceLineNo">668</span>        "totalSize=" + StringUtils.byteDesc(totalSize) + ", " +<a name="line.668"></a>
+<span class="sourceLineNo">669</span>        "freeSize=" + StringUtils.byteDesc(freeSize) + ", " +<a name="line.669"></a>
+<span class="sourceLineNo">670</span>        "usedSize=" + StringUtils.byteDesc(usedSize) +", " +<a name="line.670"></a>
+<span class="sourceLineNo">671</span>        "cacheSize=" + StringUtils.byteDesc(cacheSize) +", " +<a name="line.671"></a>
+<span class="sourceLineNo">672</span>        "accesses=" + cacheStats.getRequestCount() + ", " +<a name="line.672"></a>
+<span class="sourceLineNo">673</span>        "hits=" + cacheStats.getHitCount() + ", " +<a name="line.673"></a>
+<span class="sourceLineNo">674</span>        "IOhitsPerSecond=" + cacheStats.getIOHitsPerSecond() + ", " +<a name="line.674"></a>
+<span class="sourceLineNo">675</span>        "IOTimePerHit=" + String.format("%.2f", cacheStats.getIOTimePerHit())+ ", " +<a name="line.675"></a>
+<span class="sourceLineNo">676</span>        "hitRatio=" + (cacheStats.getHitCount() == 0 ? "0," :<a name="line.676"></a>
+<span class="sourceLineNo">677</span>          (StringUtils.formatPercent(cacheStats.getHitRatio(), 2)+ ", ")) +<a name="line.677"></a>
+<span class="sourceLineNo">678</span>        "cachingAccesses=" + cacheStats.getRequestCachingCount() + ", " +<a name="line.678"></a>
+<span class="sourceLineNo">679</span>        "cachingHits=" + cacheStats.getHitCachingCount() + ", " +<a name="line.679"></a>
+<span class="sourceLineNo">680</span>        "cachingHitsRatio=" +(cacheStats.getHitCachingCount() == 0 ? "0," :<a name="line.680"></a>
+<span class="sourceLineNo">681</span>          (StringUtils.formatPercent(cacheStats.getHitCachingRatio(), 2)+ ", ")) +<a name="line.681"></a>
+<span class="sourceLineNo">682</span>        "evictions=" + cacheStats.getEvictionCount() + ", " +<a name="line.682"></a>
+<span class="sourceLineNo">683</span>        "evicted=" + cacheStats.getEvictedCount() + ", " +<a name="line.683"></a>
+<span class="sourceLineNo">684</span>        "evictedPerRun=" + cacheStats.evictedPerEviction());<a name="line.684"></a>
+<span class="sourceLineNo">685</span>    cacheStats.reset();<a name="line.685"></a>
+<span class="sourceLineNo">686</span>  }<a name="line.686"></a>
+<span class="sourceLineNo">687</span><a name="line.687"></a>
+<span class="sourceLineNo">688</span>  public long getRealCacheSize() {<a name="line.688"></a>
+<span class="sourceLineNo">689</span>    return this.realCacheSize.sum();<a name="line.689"></a>
+<span class="sourceLineNo">690</span>  }<a name="line.690"></a>
+<span class="sourceLineNo">691</span><a name="line.691"></a>
+<span class="sourceLineNo">692</span>  private long acceptableSize() {<a name="line.692"></a>
+<span class="sourceLineNo">693</span>    return (long) Math.floor(bucketAllocator.getTotalSize() * acceptableFactor);<a name="line.693"></a>
+<span class="sourceLineNo">694</span>  }<a name="line.694"></a>
+<span class="sourceLineNo">695</span><a name="line.695"></a>
+<span class="sourceLineNo">696</span>  @VisibleForTesting<a name="line.696"></a>
+<span class="sourceLineNo">697</span>  long getPartitionSize(float partitionFactor) {<a name="line.697"></a>
+<span class="sourceLineNo">698</span>    return (long) Math.floor(bucketAllocator.getTotalSize() * partitionFactor * minFactor);<a name="line.698"></a>
+<span class="sourceLineNo">699</span>  }<a name="line.699"></a>
+<span class="sourceLineNo">700</span><a name="line.700"></a>
+<span class="sourceLineNo">701</span>  /**<a name="line.701"></a>
+<span class="sourceLineNo">702</span>   * Return the count of bucketSizeinfos still need free space<a name="line.702"></a>
+<span class="sourceLineNo">703</span>   */<a name="line.703"></a>
+<span class="sourceLineNo">704</span>  private int bucketSizesAboveThresholdCount(float minFactor) {<a name="line.704"></a>
+<span class="sourceLineNo">705</span>    BucketAllocator.IndexStatistics[] stats = bucketAllocator.getIndexStatistics();<a name="line.705"></a>
+<span class="sourceLineNo">706</span>    int fullCount = 0;<a name="line.706"></a>
+<span class="sourceLineNo">707</span>    for (int i = 0; i &lt; stats.length; i++) {<a name="line.707"></a>
+<span class="sourceLineNo">708</span>      long freeGoal = (long) Math.floor(stats[i].totalCount() * (1 - minFactor));<a name="line.708"></a>
+<span class="sourceLineNo">709</span>      freeGoal = Math.max(freeGoal, 1);<a name="line.709"></a>
+<span class="sourceLineNo">710</span>      if (stats[i].freeCount() &lt; freeGoal) {<a name="line.710"></a>
+<span class="sourceLineNo">711</span>        fullCount++;<a name="line.711"></a>
+<span class="sourceLineNo">712</span>      }<a name="line.712"></a>
+<span class="sourceLineNo">713</span>    }<a name="line.713"></a>
+<span class="sourceLineNo">714</span>    return fullCount;<a name="line.714"></a>
+<span class="sourceLineNo">715</span>  }<a name="line.715"></a>
+<span class="sourceLineNo">716</span><a name="line.716"></a>
+<span class="sourceLineNo">717</span>  /**<a name="line.717"></a>
+<span class="sourceLineNo">718</span>   * This method will find the buckets that are minimally occupied<a name="line.718"></a>
+<span class="sourceLineNo">719</span>   * and are not reference counted and will free them completely<a name="line.719"></a>
+<span class="sourceLineNo">720</span>   * without any constraint on the access times of the elements,<a name="line.720"></a>
+<span class="sourceLineNo">721</span>   * and as a process will completely free at most the number of buckets<a name="line.721"></a>
+<span class="sourceLineNo">722</span>   * passed, sometimes it might not due to changing refCounts<a name="line.722"></a>
+<span class="sourceLineNo">723</span>   *<a name="line.723"></a>
+<span class="sourceLineNo">724</span>   * @param completelyFreeBucketsNeeded number of buckets to free<a name="line.724"></a>
+<span class="sourceLineNo">725</span>   **/<a name="line.725"></a>
+<span class="sourceLineNo">726</span>  private void freeEntireBuckets(int completelyFreeBucketsNeeded) {<a name="line.726"></a>
+<span class="sourceLineNo">727</span>    if (completelyFreeBucketsNeeded != 0) {<a name="line.727"></a>
+<span class="sourceLineNo">728</span>      // First we will build a set where the offsets are reference counted, usually<a name="line.728"></a>
+<span class="sourceLineNo">729</span>      // this set is small around O(Handler Count) unless something else is wrong<a name="line.729"></a>
+<span class="sourceLineNo">730</span>      Set&lt;Integer&gt; inUseBuckets = new HashSet&lt;Integer&gt;();<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      for (BucketEntry entry : backingMap.values()) {<a name="line.731"></a>
+<span class="sourceLineNo">732</span>        if (entry.getRefCount() != 0) {<a name="line.732"></a>
+<span class="sourceLineNo">733</span>          inUseBuckets.add(bucketAllocator.getBucketIndex(entry.offset()));<a name="line.733"></a>
+<span class="sourceLineNo">734</span>        }<a name="line.734"></a>
+<span class="sourceLineNo">735</span>      }<a name="line.735"></a>
+<span class="sourceLineNo">736</span><a name="line.736"></a>
+<span class="sourceLineNo">737</span>      Set&lt;Integer&gt; candidateBuckets = bucketAllocator.getLeastFilledBuckets(<a name="line.737"></a>
+<span class="sourceLineNo">738</span>          inUseBuckets, completelyFreeBucketsNeeded);<a name="line.738"></a>
+<span class="sourceLineNo">739</span>      for (Map.Entry&lt;BlockCacheKey, BucketEntry&gt; entry : backingMap.entrySet()) {<a name="line.739"></a>
+<span class="sourceLineNo">740</span>        if (candidateBuckets.contains(bucketAllocator<a name="line.740"></a>
+<span class="sourceLineNo">741</span>            .getBucketIndex(entry.getValue().offset()))) {<a name="line.741"></a>
+<span class="sourceLineNo">742</span>          evictBlock(entry.getKey(), false);<a name="line.742"></a>
+<span class="sourceLineNo">743</span>        }<a name="line.743"></a>
+<span class="sourceLineNo">744</span>      }<a name="line.744"></a>
+<span class="sourceLineNo">745</span>    }<a name="line.745"></a>
+<span class="sourceLineNo">746</span>  }<a name="line.746"></a>
+<span class="sourceLineNo">747</span><a name="line.747"></a>
+<span class="sourceLineNo">748</span>  /**<a name="line.748"></a>
+<span class="sourceLineNo">749</span>   * Free the space if the used size reaches acceptableSize() or one size block<a name="line.749"></a>
+<span class="sourceLineNo">750</span>   * couldn't be allocated. When freeing the space, we use the LRU algorithm and<a name="line.750"></a>
+<span class="sourceLineNo">751</span>   * ensure there must be some blocks evicted<a name="line.751"></a>
+<span class="sourceLineNo">752</span>   * @param why Why we are being called<a name="line.752"></a>
+<span class="sourceLineNo">753</span>   */<a name="line.753"></a>
+<span class="sourceLineNo">754</span>  private void freeSpace(final String why) {<a name="line.754"></a>
+<span class="sourceLineNo">755</span>    // Ensure only one freeSpace progress at a time<a name="line.755"></a>
+<span class="sourceLineNo">756</span>    if (!freeSpaceLock.tryLock()) {<a name="line.756"></a>
+<span class="sourceLineNo">757</span>      return;<a name="line.757"></a>
+<span class="sourceLineNo">758</span>    }<a name="line.758"></a>
+<span class="sourceLineNo">759</span>    try {<a name="line.759"></a>
+<span class="sourceLineNo">760</span>      freeInProgress = true;<a name="line.760"></a>
+<span class="sourceLineNo">761</span>      long bytesToFreeWithoutExtra = 0;<a name="line.761"></a>
+<span class="sourceLineNo">762</span>      // Calculate free byte for each bucketSizeinfo<a name="line.762"></a>
+<span class="sourceLineNo">763</span>      StringBuilder msgBuffer = LOG.isDebugEnabled()? new StringBuilder(): null;<a name="line.763"></a>
+<span class="sourceLineNo">764</span>      BucketAllocator.IndexStatistics[] stats = bucketAllocator.getIndexStatistics();<a name="line.764"></a>
+<span class="sourceLineNo">765</span>      long[] bytesToFreeForBucket = new long[stats.length];<a name="line.765"></a>
+<span class="sourceLineNo">766</span>      for (int i = 0; i &lt; stats.length; i++) {<a name="line.766"></a>
+<span class="sourceLineNo">767</span>        bytesToFreeForBucket[i] = 0;<a name="line.767"></a>
+<span class="sourceLineNo">768</span>        long freeGoal = (long) Math.floor(stats[i].totalCount() * (1 - minFactor));<a name="line.768"></a>
+<span class="sourceLineNo">769</span>        freeGoal = Math.max(freeGoal, 1);<a name="line.769"></a>
+<span class="sourceLineNo">770</span>        if (stats[i].freeCount() &lt; freeGoal) {<a name="line.770"></a>
+<span class="sourceLineNo">771</span>          bytesToFreeForBucket[i] = stats[i].itemSize() * (freeGoal - stats[i].freeCount());<a name="line.771"></a>
+<span class="sourceLineNo">772</span>          bytesToFreeWithoutExtra += bytesToFreeForBucket[i];<a name="line.772"></a>
+<span class="sourceLineNo">773</span>          if (msgBuffer != null) {<a name="line.773"></a>
+<span class="sourceLineNo">774</span>            msgBuffer.append("Free for bucketSize(" + stats[i].itemSize() + ")="<a name="line.774"></a>
+<span class="sourceLineNo">775</span>              + StringUtils.byteDesc(bytesToFreeForBucket[i]) + ", ");<a name="line.775"></a>
+<span class="sourceLineNo">776</span>          }<a name="line.776"></a>
+<span class="sourceLineNo">777</span>        }<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      }<a name="line.778"></a>
+<span class="sourceLineNo">779</span>      if (msgBuffer != null) {<a name="line.779"></a>
+<span class="sourceLineNo">780</span>        msgBuffer.append("Free for total=" + StringUtils.byteDesc(bytesToFreeWithoutExtra) + ", ");<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      }<a name="line.781"></a>
+<span class="sourceLineNo">782</span><a name="line.782"></a>
+<span class="sourceLineNo">783</span>      if (bytesToFreeWithoutExtra &lt;= 0) {<a name="line.783"></a>
+<span class="sourceLineNo">784</span>        return;<a name="line.784"></a>
 <span class="sourceLineNo">785</span>      }<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      if (msgBuffer != null) {<a name="line.786"></a>
-<span class="sourceLineNo">787</span>        msgBuffer.append("Free for total=" + StringUtils.byteDesc(bytesToFreeWithoutExtra) + ", ");<a name="line.787"></a>
-<span class="sourceLineNo">788</span>      }<a name="line.788"></a>
-<span class="sourceLineNo">789</span><a name="line.789"></a>
-<span class="sourceLineNo">790</span>      if (bytesToFreeWithoutExtra &lt;= 0) {<a name="line.790"></a>
-<span class="sourceLineNo">791</span>        return;<a name="line.791"></a>
+<span class="sourceLineNo">786</span>      long currentSize = bucketAllocator.getUsedSize();<a name="line.786"></a>
+<span class="sourceLineNo">787</span>      long totalSize = bucketAllocator.getTotalSize();<a name="line.787"></a>
+<span class="sourceLineNo">788</span>      if (LOG.isDebugEnabled() &amp;&amp; msgBuffer != null) {<a name="line.788"></a>
+<span class="sourceLineNo">789</span>        LOG.debug("Free started because \"" + why + "\"; " + msgBuffer.toString() +<a name="line.789"></a>
+<span class="sourceLineNo">790</span>          " of current used=" + StringUtils.byteDesc(currentSize) + ", actual cacheSize=" +<a name="line.790"></a>
+<span class="sourceLineNo">791</span>          StringUtils.byteDesc(realCacheSize.sum()) + ", total=" + StringUtils.byteDesc(totalSize));<a name="line.791"></a>
 <span class="sourceLineNo">792</span>      }<a name="line.792"></a>
-<span class="sourceLineNo">793</span>      long currentSize = bucketAllocator.getUsedSize();<a name="line.793"></a>
-<span class="sourceLineNo">794</span>      long totalSize = bucketAllocator.getTotalSize();<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      if (LOG.isDebugEnabled() &amp;&amp; msgBuffer != null) {<a name="line.795"></a>
-<span class="sourceLineNo">796</span>        LOG.debug("Free started because \"" + why + "\"; " + msgBuffer.toString() +<a name="line.796"></a>
-<span class="sourceLineNo">797</span>          " of current used=" + StringUtils.byteDesc(currentSize) + ", actual cacheSize=" +<a name="line.797"></a>
-<span class="sourceLineNo">798</span>          StringUtils.byteDesc(realCacheSize.sum()) + ", total=" + StringUtils.byteDesc(totalSize));<a name="line.798"></a>
-<span class="sourceLineNo">799</span>      }<a name="line.799"></a>
-<span class="sourceLineNo">800</span><a name="line.800"></a>
-<span class="sourceLineNo">801</span>      long bytesToFreeWithExtra = (long) Math.floor(bytesToFreeWithoutExtra<a name="line.801"></a>
-<span class="sourceLineNo">802</span>          * (1 + extraFreeFactor));<a name="line.802"></a>
-<span class="sourceLineNo">803</span><a name="line.803"></a>
-<span class="sourceLineNo">804</span>      // Instantiate priority buckets<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      BucketEntryGroup bucketSingle = new BucketEntryGroup(bytesToFreeWithExtra,<a name="line.805"></a>
-<span class="sourceLineNo">806</span>          blockSize, getPartitionSize(singleFactor));<a name="line.806"></a>
-<span class="sourceLineNo">807</span>      BucketEntryGroup bucketMulti = new BucketEntryGroup(bytesToFreeWithExtra,<a name="line.807"></a>
-<span class="sourceLineNo">808</span>          blockSize, getPartitionSize(multiFactor));<a name="line.808"></a>
-<span class="sourceLineNo">809</span>      BucketEntryGroup bucketMemory = new BucketEntryGroup(bytesToFreeWithExtra,<a name="line.809"></a>
-<span class="sourceLineNo">810</span>          blockSize, getPartitionSize(memoryFactor));<a name="line.810"></a>
-<span class="sourceLineNo">811</span><a name="line.811"></a>
-<span class="sourceLineNo">812</span>      // Scan entire map putting bucket entry into appropriate bucket entry<a name="line.812"></a>
-<span class="sourceLineNo">813</span>      // group<a name="line.813"></a>
-<span class="sourceLineNo">814</span>      for (Map.Entry&lt;BlockCacheKey, BucketEntry&gt; bucketEntryWithKey : backingMap.entrySet()) {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>        switch (bucketEntryWithKey.getValue().getPriority()) {<a name="line.815"></a>
-<span class="sourceLineNo">816</span>          case SINGLE: {<a name="line.816"></a>
-<span class="sourceLineNo">817</span>            bucketSingle.add(bucketEntryWithKey);<a name="line.817"></a>
-<span class="sourceLineNo">818</span>            break;<a name="line.818"></a>
-<span class="sourceLineNo">819</span>          }<a name="line.819"></a>
-<span class="sourceLineNo">820</span>          case MULTI: {<a name="line.820"></a>
-<span class="sourceLineNo">821</span>            bucketMulti.add(bucketEntryWithKey);<a name="line.821"></a>
-<span class="sourceLineNo">822</span>            break;<a name="line.822"></a>
-<span class="sourceLineNo">823</span>          }<a name="line.823"></a>
-<span class="sourceLineNo">824</span>          case MEMORY: {<a name="line.824"></a>
-<span class="sourceLineNo">825</span>            bucketMemory.add(bucketEntryWithKey);<a name="line.825"></a>
-<span class="sourceLineNo">826</span>            break;<a name="line.826"></a>
-<span class="sourceLineNo">827</span>          }<a name="line.827"></a>
-<span class="sourceLineNo">828</span>        }<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      }<a name="line.829"></a>
+<span class="sourceLineNo">793</span><a name="line.793"></a>
+<span class="sourceLineNo">794</span>      long bytesToFreeWithExtra = (long) Math.floor(bytesToFreeWithoutExtra<a name="line.794"></a>
+<span class="sourceLineNo">795</span>          * (1 + extraFreeFactor));<a name="line.795"></a>
+<span class="sourceLineNo">796</span><a name="line.796"></a>
+<span class="sourceLineNo">797</span>      // Instantiate priority buckets<a name="line.797"></a>
+<span class="sourceLineNo">798</span>      BucketEntryGroup bucketSingle = new BucketEntryGroup(bytesToFreeWithExtra,<a name="line.798"></a>
+<span class="sourceLineNo">799</span>          blockSize, getPartitionSize(singleFactor));<a name="line.799"></a>
+<span class="sourceLineNo">800</span>      BucketEntryGroup bucketMulti = new BucketEntryGroup(bytesToFreeWithExtra,<a name="line.800"></a>
+<span class="sourceLineNo">801</span>          blockSize, getPartitionSize(multiFactor));<a name="line.801"></a>
+<span class="sourceLineNo">802</span>      BucketEntryGroup bucketMemory = new BucketEntryGroup(bytesToFreeWithExtra,<a name="line.802"></a>
+<span class="sourceLineNo">803</span>          blockSize, getPartitionSize(memoryFactor));<a name="line.803"></a>
+<span class="sourceLineNo">804</span><a name="line.804"></a>
+<span class="sourceLineNo">805</span>      // Scan entire map putting bucket entry into appropriate bucket entry<a name="line.805"></a>
+<span class="sourceLineNo">806</span>      // group<a name="line.806"></a>
+<span class="sourceLineNo">807</span>      for (Map.Entry&lt;BlockCacheKey, BucketEntry&gt; bucketEntryWithKey : backingMap.entrySet()) {<a name="line.807"></a>
+<span class="sourceLineNo">808</span>        switch (bucketEntryWithKey.getValue().getPriority()) {<a name="line.808"></a>
+<span class="sourceLineNo">809</span>          case SINGLE: {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>            bucketSingle.add(bucketEntryWithKey);<a name="line.810"></a>
+<span class="sourceLineNo">811</span>            break;<a name="line.811"></a>
+<span class="sourceLineNo">812</span>          }<a name="line.812"></a>
+<span class="sourceLineNo">813</span>          case MULTI: {<a name="line.813"></a>
+<span class="sourceLineNo">814</span>            bucketMulti.add(bucketEntryWithKey);<a name="line.814"></a>
+<span class="sourceLineNo">815</span>            break;<a name="line.815"></a>
+<span class="sourceLineNo">816</span>          }<a name="line.816"></a>
+<span class="sourceLineNo">817</span>          case MEMORY: {<a name="line.817"></a>
+<span class="sourceLineNo">818</span>            bucketMemory.add(bucketEntryWithKey);<a name="line.818"></a>
+<span class="sourceLineNo">819</span>            break;<a name="line.819"></a>
+<span class="sourceLineNo">820</span>          }<a name="line.820"></a>
+<span class="sourceLineNo">821</span>        }<a name="line.821"></a>
+<span class="sourceLineNo">822</span>      }<a name="line.822"></a>
+<span class="sourceLineNo">823</span><a name="line.823"></a>
+<span class="sourceLineNo">824</span>      PriorityQueue&lt;BucketEntryGroup&gt; bucketQueue = new PriorityQueue&lt;&gt;(3,<a name="line.824"></a>
+<span class="sourceLineNo">825</span>          Comparator.comparingLong(BucketEntryGroup::overflow));<a name="line.825"></a>
+<span class="sourceLineNo">826</span><a name="line.826"></a>
+<span class="sourceLineNo">827</span>      bucketQueue.add(bucketSingle);<a name="line.827"></a>
+<span class="sourceLineNo">828</span>      bucketQueue.add(bucketMulti);<a name="line.828"></a>
+<span class="sourceLineNo">829</span>      bucketQueue.add(bucketMemory);<a name="line.829"></a>
 <span class="sourceLineNo">830</span><a name="line.830"></a>
-<span class="sourceLineNo">831</span>      PriorityQueue&lt;BucketEntryGroup&gt; bucketQueue = new PriorityQueue&lt;&gt;(3,<a name="line.831"></a>
-<span class="sourceLineNo">832</span>          Comparator.comparingLong(BucketEntryGroup::overflow));<a name="line.832"></a>
+<span class="sourceLineNo">831</span>      int remainingBuckets = 3;<a name="line.831"></a>
+<span class="sourceLineNo">832</span>      long bytesFreed = 0;<a name="line.832"></a>
 <span class="sourceLineNo">833</span><a name="line.833"></a>
-<span class="sourceLineNo">834</span>      bucketQueue.add(bucketSingle);<a name="line.834"></a>
-<span class="sourceLineNo">835</span>      bucketQueue.add(bucketMulti);<a name="line.835"></a>
-<span class="sourceLineNo">836</span>      bucketQueue.add(bucketMemory);<a name="line.836"></a>
-<span class="sourceLineNo">837</span><a name="line.837"></a>
-<span class="sourceLineNo">838</span>      int remainingBuckets = 3;<a name="line.838"></a>
-<span class="sourceLineNo">839</span>      long bytesFreed = 0;<a name="line.839"></a>
-<span class="sourceLineNo">840</span><a name="line.840"></a>
-<span class="sourceLineNo">841</span>      BucketEntryGroup bucketGroup;<a name="line.841"></a>
-<span class="sourceLineNo">842</span>      while ((bucketGroup = bucketQueue.poll()) != null) {<a name="line.842"></a>
-<span class="sourceLineNo">843</span>        long overflow = bucketGroup.overflow();<a name="line.843"></a>
-<span class="sourceLineNo">844</span>        if (overflow &gt; 0) {<a name="line.844"></a>
-<span class="sourceLineNo">845</span>          long bucketBytesToFree = Math.min(overflow,<a name="line.845"></a>
-<span class="sourceLineNo">846</span>              (bytesToFreeWithoutExtra - bytesFreed) / remainingBuckets);<a name="line.846"></a>
-<span class="sourceLineNo">847</span>          bytesFreed += bucketGroup.free(bucketBytesToFree);<a name="line.847"></a>
-<span class="sourceLineNo">848</span>        }<a name="line.848"></a>
-<span class="sourceLineNo">849</span>        remainingBuckets--;<a name="line.849"></a>
-<span class="sourceLineNo">850</span>      }<a name="line.850"></a>
-<span class="sourceLineNo">851</span><a name="line.851"></a>
-<span class="sourceLineNo">852</span>      // Check and free if there are buckets that still need freeing of space<a name="line.852"></a>
-<span class="sourceLineNo">853</span>      if (bucketSizesAboveThresholdCount(minFactor) &gt; 0) {<a name="line.853"></a>
-<span class="sourceLineNo">854</span>        bucketQueue.clear();<a name="line.854"></a>
-<span class="sourceLineNo">855</span>        remainingBuckets = 3;<a name="line.855"></a>
-<span class="sourceLineNo">856</span><a name="line.856"></a>
-<span class="sourceLineNo">857</span>        bucketQueue.add(bucketSingle);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>        bucketQueue.add(bucketMulti);<a name="line.858"></a>
-<span class="sourceLineNo">859</span>        bucketQueue.add(bucketMemory);<a name="line.859"></a>
+<span class="sourceLineNo">834</span>      BucketEntryGroup bucketGroup;<a name="line.834"></a>
+<span class="sourceLineNo">835</span>      while ((bucketGroup = bucketQueue.poll()) != null) {<a name="line.835"></a>
+<span class="sourceLineNo">836</span>        long overflow = bucketGroup.overflow();<a name="line.836"></a>
+<span class="sourceLineNo">837</span>        if (overflow &gt; 0) {<a name="line.837"></a>
+<span class="sourceLineNo">838</span>          long bucketBytesToFree = Math.min(overflow,<a name="line.838"></a>
+<span class="sourceLineNo">839</span>              (bytesToFreeWithoutExtra - bytesFreed) / remainingBuckets);<a name="line.839"></a>
+<span class="sourceLineNo">840</span>          bytesFreed += bucketGroup.free(bucketBytesToFree);<a name="line.840"></a>
+<span class="sourceLineNo">841</span>        }<a name="line.841"></a>
+<span class="sourceLineNo">842</span>        remainingBuckets--;<a name="line.842"></a>
+<span class="sourceLineNo">843</span>      }<a name="line.843"></a>
+<span class="sourceLineNo">844</span><a name="line.844"></a>
+<span class="sourceLineNo">845</span>      // Check and free if there are buckets that still need freeing of space<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      if (bucketSizesAboveThresholdCount(minFactor) &gt; 0) {<a name="line.846"></a>
+<span class="sourceLineNo">847</span>        bucketQueue.clear();<a name="line.847"></a>
+<span class="sourceLineNo">848</span>        remainingBuckets = 3;<a name="line.848"></a>
+<span class="sourceLineNo">849</span><a name="line.849"></a>
+<span class="sourceLineNo">850</span>        bucketQueue.add(bucketSingle);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>        bucketQueue.add(bucketMulti);<a name="line.851"></a>
+<span class="sourceLineNo">852</span>        bucketQueue.add(bucketMemory);<a name="line.852"></a>
+<span class="sourceLineNo">853</span><a name="line.853"></a>
+<span class="sourceLineNo">854</span>        while ((bucketGroup = bucketQueue.poll()) != null) {<a name="line.854"></a>
+<span class="sourceLineNo">855</span>          long bucketBytesToFree = (bytesToFreeWithExtra - bytesFreed) / remainingBuckets;<a name="line.855"></a>
+<span class="sourceLineNo">856</span>          bytesFreed += bucketGroup.free(bucketBytesToFree);<a name="line.856"></a>
+<span class="sourceLineNo">857</span>          remainingBuckets--;<a name="line.857"></a>
+<span class="sourceLineNo">858</span>        }<a name="line.858"></a>
+<span class="sourceLineNo">859</span>      }<a name="line.859"></a>
 <span class="sourceLineNo">860</span><a name="line.860"></a>
-<span class="sourceLineNo">861</span>        while ((bucketGroup = bucketQueue.poll()) != null) {<a name="line.861"></a>
-<span class="sourceLineNo">862</span>          long bucketBytesToFree = (bytesToFreeWithExtra - bytesFreed) / remainingBuckets;<a name="line.862"></a>
-<span class="sourceLineNo">863</span>          bytesFreed += bucketGroup.free(bucketBytesToFree);<a name="line.863"></a>
-<span class="sourceLineNo">864</span>          remainingBuckets--;<a name="line.864"></a>
-<span class="sourceLineNo">865</span>        }<a name="line.865"></a>
-<span class="sourceLineNo">866</span>      }<a name="line.866"></a>
-<span class="sourceLineNo">867</span><a name="line.867"></a>
-<span class="sourceLineNo">868</span>      // Even after the above free we might still need freeing because of the<a name="line.868"></a>
-<span class="sourceLineNo">869</span>      // De-fragmentation of the buckets (also called Slab Calcification problem), i.e<a name="line.869"></a>
-<span class="sourceLineNo">870</span>      // there might be some buckets where the occupancy is very sparse and thus are not<a name="line.870"></a>
-<span class="sourceLineNo">871</span>      // yielding the free for the other bucket sizes, the fix for this to evict some<a name="line.871"></a>
-<span class="sourceLineNo">872</span>      // of the buckets, we do this by evicting the buckets that are least fulled<a name="line.872"></a>
-<span class="sourceLineNo">873</span>      freeEntireBuckets(DEFAULT_FREE_ENTIRE_BLOCK_FACTOR *<a name="line.873"></a>
-<span class="sourceLineNo">874</span>          bucketSizesAboveThresholdCount(1.0f));<a name="line.874"></a>
-<span class="sourceLineNo">875</span><a name="line.875"></a>
-<span class="sourceLineNo">876</span>      if (LOG.isDebugEnabled()) {<a name="line.876"></a>
-<span class="sourceLineNo">877</span>        long single = bucketSingle.totalSize();<a name="line.877"></a>
-<span class="sourceLineNo">878</span>        long multi = bucketMulti.totalSize();<a name="line.878"></a>
-<span class="sourceLineNo">879</span>        long memory = bucketMemory.totalSize();<a name="line.879"></a>
-<span class="sourceLineNo">880</span>        if (LOG.isDebugEnabled()) {<a name="line.880"></a>
-<span class="sourceLineNo">881</span>          LOG.debug("Bucket 

<TRUNCATED>

[09/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html
index 05e032c..40ef9f4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html
@@ -25,767 +25,805 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.io.asyncfs;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.21"></a>
 <span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import com.google.protobuf.CodedOutputStream;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.io.IOException;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.lang.reflect.Field;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.lang.reflect.InvocationTargetException;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.lang.reflect.Method;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.net.InetAddress;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import java.net.InetSocketAddress;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import java.nio.ByteBuffer;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import java.security.GeneralSecurityException;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import java.util.Arrays;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import java.util.Collections;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import java.util.List;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import java.util.Map;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import java.util.Set;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import java.util.concurrent.TimeUnit;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>import javax.security.auth.callback.Callback;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import javax.security.auth.callback.CallbackHandler;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import javax.security.auth.callback.NameCallback;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import javax.security.auth.callback.PasswordCallback;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import javax.security.sasl.RealmCallback;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import javax.security.sasl.Sasl;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import javax.security.sasl.SaslClient;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import javax.security.sasl.SaslException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.commons.codec.binary.Base64;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.commons.lang3.StringUtils;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.conf.Configuration;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.slf4j.Logger;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.slf4j.LoggerFactory;<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>import com.google.protobuf.ByteString;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.security.token.Token;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>/**<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> */<a name="line.108"></a>
-<span class="sourceLineNo">109</span>@InterfaceAudience.Private<a name="line.109"></a>
-<span class="sourceLineNo">110</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private static final Logger LOG =<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.112"></a>
+<span class="sourceLineNo">023</span>import com.google.protobuf.ByteString;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import com.google.protobuf.CodedOutputStream;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.lang.reflect.Field;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.lang.reflect.InvocationTargetException;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.lang.reflect.Method;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.InetAddress;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.net.InetSocketAddress;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.nio.ByteBuffer;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.security.GeneralSecurityException;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Arrays;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Collections;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.List;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Map;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Set;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.concurrent.TimeUnit;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import javax.security.auth.callback.Callback;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import javax.security.auth.callback.CallbackHandler;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import javax.security.auth.callback.NameCallback;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import javax.security.auth.callback.PasswordCallback;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import javax.security.sasl.RealmCallback;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import javax.security.sasl.Sasl;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import javax.security.sasl.SaslClient;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import javax.security.sasl.SaslException;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.commons.codec.binary.Base64;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.commons.lang3.StringUtils;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.crypto.key.KeyProvider;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.security.token.Token;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.slf4j.Logger;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.LoggerFactory;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>/**<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.104"></a>
+<span class="sourceLineNo">105</span> */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>@InterfaceAudience.Private<a name="line.106"></a>
+<span class="sourceLineNo">107</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private static final Logger LOG =<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private static final String SERVER_NAME = "0";<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  private static final String PROTOCOL = "hdfs";<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  private static final String NAME_DELIMITER = " ";<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  private interface SaslAdaptor {<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.127"></a>
+<span class="sourceLineNo">114</span>  private static final String SERVER_NAME = "0";<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final String PROTOCOL = "hdfs";<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private static final String NAME_DELIMITER = " ";<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  private interface SaslAdaptor {<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
 <span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.132"></a>
+<span class="sourceLineNo">129</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  // helper class for convert protos.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private interface PBHelper {<a name="line.132"></a>
 <span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  // helper class for convert protos.<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  private interface PBHelper {<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.137"></a>
+<span class="sourceLineNo">134</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
 <span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final PBHelper PB_HELPER;<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private interface TransparentCryptoHelper {<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        throws IOException;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    Field saslPropsResolverField =<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    saslPropsResolverField.setAccessible(true);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    Field trustedChannelResolverField =<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    trustedChannelResolverField.setAccessible(true);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Field fallbackToSimpleAuthField =<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return new SaslAdaptor() {<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>      @Override<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        try {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        } catch (IllegalAccessException e) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>          throw new RuntimeException(e);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        }<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        try {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        } catch (IllegalAccessException e) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          throw new RuntimeException(e);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      }<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>      @Override<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        try {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (IllegalAccessException e) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          throw new RuntimeException(e);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    };<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    Class&lt;?&gt; helperClass;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    try {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } catch (ClassNotFoundException e) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    Method convertCipherOptionProtosMethod =<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    return new PBHelper() {<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>      @SuppressWarnings("unchecked")<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      @Override<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        try {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          throw new RuntimeException(e);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>      @SuppressWarnings("unchecked")<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      @Override<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        try {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>          throw new RuntimeException(e);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      }<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    };<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      throws NoSuchMethodException {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    return new TransparentCryptoHelper() {<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>      @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          DFSClient client) throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        try {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          KeyVersion decryptedKey =<a name="line.240"></a>
-<span class="sourceLineNo">241</span>              (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          return encryptor;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        } catch (InvocationTargetException e) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          throw new RuntimeException(e.getTargetException());<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        } catch (GeneralSecurityException e) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          throw new IOException(e);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        } catch (IllegalAccessException e) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          throw new RuntimeException(e);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      }<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    };<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  static {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    try {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      PB_HELPER = createPBHelper();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    } catch (Exception e) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          + "HBASE-16110 for more information.";<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      LOG.error(msg, e);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      throw new Error(msg, e);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>  /**<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    private final char[] password;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    private final String userName;<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>     * Creates a new SaslClientCallbackHandler.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>     * @param userName SASL user name<a name="line.282"></a>
-<span class="sourceLineNo">283</span>     * @Param password SASL password<a name="line.283"></a>
-<span class="sourceLineNo">284</span>     */<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      this.password = password;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      this.userName = userName;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    @Override<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      NameCallback nc = null;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      PasswordCallback pc = null;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      RealmCallback rc = null;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      for (Callback callback : callbacks) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          continue;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        } else if (callback instanceof NameCallback) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          nc = (NameCallback) callback;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        } else if (callback instanceof PasswordCallback) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>          pc = (PasswordCallback) callback;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        } else if (callback instanceof RealmCallback) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          rc = (RealmCallback) callback;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        } else {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      if (nc != null) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        nc.setName(userName);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      if (pc != null) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        pc.setPassword(password);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      if (rc != null) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        rc.setText(rc.getDefaultText());<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private final Configuration conf;<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    private final SaslClient saslClient;<a name="line.326"></a>
+<span class="sourceLineNo">139</span>  private static final PBHelper PB_HELPER;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  private interface TransparentCryptoHelper {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        throws IOException;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    Field saslPropsResolverField =<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    saslPropsResolverField.setAccessible(true);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    Field trustedChannelResolverField =<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    trustedChannelResolverField.setAccessible(true);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Field fallbackToSimpleAuthField =<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return new SaslAdaptor() {<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>      @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        try {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        } catch (IllegalAccessException e) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          throw new RuntimeException(e);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>      @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        try {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        } catch (IllegalAccessException e) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          throw new RuntimeException(e);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      }<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>      @Override<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        } catch (IllegalAccessException e) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          throw new RuntimeException(e);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    Class&lt;?&gt; helperClass;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    try {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    } catch (ClassNotFoundException e) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Method convertCipherOptionProtosMethod =<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    return new PBHelper() {<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>      @SuppressWarnings("unchecked")<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      @Override<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        try {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          throw new RuntimeException(e);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        }<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      }<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>      @SuppressWarnings("unchecked")<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          throw new RuntimeException(e);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    };<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  private static TransparentCryptoHelper createTransparentCryptoHelper27()<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      throws NoSuchMethodException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    return new TransparentCryptoHelper() {<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          DFSClient client) throws IOException {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          KeyVersion decryptedKey =<a name="line.237"></a>
+<span class="sourceLineNo">238</span>            (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          return encryptor;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        } catch (InvocationTargetException e) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          throw new RuntimeException(e.getTargetException());<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        } catch (GeneralSecurityException e) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          throw new IOException(e);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        } catch (IllegalAccessException e) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          throw new RuntimeException(e);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    };<a name="line.252"></a>
+<span class="sourceLineNo">253</span>  }<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>  private static TransparentCryptoHelper createTransparentCryptoHelper28()<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      throws ClassNotFoundException, NoSuchMethodException {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Class&lt;?&gt; hdfsKMSUtilCls = Class.forName("org.apache.hadoop.hdfs.HdfsKMSUtil");<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Method decryptEncryptedDataEncryptionKeyMethod = hdfsKMSUtilCls.getDeclaredMethod(<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      "decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class, KeyProvider.class);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    return new TransparentCryptoHelper() {<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>      @Override<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          DFSClient client) throws IOException {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        try {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          KeyVersion decryptedKey = (KeyVersion) decryptEncryptedDataEncryptionKeyMethod<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            .invoke(null, feInfo, client.getKeyProvider());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          return encryptor;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        } catch (InvocationTargetException e) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          throw new RuntimeException(e.getTargetException());<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        } catch (GeneralSecurityException e) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          throw new IOException(e);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        } catch (IllegalAccessException e) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>          throw new RuntimeException(e);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    };<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      throws NoSuchMethodException, ClassNotFoundException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      return createTransparentCryptoHelper27();<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    } catch (NoSuchMethodException e) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      LOG.debug("No decryptEncryptedDataEncryptionKey method in DFSClient, should be hadoop 2.8+",<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        e);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    return createTransparentCryptoHelper28();<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  static {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    try {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      PB_HELPER = createPBHelper();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    } catch (Exception e) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          + "HBASE-16110 for more information.";<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      LOG.error(msg, e);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      throw new Error(msg, e);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  }<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /**<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   */<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    private final char[] password;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    private final String userName;<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>    /**<a name="line.318"></a>
+<span class="sourceLineNo">319</span>     * Creates a new SaslClientCallbackHandler.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>     * @param userName SASL user name<a name="line.320"></a>
+<span class="sourceLineNo">321</span>     * @Param password SASL password<a name="line.321"></a>
+<span class="sourceLineNo">322</span>     */<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      this.password = password;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      this.userName = userName;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>    private final int timeoutMs;<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    private final Promise&lt;Void&gt; promise;<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>    private int step = 0;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      this.conf = conf;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      this.saslProps = saslProps;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      this.timeoutMs = timeoutMs;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      this.promise = promise;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    }<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      sendSaslMessage(ctx, payload, null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      // values for future expansion.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        return null;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    }<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      if (payload != null) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        // and we want to keep that out of hbase-server.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      }<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (options != null) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      int size = proto.getSerializedSize();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      ctx.write(buf);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>    @Override<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      ctx.flush();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      step++;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    }<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      saslClient.dispose();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        throw new IOException(proto.getMessage());<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    private String getNegotiatedQop() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>    private boolean isNegotiatedQopPrivacy() {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      String qop = getNegotiatedQop();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      return qop != null &amp;&amp; "auth-conf".equalsIgnoreCase(qop);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>    private boolean requestedQopContainsPrivacy() {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      Set&lt;String&gt; requestedQop =<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      return requestedQop.contains("auth-conf");<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>    private void checkSaslComplete() throws IOException {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      if (!saslClient.isComplete()) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        throw new IOException("Failed to complete SASL handshake");<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      Set&lt;String&gt; requestedQop =<a name="line.424"></a>
-<span class="sourceLineNo">425</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      String negotiatedQop = getNegotiatedQop();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      LOG.debug(<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        "Verifying QOP, requested QOP = " + requestedQop + ", negotiated QOP = " + negotiatedQop);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (!requestedQop.contains(negotiatedQop)) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        throw new IOException(String.format("SASL handshake completed, but "<a name="line.430"></a>
-<span class="sourceLineNo">431</span>            + "channel does not have acceptable quality of protection, "<a name="line.431"></a>
-<span class="sourceLineNo">432</span>            + "requested = %s, negotiated = %s",<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          requestedQop, negotiatedQop));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>    private boolean useWrap() {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      String qop = (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      return qop != null &amp;&amp; !"auth".equalsIgnoreCase(qop);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    private CipherOption unwrap(CipherOption option, SaslClient saslClient) throws IOException {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      byte[] inKey = option.getInKey();<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      if (inKey != null) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        inKey = saslClient.unwrap(inKey, 0, inKey.length);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      byte[] outKey = option.getOutKey();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      if (outKey != null) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        outKey = saslClient.unwrap(outKey, 0, outKey.length);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      }<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return new CipherOption(option.getCipherSuite(), inKey, option.getInIv(), outKey,<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          option.getOutIv());<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    }<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    private CipherOption getCipherOption(DataTransferEncryptorMessageProto proto,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        boolean isNegotiatedQopPrivacy, SaslClient saslClient) throws IOException {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      List&lt;CipherOption&gt; cipherOptions =<a name="line.457"></a>
-<span class="sourceLineNo">458</span>          PB_HELPER.convertCipherOptionProtos(proto.getCipherOptionList());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      if (cipherOptions == null || cipherOptions.isEmpty()) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        return null;<a name="line.460"></a>
+<span class="sourceLineNo">328</span>    @Override<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      NameCallback nc = null;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      PasswordCallback pc = null;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      RealmCallback rc = null;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      for (Callback callback : callbacks) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>          continue;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        } else if (callback instanceof NameCallback) {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          nc = (NameCallback) callback;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        } else if (callback instanceof PasswordCallback) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>          pc = (PasswordCallback) callback;<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        } else if (callback instanceof RealmCallback) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          rc = (RealmCallback) callback;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        } else {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      if (nc != null) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        nc.setName(userName);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      if (pc != null) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        pc.setPassword(password);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      if (rc != null) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        rc.setText(rc.getDefaultText());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>    private final Configuration conf;<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>    private final SaslClient saslClient;<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    private final int timeoutMs;<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>    private final Promise&lt;Void&gt; promise;<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>    private int step = 0;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      this.conf = conf;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      this.saslProps = saslProps;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      this.timeoutMs = timeoutMs;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      this.promise = promise;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      sendSaslMessage(ctx, payload, null);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      // values for future expansion.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        return null;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.395"></a>
+<span class="sourceLineNo">396</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      if (payload != null) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        // and we want to keep that out of hbase-server.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      if (options != null) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      int size = proto.getSerializedSize();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      ctx.write(buf);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>    @Override<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      ctx.flush();<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      step++;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    @Override<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      saslClient.dispose();<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        throw new IOException(proto.getMessage());<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    private String getNegotiatedQop() {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>    private bo

<TRUNCATED>

[30/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html
index 31c6fd0..7e28d37 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.1695">HRegionServer.CompactionChecker</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.1697">HRegionServer.CompactionChecker</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></pre>
 </li>
 </ul>
@@ -233,7 +233,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>instance</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1696">instance</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1698">instance</a></pre>
 </li>
 </ul>
 <a name="majorCompactPriority">
@@ -242,7 +242,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>majorCompactPriority</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1697">majorCompactPriority</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1699">majorCompactPriority</a></pre>
 </li>
 </ul>
 <a name="DEFAULT_PRIORITY">
@@ -251,7 +251,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_PRIORITY</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1698">DEFAULT_PRIORITY</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1700">DEFAULT_PRIORITY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HRegionServer.CompactionChecker.DEFAULT_PRIORITY">Constant Field Values</a></dd>
@@ -264,7 +264,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>iteration</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1701">iteration</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1703">iteration</a></pre>
 </li>
 </ul>
 </li>
@@ -281,7 +281,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CompactionChecker</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1703">CompactionChecker</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;h,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1705">CompactionChecker</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;h,
                   int&nbsp;sleepTime,
                   <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a>&nbsp;stopper)</pre>
 </li>
@@ -300,7 +300,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>chore</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1717">chore</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1719">chore</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#chore--">ScheduledChore</a></code></span></div>
 <div class="block">The task to execute on each scheduled execution of the Chore</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html
index 6eda1d5..cab0193 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.3389">HRegionServer.MovedRegionInfo</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.3405">HRegionServer.MovedRegionInfo</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -218,7 +218,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>serverName</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3390">serverName</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3406">serverName</a></pre>
 </li>
 </ul>
 <a name="seqNum">
@@ -227,7 +227,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>seqNum</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3391">seqNum</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3407">seqNum</a></pre>
 </li>
 </ul>
 <a name="ts">
@@ -236,7 +236,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ts</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3392">ts</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3408">ts</a></pre>
 </li>
 </ul>
 </li>
@@ -253,7 +253,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MovedRegionInfo</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3394">MovedRegionInfo</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3410">MovedRegionInfo</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                        long&nbsp;closeSeqNum)</pre>
 </li>
 </ul>
@@ -271,7 +271,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerName</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3400">getServerName</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3416">getServerName</a>()</pre>
 </li>
 </ul>
 <a name="getSeqNum--">
@@ -280,7 +280,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSeqNum</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3404">getSeqNum</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3420">getSeqNum</a>()</pre>
 </li>
 </ul>
 <a name="getMoveTime--">
@@ -289,7 +289,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getMoveTime</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3408">getMoveTime</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3424">getMoveTime</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html
index b2b3568..6cf54e0 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>protected static final class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.3476">HRegionServer.MovedRegionsCleaner</a>
+<pre>protected static final class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.3492">HRegionServer.MovedRegionsCleaner</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a></pre>
 <div class="block">Creates a Chore thread to clean the moved region cache.</div>
@@ -242,7 +242,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>regionServer</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3477">regionServer</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3493">regionServer</a></pre>
 </li>
 </ul>
 <a name="stoppable">
@@ -251,7 +251,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title
 <ul class="blockListLast">
 <li class="blockList">
 <h4>stoppable</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3478">stoppable</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3494">stoppable</a></pre>
 </li>
 </ul>
 </li>
@@ -268,7 +268,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MovedRegionsCleaner</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3480">MovedRegionsCleaner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3496">MovedRegionsCleaner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer,
                             <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a>&nbsp;stoppable)</pre>
 </li>
 </ul>
@@ -286,7 +286,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>create</h4>
-<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer.MovedRegionsCleaner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3488">create</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;rs)</pre>
+<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer.MovedRegionsCleaner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3504">create</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;rs)</pre>
 </li>
 </ul>
 <a name="chore--">
@@ -295,7 +295,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>chore</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3499">chore</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3515">chore</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#chore--">ScheduledChore</a></code></span></div>
 <div class="block">The task to execute on each scheduled execution of the Chore</div>
 <dl>
@@ -310,7 +310,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>stop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3504">stop</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3520">stop</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/Stoppable.html#stop-java.lang.String-">Stoppable</a></code></span></div>
 <div class="block">Stop this service.
  Implementers should favor logging errors over throwing RuntimeExceptions.</div>
@@ -328,7 +328,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isStopped</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3509">isStopped</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3525">isStopped</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/Stoppable.html#isStopped--">isStopped</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html
index a9b1c72..92d3dc2 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.1757">HRegionServer.PeriodicMemStoreFlusher</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.1759">HRegionServer.PeriodicMemStoreFlusher</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></pre>
 </li>
 </ul>
@@ -228,7 +228,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>server</h4>
-<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1758">server</a></pre>
+<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1760">server</a></pre>
 </li>
 </ul>
 <a name="RANGE_OF_DELAY">
@@ -237,7 +237,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>RANGE_OF_DELAY</h4>
-<pre>static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1759">RANGE_OF_DELAY</a></pre>
+<pre>static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1761">RANGE_OF_DELAY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HRegionServer.PeriodicMemStoreFlusher.RANGE_OF_DELAY">Constant Field Values</a></dd>
@@ -250,7 +250,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MIN_DELAY_TIME</h4>
-<pre>static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1760">MIN_DELAY_TIME</a></pre>
+<pre>static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1762">MIN_DELAY_TIME</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HRegionServer.PeriodicMemStoreFlusher.MIN_DELAY_TIME">Constant Field Values</a></dd>
@@ -271,7 +271,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>PeriodicMemStoreFlusher</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1761">PeriodicMemStoreFlusher</a>(int&nbsp;cacheFlushInterval,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1763">PeriodicMemStoreFlusher</a>(int&nbsp;cacheFlushInterval,
                                <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;server)</pre>
 </li>
 </ul>
@@ -289,7 +289,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>chore</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1767">chore</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1769">chore</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#chore--">ScheduledChore</a></code></span></div>
 <div class="block">The task to execute on each scheduled execution of the Chore</div>
 <dl>


[16/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler.html
index 05e032c..40ef9f4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler.html
@@ -25,767 +25,805 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.io.asyncfs;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.21"></a>
 <span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import com.google.protobuf.CodedOutputStream;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.io.IOException;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.lang.reflect.Field;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.lang.reflect.InvocationTargetException;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.lang.reflect.Method;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.net.InetAddress;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import java.net.InetSocketAddress;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import java.nio.ByteBuffer;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import java.security.GeneralSecurityException;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import java.util.Arrays;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import java.util.Collections;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import java.util.List;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import java.util.Map;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import java.util.Set;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import java.util.concurrent.TimeUnit;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>import javax.security.auth.callback.Callback;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import javax.security.auth.callback.CallbackHandler;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import javax.security.auth.callback.NameCallback;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import javax.security.auth.callback.PasswordCallback;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import javax.security.sasl.RealmCallback;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import javax.security.sasl.Sasl;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import javax.security.sasl.SaslClient;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import javax.security.sasl.SaslException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.commons.codec.binary.Base64;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.commons.lang3.StringUtils;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.conf.Configuration;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.slf4j.Logger;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.slf4j.LoggerFactory;<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>import com.google.protobuf.ByteString;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.security.token.Token;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>/**<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> */<a name="line.108"></a>
-<span class="sourceLineNo">109</span>@InterfaceAudience.Private<a name="line.109"></a>
-<span class="sourceLineNo">110</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private static final Logger LOG =<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.112"></a>
+<span class="sourceLineNo">023</span>import com.google.protobuf.ByteString;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import com.google.protobuf.CodedOutputStream;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.lang.reflect.Field;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.lang.reflect.InvocationTargetException;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.lang.reflect.Method;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.InetAddress;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.net.InetSocketAddress;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.nio.ByteBuffer;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.security.GeneralSecurityException;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Arrays;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Collections;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.List;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Map;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Set;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.concurrent.TimeUnit;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import javax.security.auth.callback.Callback;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import javax.security.auth.callback.CallbackHandler;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import javax.security.auth.callback.NameCallback;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import javax.security.auth.callback.PasswordCallback;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import javax.security.sasl.RealmCallback;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import javax.security.sasl.Sasl;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import javax.security.sasl.SaslClient;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import javax.security.sasl.SaslException;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.commons.codec.binary.Base64;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.commons.lang3.StringUtils;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.crypto.key.KeyProvider;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.security.token.Token;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.slf4j.Logger;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.LoggerFactory;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>/**<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.104"></a>
+<span class="sourceLineNo">105</span> */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>@InterfaceAudience.Private<a name="line.106"></a>
+<span class="sourceLineNo">107</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private static final Logger LOG =<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private static final String SERVER_NAME = "0";<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  private static final String PROTOCOL = "hdfs";<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  private static final String NAME_DELIMITER = " ";<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  private interface SaslAdaptor {<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.127"></a>
+<span class="sourceLineNo">114</span>  private static final String SERVER_NAME = "0";<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final String PROTOCOL = "hdfs";<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private static final String NAME_DELIMITER = " ";<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  private interface SaslAdaptor {<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
 <span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.132"></a>
+<span class="sourceLineNo">129</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  // helper class for convert protos.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private interface PBHelper {<a name="line.132"></a>
 <span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  // helper class for convert protos.<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  private interface PBHelper {<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.137"></a>
+<span class="sourceLineNo">134</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
 <span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final PBHelper PB_HELPER;<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private interface TransparentCryptoHelper {<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        throws IOException;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    Field saslPropsResolverField =<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    saslPropsResolverField.setAccessible(true);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    Field trustedChannelResolverField =<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    trustedChannelResolverField.setAccessible(true);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Field fallbackToSimpleAuthField =<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return new SaslAdaptor() {<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>      @Override<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        try {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        } catch (IllegalAccessException e) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>          throw new RuntimeException(e);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        }<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        try {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        } catch (IllegalAccessException e) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          throw new RuntimeException(e);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      }<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>      @Override<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        try {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (IllegalAccessException e) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          throw new RuntimeException(e);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    };<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    Class&lt;?&gt; helperClass;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    try {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } catch (ClassNotFoundException e) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    Method convertCipherOptionProtosMethod =<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    return new PBHelper() {<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>      @SuppressWarnings("unchecked")<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      @Override<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        try {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          throw new RuntimeException(e);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>      @SuppressWarnings("unchecked")<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      @Override<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        try {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>          throw new RuntimeException(e);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      }<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    };<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      throws NoSuchMethodException {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    return new TransparentCryptoHelper() {<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>      @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          DFSClient client) throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        try {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          KeyVersion decryptedKey =<a name="line.240"></a>
-<span class="sourceLineNo">241</span>              (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          return encryptor;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        } catch (InvocationTargetException e) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          throw new RuntimeException(e.getTargetException());<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        } catch (GeneralSecurityException e) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          throw new IOException(e);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        } catch (IllegalAccessException e) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          throw new RuntimeException(e);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      }<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    };<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  static {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    try {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      PB_HELPER = createPBHelper();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    } catch (Exception e) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          + "HBASE-16110 for more information.";<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      LOG.error(msg, e);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      throw new Error(msg, e);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>  /**<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    private final char[] password;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    private final String userName;<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>     * Creates a new SaslClientCallbackHandler.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>     * @param userName SASL user name<a name="line.282"></a>
-<span class="sourceLineNo">283</span>     * @Param password SASL password<a name="line.283"></a>
-<span class="sourceLineNo">284</span>     */<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      this.password = password;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      this.userName = userName;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    @Override<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      NameCallback nc = null;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      PasswordCallback pc = null;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      RealmCallback rc = null;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      for (Callback callback : callbacks) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          continue;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        } else if (callback instanceof NameCallback) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          nc = (NameCallback) callback;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        } else if (callback instanceof PasswordCallback) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>          pc = (PasswordCallback) callback;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        } else if (callback instanceof RealmCallback) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          rc = (RealmCallback) callback;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        } else {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      if (nc != null) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        nc.setName(userName);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      if (pc != null) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        pc.setPassword(password);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      if (rc != null) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        rc.setText(rc.getDefaultText());<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private final Configuration conf;<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    private final SaslClient saslClient;<a name="line.326"></a>
+<span class="sourceLineNo">139</span>  private static final PBHelper PB_HELPER;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  private interface TransparentCryptoHelper {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        throws IOException;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    Field saslPropsResolverField =<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    saslPropsResolverField.setAccessible(true);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    Field trustedChannelResolverField =<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    trustedChannelResolverField.setAccessible(true);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Field fallbackToSimpleAuthField =<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return new SaslAdaptor() {<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>      @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        try {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        } catch (IllegalAccessException e) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          throw new RuntimeException(e);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>      @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        try {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        } catch (IllegalAccessException e) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          throw new RuntimeException(e);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      }<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>      @Override<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        } catch (IllegalAccessException e) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          throw new RuntimeException(e);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    Class&lt;?&gt; helperClass;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    try {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    } catch (ClassNotFoundException e) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Method convertCipherOptionProtosMethod =<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    return new PBHelper() {<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>      @SuppressWarnings("unchecked")<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      @Override<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        try {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          throw new RuntimeException(e);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        }<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      }<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>      @SuppressWarnings("unchecked")<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          throw new RuntimeException(e);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    };<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  private static TransparentCryptoHelper createTransparentCryptoHelper27()<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      throws NoSuchMethodException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    return new TransparentCryptoHelper() {<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          DFSClient client) throws IOException {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          KeyVersion decryptedKey =<a name="line.237"></a>
+<span class="sourceLineNo">238</span>            (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          return encryptor;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        } catch (InvocationTargetException e) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          throw new RuntimeException(e.getTargetException());<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        } catch (GeneralSecurityException e) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          throw new IOException(e);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        } catch (IllegalAccessException e) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          throw new RuntimeException(e);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    };<a name="line.252"></a>
+<span class="sourceLineNo">253</span>  }<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>  private static TransparentCryptoHelper createTransparentCryptoHelper28()<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      throws ClassNotFoundException, NoSuchMethodException {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Class&lt;?&gt; hdfsKMSUtilCls = Class.forName("org.apache.hadoop.hdfs.HdfsKMSUtil");<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Method decryptEncryptedDataEncryptionKeyMethod = hdfsKMSUtilCls.getDeclaredMethod(<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      "decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class, KeyProvider.class);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    return new TransparentCryptoHelper() {<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>      @Override<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          DFSClient client) throws IOException {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        try {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          KeyVersion decryptedKey = (KeyVersion) decryptEncryptedDataEncryptionKeyMethod<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            .invoke(null, feInfo, client.getKeyProvider());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          return encryptor;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        } catch (InvocationTargetException e) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          throw new RuntimeException(e.getTargetException());<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        } catch (GeneralSecurityException e) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          throw new IOException(e);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        } catch (IllegalAccessException e) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>          throw new RuntimeException(e);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    };<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      throws NoSuchMethodException, ClassNotFoundException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      return createTransparentCryptoHelper27();<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    } catch (NoSuchMethodException e) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      LOG.debug("No decryptEncryptedDataEncryptionKey method in DFSClient, should be hadoop 2.8+",<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        e);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    return createTransparentCryptoHelper28();<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  static {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    try {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      PB_HELPER = createPBHelper();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    } catch (Exception e) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          + "HBASE-16110 for more information.";<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      LOG.error(msg, e);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      throw new Error(msg, e);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  }<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /**<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   */<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    private final char[] password;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    private final String userName;<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>    /**<a name="line.318"></a>
+<span class="sourceLineNo">319</span>     * Creates a new SaslClientCallbackHandler.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>     * @param userName SASL user name<a name="line.320"></a>
+<span class="sourceLineNo">321</span>     * @Param password SASL password<a name="line.321"></a>
+<span class="sourceLineNo">322</span>     */<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      this.password = password;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      this.userName = userName;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>    private final int timeoutMs;<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    private final Promise&lt;Void&gt; promise;<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>    private int step = 0;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      this.conf = conf;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      this.saslProps = saslProps;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      this.timeoutMs = timeoutMs;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      this.promise = promise;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    }<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      sendSaslMessage(ctx, payload, null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      // values for future expansion.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        return null;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    }<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      if (payload != null) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        // and we want to keep that out of hbase-server.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      }<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (options != null) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      int size = proto.getSerializedSize();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      ctx.write(buf);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>    @Override<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      ctx.flush();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      step++;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    }<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      saslClient.dispose();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        throw new IOException(proto.getMessage());<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    private String getNegotiatedQop() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>    private boolean isNegotiatedQopPrivacy() {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      String qop = getNegotiatedQop();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      return qop != null &amp;&amp; "auth-conf".equalsIgnoreCase(qop);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>    private boolean requestedQopContainsPrivacy() {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      Set&lt;String&gt; requestedQop =<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      return requestedQop.contains("auth-conf");<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>    private void checkSaslComplete() throws IOException {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      if (!saslClient.isComplete()) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        throw new IOException("Failed to complete SASL handshake");<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      Set&lt;String&gt; requestedQop =<a name="line.424"></a>
-<span class="sourceLineNo">425</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      String negotiatedQop = getNegotiatedQop();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      LOG.debug(<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        "Verifying QOP, requested QOP = " + requestedQop + ", negotiated QOP = " + negotiatedQop);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (!requestedQop.contains(negotiatedQop)) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        throw new IOException(String.format("SASL handshake completed, but "<a name="line.430"></a>
-<span class="sourceLineNo">431</span>            + "channel does not have acceptable quality of protection, "<a name="line.431"></a>
-<span class="sourceLineNo">432</span>            + "requested = %s, negotiated = %s",<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          requestedQop, negotiatedQop));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>    private boolean useWrap() {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      String qop = (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      return qop != null &amp;&amp; !"auth".equalsIgnoreCase(qop);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    private CipherOption unwrap(CipherOption option, SaslClient saslClient) throws IOException {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      byte[] inKey = option.getInKey();<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      if (inKey != null) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        inKey = saslClient.unwrap(inKey, 0, inKey.length);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      byte[] outKey = option.getOutKey();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      if (outKey != null) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        outKey = saslClient.unwrap(outKey, 0, outKey.length);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      }<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return new CipherOption(option.getCipherSuite(), inKey, option.getInIv(), outKey,<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          option.getOutIv());<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    }<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    private CipherOption getCipherOption(DataTransferEncryptorMessageProto proto,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        boolean isNegotiatedQopPrivacy, SaslClient saslClient) throws IOException {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      List&lt;CipherOption&gt; cipherOptions =<a name="line.457"></a>
-<span class="sourceLineNo">458</span>          PB_HELPER.convertCipherOptionProtos(proto.getCipherOptionList());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      if (cipherOptions == null || cipherOptions.isEmpty()) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        return null;<a name="line.460"></a>
+<span class="sourceLineNo">328</span>    @Override<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      NameCallback nc = null;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      PasswordCallback pc = null;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      RealmCallback rc = null;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      for (Callback callback : callbacks) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>          continue;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        } else if (callback instanceof NameCallback) {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          nc = (NameCallback) callback;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        } else if (callback instanceof PasswordCallback) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>          pc = (PasswordCallback) callback;<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        } else if (callback instanceof RealmCallback) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          rc = (RealmCallback) callback;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        } else {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      if (nc != null) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        nc.setName(userName);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      if (pc != null) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        pc.setPassword(password);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      if (rc != null) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        rc.setText(rc.getDefaultText());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>    private final Configuration conf;<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>    private final SaslClient saslClient;<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    private final int timeoutMs;<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>    private final Promise&lt;Void&gt; promise;<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>    private int step = 0;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      this.conf = conf;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      this.saslProps = saslProps;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      this.timeoutMs = timeoutMs;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      this.promise = promise;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      sendSaslMessage(ctx, payload, null);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      // values for future expansion.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        return null;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.395"></a>
+<span class="sourceLineNo">396</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      if (payload != null) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        // and we want to keep that out of hbase-server.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      if (options != null) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      int size = proto.getSerializedSize();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      ctx.write(buf);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>    @Override<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      ctx.flush();<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      step++;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    @Override<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      saslClient.dispose();<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        throw new IOException(proto.getMessage());<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    private String getNegotiatedQop() {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>    private boolean isNegotiatedQopPrivacy() {<a name="line

<TRUNCATED>

[48/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index e7daee6..0134517 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.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="20180630" />
+    <meta name="Date-Revision-yyyymmdd" content="20180703" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -281,10 +281,10 @@
 <th><img src="images/icon_warning_sml.gif" alt="" />&#160;Warnings</th>
 <th><img src="images/icon_error_sml.gif" alt="" />&#160;Errors</th></tr>
 <tr class="b">
-<td>3688</td>
+<td>3690</td>
 <td>0</td>
 <td>0</td>
-<td>15817</td></tr></table></div>
+<td>15801</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -1677,7 +1677,7 @@
 <td><a href="#org.apache.hadoop.hbase.client.TestAdmin1.java">org/apache/hadoop/hbase/client/TestAdmin1.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>38</td></tr>
+<td>36</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestAdmin2.java">org/apache/hadoop/hbase/client/TestAdmin2.java</a></td>
 <td>0</td>
@@ -3174,6666 +3174,6661 @@
 <td>0</td>
 <td>1</td></tr>
 <tr class="b">
-<td><a href="#org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputSaslHelper.java">org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.java</a></td>
-<td>0</td>
-<td>0</td>
-<td>4</td></tr>
-<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.asyncfs.TestSaslFanOutOneBlockAsyncDFSOutput.java">org/apache/hadoop/hbase/io/asyncfs/TestSaslFanOutOneBlockAsyncDFSOutput.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.compress.Compression.java">org/apache/hadoop/hbase/io/compress/Compression.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.Cipher.java">org/apache/hadoop/hbase/io/crypto/Cipher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.Decryptor.java">org/apache/hadoop/hbase/io/crypto/Decryptor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.Encryption.java">org/apache/hadoop/hbase/io/crypto/Encryption.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>53</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.Encryptor.java">org/apache/hadoop/hbase/io/crypto/Encryptor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.KeyProvider.java">org/apache/hadoop/hbase/io/crypto/KeyProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.TestEncryption.java">org/apache/hadoop/hbase/io/crypto/TestEncryption.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.aes.CryptoAES.java">org/apache/hadoop/hbase/io/crypto/aes/CryptoAES.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.BufferedDataBlockEncoder.java">org/apache/hadoop/hbase/io/encoding/BufferedDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.CopyKeyDataBlockEncoder.java">org/apache/hadoop/hbase/io/encoding/CopyKeyDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.DataBlockEncoder.java">org/apache/hadoop/hbase/io/encoding/DataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.DataBlockEncoding.java">org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.EncodedDataBlock.java">org/apache/hadoop/hbase/io/encoding/EncodedDataBlock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.HFileBlockDecodingContext.java">org/apache/hadoop/hbase/io/encoding/HFileBlockDecodingContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.HFileBlockDefaultEncodingContext.java">org/apache/hadoop/hbase/io/encoding/HFileBlockDefaultEncodingContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.HFileBlockEncodingContext.java">org/apache/hadoop/hbase/io/encoding/HFileBlockEncodingContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.RowIndexCodecV1.java">org/apache/hadoop/hbase/io/encoding/RowIndexCodecV1.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.TestDataBlockEncoders.java">org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.TestEncodedSeekers.java">org/apache/hadoop/hbase/io/encoding/TestEncodedSeekers.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hadoopbackport.ThrottledInputStream.java">org/apache/hadoop/hbase/io/hadoopbackport/ThrottledInputStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockCache.java">org/apache/hadoop/hbase/io/hfile/BlockCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockCacheKey.java">org/apache/hadoop/hbase/io/hfile/BlockCacheKey.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.java">org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>28</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockCachesIterator.java">org/apache/hadoop/hbase/io/hfile/BlockCachesIterator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockType.java">org/apache/hadoop/hbase/io/hfile/BlockType.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheConfig.java">org/apache/hadoop/hbase/io/hfile/CacheConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheStats.java">org/apache/hadoop/hbase/io/hfile/CacheStats.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheTestUtils.java">org/apache/hadoop/hbase/io/hfile/CacheTestUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.Cacheable.java">org/apache/hadoop/hbase/io/hfile/Cacheable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheableDeserializer.java">org/apache/hadoop/hbase/io/hfile/CacheableDeserializer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheableDeserializerIdManager.java">org/apache/hadoop/hbase/io/hfile/CacheableDeserializerIdManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.ChecksumUtil.java">org/apache/hadoop/hbase/io/hfile/ChecksumUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CombinedBlockCache.java">org/apache/hadoop/hbase/io/hfile/CombinedBlockCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CompoundBloomFilter.java">org/apache/hadoop/hbase/io/hfile/CompoundBloomFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CompoundBloomFilterBase.java">org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CompoundBloomFilterWriter.java">org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CorruptHFileException.java">org/apache/hadoop/hbase/io/hfile/CorruptHFileException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.FixedFileTrailer.java">org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFile.java">org/apache/hadoop/hbase/io/hfile/HFile.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>36</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileBlock.java">org/apache/hadoop/hbase/io/hfile/HFileBlock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileBlockIndex.java">org/apache/hadoop/hbase/io/hfile/HFileBlockIndex.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>39</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileContext.java">org/apache/hadoop/hbase/io/hfile/HFileContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder.java">org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl.java">org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoderImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFilePrettyPrinter.java">org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileReaderImpl.java">org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>52</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileScanner.java">org/apache/hadoop/hbase/io/hfile/HFileScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>23</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileUtil.java">org/apache/hadoop/hbase/io/hfile/HFileUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileWriterImpl.java">org/apache/hadoop/hbase/io/hfile/HFileWriterImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>26</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.KVGenerator.java">org/apache/hadoop/hbase/io/hfile/KVGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.LruBlockCache.java">org/apache/hadoop/hbase/io/hfile/LruBlockCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.LruCachedBlock.java">org/apache/hadoop/hbase/io/hfile/LruCachedBlock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.LruCachedBlockQueue.java">org/apache/hadoop/hbase/io/hfile/LruCachedBlockQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.NanoTimer.java">org/apache/hadoop/hbase/io/hfile/NanoTimer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.NoOpDataBlockEncoder.java">org/apache/hadoop/hbase/io/hfile/NoOpDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.PrefetchExecutor.java">org/apache/hadoop/hbase/io/hfile/PrefetchExecutor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.RandomKeyValueUtil.java">org/apache/hadoop/hbase/io/hfile/RandomKeyValueUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestBlockCacheReporting.java">org/apache/hadoop/hbase/io/hfile/TestBlockCacheReporting.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestCacheConfig.java">org/apache/hadoop/hbase/io/hfile/TestCacheConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestCacheOnWrite.java">org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestCachedBlockQueue.java">org/apache/hadoop/hbase/io/hfile/TestCachedBlockQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>19</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestChecksum.java">org/apache/hadoop/hbase/io/hfile/TestChecksum.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestFixedFileTrailer.java">org/apache/hadoop/hbase/io/hfile/TestFixedFileTrailer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestForceCacheImportantBlocks.java">org/apache/hadoop/hbase/io/hfile/TestForceCacheImportantBlocks.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFile.java">org/apache/hadoop/hbase/io/hfile/TestHFile.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>27</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileBlock.java">org/apache/hadoop/hbase/io/hfile/TestHFileBlock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileBlockIndex.java">org/apache/hadoop/hbase/io/hfile/TestHFileBlockIndex.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>41</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileBlockPositionalRead.java">org/apache/hadoop/hbase/io/hfile/TestHFileBlockPositionalRead.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileDataBlockEncoder.java">org/apache/hadoop/hbase/io/hfile/TestHFileDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileWriterV3.java">org/apache/hadoop/hbase/io/hfile/TestHFileWriterV3.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestLruBlockCache.java">org/apache/hadoop/hbase/io/hfile/TestLruBlockCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestPrefetch.java">org/apache/hadoop/hbase/io/hfile/TestPrefetch.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestScannerFromBucketCache.java">org/apache/hadoop/hbase/io/hfile/TestScannerFromBucketCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestScannerSelectionUsingKeyRange.java">org/apache/hadoop/hbase/io/hfile/TestScannerSelectionUsingKeyRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.BucketAllocator.java">org/apache/hadoop/hbase/io/hfile/bucket/BucketAllocator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>33</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.BucketCache.java">org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>39</td></tr>
-<tr class="b">
+<td>38</td></tr>
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.BucketCacheStats.java">org/apache/hadoop/hbase/io/hfile/bucket/BucketCacheStats.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.ByteBufferIOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/ByteBufferIOEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.CachedEntryQueue.java">org/apache/hadoop/hbase/io/hfile/bucket/CachedEntryQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.FileIOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/FileIOEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.FileMmapEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/FileMmapEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.IOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/IOEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.TestBucketCache.java">org/apache/hadoop/hbase/io/hfile/bucket/TestBucketCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.TestBucketWriterThread.java">org/apache/hadoop/hbase/io/hfile/bucket/TestBucketWriterThread.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.TestFileIOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/TestFileIOEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.UniqueIndexMap.java">org/apache/hadoop/hbase/io/hfile/bucket/UniqueIndexMap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.util.Dictionary.java">org/apache/hadoop/hbase/io/util/Dictionary.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.util.LRUDictionary.java">org/apache/hadoop/hbase/io/util/LRUDictionary.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.util.MemorySizeUtil.java">org/apache/hadoop/hbase/io/util/MemorySizeUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.util.StreamUtils.java">org/apache/hadoop/hbase/io/util/StreamUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.AbstractRpcClient.java">org/apache/hadoop/hbase/ipc/AbstractRpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.AbstractTestIPC.java">org/apache/hadoop/hbase/ipc/AbstractTestIPC.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.AdaptiveLifoCoDelCallQueue.java">org/apache/hadoop/hbase/ipc/AdaptiveLifoCoDelCallQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.BlockingRpcCallback.java">org/apache/hadoop/hbase/ipc/BlockingRpcCallback.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.BlockingRpcClient.java">org/apache/hadoop/hbase/ipc/BlockingRpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.BlockingRpcConnection.java">org/apache/hadoop/hbase/ipc/BlockingRpcConnection.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.BufferCallBeforeInitHandler.java">org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.BufferChain.java">org/apache/hadoop/hbase/ipc/BufferChain.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.Call.java">org/apache/hadoop/hbase/ipc/Call.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.CallQueueInfo.java">org/apache/hadoop/hbase/ipc/CallQueueInfo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.CallRunner.java">org/apache/hadoop/hbase/ipc/CallRunner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.CellBlockBuilder.java">org/apache/hadoop/hbase/ipc/CellBlockBuilder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils.java">org/apache/hadoop/hbase/ipc/CoprocessorRpcUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.DefaultNettyEventLoopConfig.java">org/apache/hadoop/hbase/ipc/DefaultNettyEventLoopConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.DelegatingHBaseRpcController.java">org/apache/hadoop/hbase/ipc/DelegatingHBaseRpcController.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.FailedServers.java">org/apache/hadoop/hbase/ipc/FailedServers.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.FifoRpcScheduler.java">org/apache/hadoop/hbase/ipc/FifoRpcScheduler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.HBaseRpcController.java">org/apache/hadoop/hbase/ipc/HBaseRpcController.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.HBaseRpcControllerImpl.java">org/apache/hadoop/hbase/ipc/HBaseRpcControllerImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.IPCUtil.java">org/apache/hadoop/hbase/ipc/IPCUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.IntegrationTestRpcClient.java">org/apache/hadoop/hbase/ipc/IntegrationTestRpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.MetricsHBaseServer.java">org/apache/hadoop/hbase/ipc/MetricsHBaseServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyRpcClient.java">org/apache/hadoop/hbase/ipc/NettyRpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyRpcClientConfigHelper.java">org/apache/hadoop/hbase/ipc/NettyRpcClientConfigHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyRpcConnection.java">org/apache/hadoop/hbase/ipc/NettyRpcConnection.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyRpcDuplexHandler.java">org/apache/hadoop/hbase/ipc/NettyRpcDuplexHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyRpcServer.java">org/apache/hadoop/hbase/ipc/NettyRpcServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyRpcServerPreambleHandler.java">org/apache/hadoop/hbase/ipc/NettyRpcServerPreambleHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyRpcServerRequestDecoder.java">org/apache/hadoop/hbase/ipc/NettyRpcServerRequestDecoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyRpcServerResponseEncoder.java">org/apache/hadoop/hbase/ipc/NettyRpcServerResponseEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyServerCall.java">org/apache/hadoop/hbase/ipc/NettyServerCall.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyServerRpcConnection.java">org/apache/hadoop/hbase/ipc/NettyServerRpcConnection.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.PriorityFunction.java">org/apache/hadoop/hbase/ipc/PriorityFunction.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.RWQueueRpcExecutor.java">org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.RemoteWithExtrasException.java">org/apache/hadoop/hbase/ipc/RemoteWithExtrasException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcCall.java">org/apache/hadoop/hbase/ipc/RpcCall.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcCallContext.java">org/apache/hadoop/hbase/ipc/RpcCallContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcClient.java">org/apache/hadoop/hbase/ipc/RpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcClientFactory.java">org/apache/hadoop/hbase/ipc/RpcClientFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcConnection.java">org/apache/hadoop/hbase/ipc/RpcConnection.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcControllerFactory.java">org/apache/hadoop/hbase/ipc/RpcControllerFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcExecutor.java">org/apache/hadoop/hbase/ipc/RpcExecutor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcScheduler.java">org/apache/hadoop/hbase/ipc/RpcScheduler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcSchedulerContext.java">org/apache/hadoop/hbase/ipc/RpcSchedulerContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcServer.java">org/apache/hadoop/hbase/ipc/RpcServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcServerFactory.java">org/apache/hadoop/hbase/ipc/RpcServerFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcServerInterface.java">org/apache/hadoop/hbase/ipc/RpcServerInterface.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.ServerCall.java">org/apache/hadoop/hbase/ipc/ServerCall.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.ServerRpcConnection.java">org/apache/hadoop/hbase/ipc/ServerRpcConnection.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>23</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.ServerRpcController.java">org/apache/hadoop/hbase/ipc/ServerRpcController.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.SimpleRpcScheduler.java">org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.SimpleRpcServer.java">org/apache/hadoop/hbase/ipc/SimpleRpcServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.SimpleRpcServerResponder.java">org/apache/hadoop/hbase/ipc/SimpleRpcServerResponder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.SimpleServerCall.java">org/apache/hadoop/hbase/ipc/SimpleServerCall.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.SimpleServerRpcConnection.java">org/apache/hadoop/hbase/ipc/SimpleServerRpcConnection.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.TestBufferChain.java">org/apache/hadoop/hbase/ipc/TestBufferChain.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.TestCellBlockBuilder.java">org/apache/hadoop/hbase/ipc/TestCellBlockBuilder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.TestFifoRpcScheduler.java">org/apache/hadoop/hbase/ipc/TestFifoRpcScheduler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.TestHBaseClient.java">org/apache/hadoop/hbase/ipc/TestHBaseClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>41</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.TestHBaseRpcControllerImpl.java">org/apache/hadoop/hbase/ipc/TestHBaseRpcControllerImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.TestProtobufRpcServiceImpl.java">org/apache/hadoop/hbase/ipc/TestProtobufRpcServiceImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.TestRpcMetrics.java">org/apache/hadoop/hbase/ipc/TestRpcMetrics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.TestSimpleRpcScheduler.java">org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.log.HBaseMarkers.java">org/apache/hadoop/hbase/log/HBaseMarkers.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapred.Driver.java">org/apache/hadoop/hbase/mapred/Driver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapred.GroupingTableMap.java">org/apache/hadoop/hbase/mapred/GroupingTableMap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapred.HRegionPartitioner.java">org/apache/hadoop/hbase/mapred/HRegionPartitioner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapred.IdentityTableMap.java">org/apache/hadoop/hbase/mapred/IdentityTableMap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapred.IdentityTableReduce.java">org/apache/hadoop/hbase/mapred/IdentityTableReduce.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapred.MultiTableSnapshotInputFormat.java">org/apache/hadoop/hbase/mapred/MultiTableSnapshotInputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapred.RowCounter.java">org/apache/hadoop/hbase/mapred/RowCounter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapred.TableInputFormat.java">org/apache/hadoop/hbase/mapred/TableInputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapred.TableInputFormatBase.java">org/apache/hadoop/hbase/mapred/TableInputFormatBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapred.TableMap.java">org/apache/hadoop/hbase/mapred/TableMap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapred.TableMapReduceUtil.java">org/apache/hadoop/hbase/mapred/TableMapReduceUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>22</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapred.TableOutputFormat.java">org/apache/hadoop/hbase/mapred/TableOutputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapred.TableRecordReader.java">org/apache/hadoop/hbase/mapred/TableRecordReader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapred.TableRecordReaderImpl.java">org/apache/hadoop/hbase/mapred/TableRecordReaderImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapred.TableReduce.java">org/apache/hadoop/hbase/mapred/TableReduce.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapred.TableSnapshotInputFormat.java">org/apache/hadoop/hbase/mapred/TableSnapshotInputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapred.TableSplit.java">org/apache/hadoop/hbase/mapred/TableSplit.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>17</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapred.TestGroupingTableMap.java">org/apache/hadoop/hbase/mapred/TestGroupingTableMap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapred.TestIdentityTableMap.java">org/apache/hadoop/hbase/mapred/TestIdentityTableMap.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapred.TestRowCounter.java">org/apache/hadoop/hbase/mapred/TestRowCounter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapred.TestSplitTable.java">org/apache/hadoop/hbase/mapred/TestSplitTable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapred.TestTableInputFormat.java">org/apache/hadoop/hbase/mapred/TestTableInputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>22</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapred.TestTableMapReduce.java">org/apache/hadoop/hbase/mapred/TestTableMapReduce.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapred.TestTableMapReduceUtil.java">org/apache/hadoop/hbase/mapred/TestTableMapReduceUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapred.TestTableSnapshotInputFormat.java">org/apache/hadoop/hbase/mapred/TestTableSnapshotInputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.CellCounter.java">org/apache/hadoop/hbase/mapreduce/CellCounter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.CellCreator.java">org/apache/hadoop/hbase/mapreduce/CellCreator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.CellSerialization.java">org/apache/hadoop/hbase/mapreduce/CellSerialization.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.CellSortReducer.java">org/apache/hadoop/hbase/mapreduce/CellSortReducer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.CopyTable.java">org/apache/hadoop/hbase/mapreduce/CopyTable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.DefaultVisibilityExpressionResolver.java">org/apache/hadoop/hbase/mapreduce/DefaultVisibilityExpressionResolver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.Driver.java">org/apache/hadoop/hbase/mapreduce/Driver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.Export.java">org/apache/hadoop/hbase/mapreduce/Export.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.ExportUtils.java">org/apache/hadoop/hbase/mapreduce/ExportUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.GroupingTableMapper.java">org/apache/hadoop/hbase/mapreduce/GroupingTableMapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.HFileInputFormat.java">org/apache/hadoop/hbase/mapreduce/HFileInputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.java">org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.HRegionPartitioner.java">org/apache/hadoop/hbase/mapreduce/HRegionPartitioner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.HashTable.java">org/apache/hadoop/hbase/mapreduce/HashTable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.IdentityTableMapper.java">org/apache/hadoop/hbase/mapreduce/IdentityTableMapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.IdentityTableReducer.java">org/apache/hadoop/hbase/mapreduce/IdentityTableReducer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.Import.java">org/apache/hadoop/hbase/mapreduce/Import.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.ImportTsv.java">org/apache/hadoop/hbase/mapreduce/ImportTsv.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>22</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.IndexBuilder.java">org/apache/hadoop/hbase/mapreduce/IndexBuilder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.IntegrationTestBulkLoad.java">org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.IntegrationTestImportTsv.java">org/apache/hadoop/hbase/mapreduce/IntegrationTestImportTsv.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.IntegrationTestTableSnapshotInputFormat.java">org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.MapreduceTestingShim.java">org/apache/hadoop/hbase/mapreduce/MapreduceTestingShim.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.MultiTableHFileOutputFormat.java">org/apache/hadoop/hbase/mapreduce/MultiTableHFileOutputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.MultiTableInputFormat.java">org/apache/hadoop/hbase/mapreduce/MultiTableInputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.MultiTableInputFormatBase.java">org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.MultiTableInputFormatTestBase.java">org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatTestBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.MultiTableOutputFormat.java">org/apache/hadoop/hbase/mapreduce/MultiTableOutputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.MultiTableSnapshotInputFormat.java">org/apache/hadoop/hbase/mapreduce/MultiTableSnapshotInputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.MultiTableSnapshotInputFormatImpl.java">org/apache/hadoop/hbase/mapreduce/MultiTableSnapshotInputFormatImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.MultithreadedTableMapper.java">org/apache/hadoop/hbase/mapreduce/MultithreadedTableMapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.MutationSerialization.java">org/apache/hadoop/hbase/mapreduce/MutationSerialization.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.NMapInputFormat.java">org/apache/hadoop/hbase/mapreduce/NMapInputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.PutCombiner.java">org/apache/hadoop/hbase/mapreduce/PutCombiner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.PutSortReducer.java">org/apache/hadoop/hbase/mapreduce/PutSortReducer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.ResultSerialization.java">org/apache/hadoop/hbase/mapreduce/ResultSerialization.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.RowCounter.java">org/apache/hadoop/hbase/mapreduce/RowCounter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.RowCounter_Counters.properties">org/apache/hadoop/hbase/mapreduce/RowCounter_Counters.properties</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.SampleUploader.java">org/apache/hadoop/hbase/mapreduce/SampleUploader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.SimpleTotalOrderPartitioner.java">org/apache/hadoop/hbase/mapreduce/SimpleTotalOrderPartitioner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.SyncTable.java">org/apache/hadoop/hbase/mapreduce/SyncTable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TableInputFormat.java">org/apache/hadoop/hbase/mapreduce/TableInputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TableInputFormatBase.java">org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>20</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.java">org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>66</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TableMapper.java">org/apache/hadoop/hbase/mapreduce/TableMapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TableOutputCommitter.java">org/apache/hadoop/hbase/mapreduce/TableOutputCommitter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TableOutputFormat.java">org/apache/hadoop/hbase/mapreduce/TableOutputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TableRecordReader.java">org/apache/hadoop/hbase/mapreduce/TableRecordReader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl.java">org/apache/hadoop/hbase/mapreduce/TableRecordReaderImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TableReducer.java">org/apache/hadoop/hbase/mapreduce/TableReducer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TableSnapshotInputFormat.java">org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TableSnapshotInputFormatImpl.java">org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TableSnapshotInputFormatTestBase.java">org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatTestBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TableSplit.java">org/apache/hadoop/hbase/mapreduce/TableSplit.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestCellCounter.java">org/apache/hadoop/hbase/mapreduce/TestCellCounter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestCopyTable.java">org/apache/hadoop/hbase/mapreduce/TestCopyTable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestGroupingTableMapper.java">org/apache/hadoop/hbase/mapreduce/TestGroupingTableMapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestHBaseMRTestingUtility.java">org/apache/hadoop/hbase/mapreduce/TestHBaseMRTestingUtility.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestHFileOutputFormat2.java">org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>40</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestHRegionPartitioner.java">org/apache/hadoop/hbase/mapreduce/TestHRegionPartitioner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestHashTable.java">org/apache/hadoop/hbase/mapreduce/TestHashTable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestImportExport.java">org/apache/hadoop/hbase/mapreduce/TestImportExport.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>39</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestImportTSVWithOperationAttributes.java">org/apache/hadoop/hbase/mapreduce/TestImportTSVWithOperationAttributes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestImportTSVWithTTLs.java">org/apache/hadoop/hbase/mapreduce/TestImportTSVWithTTLs.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestImportTSVWithVisibilityLabels.java">org/apache/hadoop/hbase/mapreduce/TestImportTSVWithVisibilityLabels.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>27</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestImportTsv.java">org/apache/hadoop/hbase/mapreduce/TestImportTsv.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>20</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestImportTsvParser.java">org/apache/hadoop/hbase/mapreduce/TestImportTsvParser.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestMapReduceExamples.java">org/apache/hadoop/hbase/mapreduce/TestMapReduceExamples.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestMultiTableInputFormat.java">org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestMultiTableInputFormatBase.java">org/apache/hadoop/hbase/mapreduce/TestMultiTableInputFormatBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestMultiTableSnapshotInputFormatImpl.java">org/apache/hadoop/hbase/mapreduce/TestMultiTableSnapshotInputFormatImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestMultithreadedTableMapper.java">org/apache/hadoop/hbase/mapreduce/TestMultithreadedTableMapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestRegionSizeCalculator.java">org/apache/hadoop/hbase/mapreduce/TestRegionSizeCalculator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestRowCounter.java">org/apache/hadoop/hbase/mapreduce/TestRowCounter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>37</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestSimpleTotalOrderPartitioner.java">org/apache/hadoop/hbase/mapreduce/TestSimpleTotalOrderPartitioner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestSyncTable.java">org/apache/hadoop/hbase/mapreduce/TestSyncTable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestTableInputFormat.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>29</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatBase.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan1.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>30</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan2.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>25</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>21</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestTableMapReduce.java">org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestTableMapReduceBase.java">org/apache/hadoop/hbase/mapreduce/TestTableMapReduceBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestTableSplit.java">org/apache/hadoop/hbase/mapreduce/TestTableSplit.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestTimeRangeMapRed.java">org/apache/hadoop/hbase/mapreduce/TestTimeRangeMapRed.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestWALPlayer.java">org/apache/hadoop/hbase/mapreduce/TestWALPlayer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestWALRecordReader.java">org/apache/hadoop/hbase/mapreduce/TestWALRecordReader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TextSortReducer.java">org/apache/hadoop/hbase/mapreduce/TextSortReducer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TsvImporterCustomTestMapper.java">org/apache/hadoop/hbase/mapreduce/TsvImporterCustomTestMapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TsvImporterMapper.java">org/apache/hadoop/hbase/mapreduce/TsvImporterMapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TsvImporterTextMapper.java">org/apache/hadoop/hbase/mapreduce/TsvImporterTextMapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.VisibilityExpressionResolver.java">org/apache/hadoop/hbase/mapreduce/VisibilityExpressionResolver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.WALInputFormat.java">org/apache/hadoop/hbase/mapreduce/WALInputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.WALPlayer.java">org/apache/hadoop/hbase/mapreduce/WALPlayer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.replication.VerifyReplication.java">org/apache/hadoop/hbase/mapreduce/replication/VerifyReplication.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.AbstractTestDLS.java">org/apache/hadoop/hbase/master/AbstractTestDLS.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.ActiveMasterManager.java">org/apache/hadoop/hbase/master/ActiveMasterManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.AssignmentVerificationReport.java">org/apache/hadoop/hbase/master/AssignmentVerificationReport.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.CatalogJanitor.java">org/apache/hadoop/hbase/master/CatalogJanitor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>27</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.ClusterSchema.java">org/apache/hadoop/hbase/master/ClusterSchema.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.ClusterSchemaServiceImpl.java">org/apache/hadoop/hbase/master/ClusterSchemaServiceImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.DeadServer.java">org/apache/hadoop/hbase/master/DeadServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.DrainingServerTracker.java">org/apache/hadoop/hbase/master/DrainingServerTracker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.ExpiredMobFileCleanerChore.java">org/apache/hadoop/hbase/master/ExpiredMobFileCleanerChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.HMaster.java">org/apache/hadoop/hbase/master/HMaster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>155</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.HMasterCommandLine.java">org/apache/hadoop/hbase/master/HMasterCommandLine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.LoadBalancer.java">org/apache/hadoop/hbase/master/LoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.MasterCoprocessorHost.java">org/apache/hadoop/hbase/master/MasterCoprocessorHost.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.MasterFileSystem.java">org/apache/hadoop/hbase/master/MasterFileSystem.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.MasterMobCompactionThread.java">org/apache/hadoop/hbase/master/MasterMobCompactionThread.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.MasterRpcServices.java">org/apache/hadoop/hbase/master/MasterRpcServices.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.MasterServices.java">org/apache/hadoop/hbase/master/MasterServices.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>41</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.MasterStatusServlet.java">org/apache/hadoop/hbase/master/MasterStatusServlet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.MasterWalManager.java">org/apache/hadoop/hbase/master/MasterWalManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.MetricsAssignmentManager.java">org/apache/hadoop/hbase/master/MetricsAssignmentManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.MetricsMaster.java">org/apache/hadoop/hbase/master/MetricsMaster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.MetricsMasterWrapperImpl.java">org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.MirroringTableStateManager.java">org/apache/hadoop/hbase/master/MirroringTableStateManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.MobCompactionChore.java">org/apache/hadoop/hbase/master/MobCompactionChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.MockRegionServer.java">org/apache/hadoop/hbase/master/MockRegionServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.RackManager.java">org/apache/hadoop/hbase/master/RackManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.RegionPlacementMaintainer.java">org/apache/hadoop/hbase/master/RegionPlacementMaintainer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>29</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.RegionState.java">org/apache/hadoop/hbase/master/RegionState.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>86</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.ServerListener.java">org/apache/hadoop/hbase/master/ServerListener.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.ServerManager.java">org/apache/hadoop/hbase/master/ServerManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>19</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.SnapshotOfRegionAssignmentFromMeta.java">org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.SnapshotSentinel.java">org/apache/hadoop/hbase/master/SnapshotSentinel.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.SplitLogManager.java">org/apache/hadoop/hbase/master/SplitLogManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>17</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.SplitOrMergeTracker.java">org/apache/hadoop/hbase/master/SplitOrMergeTracker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.TableNamespaceManager.java">org/apache/hadoop/hbase/master/TableNamespaceManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.TableStateManager.java">org/apache/hadoop/hbase/master/TableStateManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.TestActiveMasterManager.java">org/apache/hadoop/hbase/master/TestActiveMasterManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.TestCatalogJanitor.java">org/apache/hadoop/hbase/master/TestCatalogJanitor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.TestCatalogJanitorInMemoryStates.java">org/apache/hadoop/hbase/master/TestCatalogJanitorInMemoryStates.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.TestHMasterCommandLine.java">org/apache/hadoop/hbase/master/TestHMasterCommandLine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.TestMaster.java">org/apache/hadoop/hbase/master/TestMaster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.TestMasterFailoverBalancerPersistence.java">org/apache/hadoop/hbase/master/TestMasterFailoverBalancerPersistence.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.TestMasterFileSystem.java">org/apache/hadoop/hbase/master/TestMasterFileSystem.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.TestMasterFileSystemWithWALDir.java">org/apache/hadoop/hbase/master/TestMasterFileSystemWithWALDir.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.TestMasterMetrics.java">org/apache/hadoop/hbase/master/TestMasterMetrics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.TestMasterMetricsWrapper.java">org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.TestMasterNoCluster.java">org/apache/hadoop/hbase/master/TestMasterNoCluster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>20</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.TestMasterOperationsForRegionReplicas.java">org/apache/hadoop/hbase/master/TestMasterOperationsForRegionReplicas.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.TestMasterStatusServlet.java">org/apache/hadoop/hbase/master/TestMasterStatusServlet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.TestMasterTransitions.java">org/apache/hadoop/hbase/master/TestMasterTransitions.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.TestMirroringTableStateManager.java">org/apache/hadoop/hbase/master/TestMirroringTableStateManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.TestRegionPlacement.java">org/apache/hadoop/hbase/master/TestRegionPlacement.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>20</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.TestRegionPlacement2.java">org/apache/hadoop/hbase/master/TestRegionPlacement2.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.TestRollingRestart.java">org/apache/hadoop/hbase/master/TestRollingRestart.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.TestSplitLogManager.java">org/apache/hadoop/hbase/master/TestSplitLogManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.TestTableStateManager.java">org/apache/hadoop/hbase/master/TestTableStateManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.TestWarmupRegion.java">org/apache/hadoop/hbase/master/TestWarmupRegion.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>19</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.AssignProcedure.java">org/apache/hadoop/hbase/master/assignment/AssignProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.AssignmentManager.java">org/apache/hadoop/hbase/master/assignment/AssignmentManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>30</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.GCMergedRegionsProcedure.java">org/apache/hadoop/hbase/master/assignment/GCMergedRegionsProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.GCRegionProcedure.java">org/apache/hadoop/hbase/master/assignment/GCRegionProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>32</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure.java">org/apache/hadoop/hbase/master/assignment/MergeTableRegionsProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.MockMasterServices.java">org/apache/hadoop/hbase/master/assignment/MockMasterServices.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.RegionStateStore.java">org/apache/hadoop/hbase/master/assignment/RegionStateStore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.RegionStates.java">org/apache/hadoop/hbase/master/assignment/RegionStates.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>25</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.RegionTransitionProcedure.java">org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.SplitTableRegionProcedure.java">org/apache/hadoop/hbase/master/assignment/SplitTableRegionProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.TestAssignmentManager.java">org/apache/hadoop/hbase/master/assignment/TestAssignmentManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.TestAssignmentOnRSCrash.java">org/apache/hadoop/hbase/master/assignment/TestAssignmentOnRSCrash.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.TestRegionStates.java">org/apache/hadoop/hbase/master/assignment/TestRegionStates.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.TestSplitTableRegionProcedure.java">org/apache/hadoop/hbase/master/assignment/TestSplitTableRegionProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.TestUnexpectedStateException.java">org/apache/hadoop/hbase/master/assignment/TestUnexpectedStateException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.UnassignProcedure.java">org/apache/hadoop/hbase/master/assignment/UnassignProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.assignment.Util.java">org/apache/hadoop/hbase/master/assignment/Util.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.BalancerChore.java">org/apache/hadoop/hbase/master/balancer/BalancerChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.BalancerTestBase.java">org/apache/hadoop/hbase/master/balancer/BalancerTestBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>75</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>60</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.ClusterLoadState.java">org/apache/hadoop/hbase/master/balancer/ClusterLoadState.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.ClusterStatusChore.java">org/apache/hadoop/hbase/master/balancer/ClusterStatusChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.FavoredStochasticBalancer.java">org/apache/hadoop/hbase/master/balancer/FavoredStochasticBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory.java">org/apache/hadoop/hbase/master/balancer/LoadBalancerFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.LoadBalancerPerformanceEvaluation.java">org/apache/hadoop/hbase/master/balancer/LoadBalancerPerformanceEvaluation.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.RegionInfoComparator.java">org/apache/hadoop/hbase/master/balancer/RegionInfoComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.RegionLocationFinder.java">org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.ServerAndLoad.java">org/apache/hadoop/hbase/master/balancer/ServerAndLoad.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.SimpleLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/SimpleLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>33</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.StochasticLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>32</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.TestBaseLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.TestDefaultLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/TestDefaultLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>48</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.TestFavoredNodeTableImport.java">org/apache/hadoop/hbase/master/balancer/TestFavoredNodeTableImport.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.TestFavoredStochasticBalancerPickers.java">org/apache/hadoop/hbase/master/balancer/TestFavoredStochasticBalancerPickers.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.TestRegionsOnMasterOptions.java">org/apache/hadoop/hbase/master/balancer/TestRegionsOnMasterOptions.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.TestServerAndLoad.java">org/apache/hadoop/hbase/master/balancer/TestServerAndLoad.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.balancer.TestStochasticLoadBalancer.java">org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>33</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.BaseFileCleanerDelegate.java">org/apache/hadoop/hbase/master/cleaner/BaseFileCleanerDelegate.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.BaseLogCleanerDelegate.java">org/apache/hadoop/hbase/master/cleaner/BaseLogCleanerDelegate.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.CleanerChore.java">org/apache/hadoop/hbase/master/cleaner/CleanerChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.FileCleanerDelegate.java">org/apache/hadoop/hbase/master/cleaner/FileCleanerDelegate.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.HFileLinkCleaner.java">org/apache/hadoop/hbase/master/cleaner/HFileLinkCleaner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.TestCleanerChore.java">org/apache/hadoop/hbase/master/cleaner/TestCleanerChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.TestHFileCleaner.java">org/apache/hadoop/hbase/master/cleaner/TestHFileCleaner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.TestHFileLinkCleaner.java">org/apache/hadoop/hbase/master/cleaner/TestHFileLinkCleaner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.TestSnapshotFromMaster.java">org/apache/hadoop/hbase/master/cleaner/TestSnapshotFromMaster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner.java">org/apache/hadoop/hbase/master/cleaner/TimeToLiveHFileCleaner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.cleaner.TimeToLiveLogCleaner.java">org/apache/hadoop/hbase/master/cleaner/TimeToLiveLogCleaner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.locking.LockManager.java">org/apache/hadoop/hbase/master/locking/LockManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.locking.LockProcedure.java">org/apache/hadoop/hbase/master/locking/LockProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.normalizer.EmptyNormalizationPlan.java">org/apache/hadoop/hbase/master/normalizer/EmptyNormalizationPlan.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.java">org/apache/hadoop/hbase/master/normalizer/NormalizationPlan.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore.java">org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory.java">org/apache/hadoop/hbase/master/normalizer/RegionNormalizerFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.normalizer.TestSimpleRegionNormalizerOnCluster.java">org/apache/hadoop/hbase/master/normalizer/TestSimpleRegionNormalizerOnCluster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.AbstractStateMachineNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/AbstractStateMachineNamespaceProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.AbstractStateMachineRegionProcedure.java">org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.AbstractStateMachineTableProcedure.java">org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.CloneSnapshotProcedure.java">org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.CreateNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/CreateNamespaceProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>31</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.CreateTableProcedure.java">org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/DeleteNamespaceProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>34</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure.java">org/apache/hadoop/hbase/master/procedure/DeleteTableProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.DisableTableProcedure.java">org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.EnableTableProcedure.java">org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>72</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>7</td></tr>
-<tr class="b">
+<td>6</td></tr>
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.MasterProcedureSchedulerPerformanceEvaluation.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureSchedulerPerformanceEvaluation.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.MasterProcedureTestingUtility.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil.java">org/apache/hadoop/hbase/master/procedure/MasterProcedureUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.ModifyNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>21</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure.java">org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.ProcedureDescriber.java">org/apache/hadoop/hbase/master/procedure/ProcedureDescriber.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch.java">org/apache/hadoop/hbase/master/procedure/ProcedurePrepareLatch.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.master.procedure.ProcedureSyncWait.java">org/apache/had

<TRUNCATED>

[29/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.html
index 5623ece..6f1a7b9 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":9,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":9,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":9,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":9,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109"
 :10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":9,"i132":10,"i133":9,"i134":10,"i135":10,"i136":10,"i137":10,"i138":10,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":10,"i146":10,"i147":10,"i148":10,"i149":10,"i150":10,"i151":10,"i152":9,"i153":10,"i154":9,"i155":10,"i156":10,"i157":10,"i158":10,"i159":10,"i160":10,"i161":10,"i162":10,"i163":10,"i164":10,"i165":10,"i166":10,"i167":10,"i168":10,"i169":10,"i170":10,"i171":10,"i172":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":9,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":9,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":9,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":9,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109"
 :10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":9,"i133":10,"i134":9,"i135":10,"i136":10,"i137":10,"i138":10,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":10,"i146":10,"i147":10,"i148":10,"i149":10,"i150":10,"i151":10,"i152":10,"i153":9,"i154":10,"i155":9,"i156":10,"i157":10,"i158":10,"i159":10,"i160":10,"i161":10,"i162":10,"i163":10,"i164":10,"i165":10,"i166":10,"i167":10,"i168":10,"i169":10,"i170":10,"i171":10,"i172":10,"i173":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.LimitedPrivate(value="Tools")
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.225">HRegionServer</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.227">HRegionServer</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" title="class in org.apache.hadoop.hbase.util">HasThread</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/LastSequenceId.html" title="interface in org.apache.hadoop.hbase.regionserver">LastSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf">ConfigurationObserver</a></pre>
 <div class="block">HRegionServer makes a set of HRegions available to clients. It checks in with
@@ -1165,116 +1165,120 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALFileSystem--">getWALFileSystem</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i108" class="altColor">
+<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWalGroupsReplicationStatus--">getWalGroupsReplicationStatus</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i109" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/LogRoller.html" title="class in org.apache.hadoop.hbase.regionserver">LogRoller</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWalRoller--">getWalRoller</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i109" class="rowColor">
+<tr id="i110" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALRootDir--">getWALRootDir</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i110" class="altColor">
+<tr id="i111" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALs--">getWALs</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i111" class="rowColor">
+<tr id="i112" class="altColor">
 <td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.WriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantReadWriteLock.WriteLock</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWriteLock--">getWriteLock</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i112" class="altColor">
+<tr id="i113" class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWriteRequestCount--">getWriteRequestCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i113" class="rowColor">
+<tr id="i114" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getZooKeeper--">getZooKeeper</a></span>()</code>
 <div class="block">Gets the ZooKeeper instance for this server.</div>
 </td>
 </tr>
-<tr id="i114" class="altColor">
+<tr id="i115" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#handleReportForDutyResponse-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse-">handleReportForDutyResponse</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse&nbsp;c)</code>&nbsp;</td>
 </tr>
-<tr id="i115" class="rowColor">
+<tr id="i116" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#initializeFileSystem--">initializeFileSystem</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i116" class="altColor">
+<tr id="i117" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#initializeMemStoreChunkCreator--">initializeMemStoreChunkCreator</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i117" class="rowColor">
+<tr id="i118" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#initializeThreads--">initializeThreads</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i118" class="altColor">
+<tr id="i119" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#initializeZooKeeper--">initializeZooKeeper</a></span>()</code>
 <div class="block">Bring up connection to zk ensemble and then wait until a master for this cluster and then after
  that, wait until cluster 'up' flag has been set.</div>
 </td>
 </tr>
-<tr id="i119" class="rowColor">
+<tr id="i120" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isAborted--">isAborted</a></span>()</code>
 <div class="block">Check if the server or client was aborted.</div>
 </td>
 </tr>
-<tr id="i120" class="altColor">
+<tr id="i121" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isClusterUp--">isClusterUp</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i121" class="rowColor">
+<tr id="i122" class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isHealthCheckerConfigured--">isHealthCheckerConfigured</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i122" class="altColor">
+<tr id="i123" class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isHealthy--">isHealthy</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i123" class="rowColor">
+<tr id="i124" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isOnline--">isOnline</a></span>()</code>
 <div class="block">Report the status of the server.</div>
 </td>
 </tr>
-<tr id="i124" class="altColor">
+<tr id="i125" class="rowColor">
 <td class="colFirst"><code>(package private) boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isOnlineRegionsEmpty--">isOnlineRegionsEmpty</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i125" class="rowColor">
+<tr id="i126" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isShutDown--">isShutDown</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i126" class="altColor">
+<tr id="i127" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopped--">isStopped</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i127" class="rowColor">
+<tr id="i128" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopping--">isStopping</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i128" class="altColor">
+<tr id="i129" class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#keepLooping--">keepLooping</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i129" class="rowColor">
+<tr id="i130" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#kill--">kill</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i130" class="altColor">
+<tr id="i131" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#login-org.apache.hadoop.hbase.security.UserProvider-java.lang.String-">login</a></span>(<a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;user,
      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;host)</code>&nbsp;</td>
 </tr>
-<tr id="i131" class="rowColor">
+<tr id="i132" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#main-java.lang.String:A-">main</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</code>&nbsp;</td>
 </tr>
-<tr id="i132" class="altColor">
+<tr id="i133" class="rowColor">
 <td class="colFirst"><code>protected int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#movedRegionCleanerPeriod--">movedRegionCleanerPeriod</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i133" class="rowColor">
+<tr id="i134" class="altColor">
 <td class="colFirst"><code>private static &lt;T extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ReplicationService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationService</a>&gt;<br>T</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#newReplicationInstance-java.lang.String-java.lang.Class-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.regionserver.HRegionServer-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.wal.WALProvider-">newReplicationInstance</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;classname,
                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;xface,
@@ -1285,34 +1289,34 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
                       org.apache.hadoop.fs.Path&nbsp;oldLogDir,
                       <a href="../../../../../org/apache/hadoop/hbase/wal/WALProvider.html" title="interface in org.apache.hadoop.hbase.wal">WALProvider</a>&nbsp;walProvider)</code>&nbsp;</td>
 </tr>
-<tr id="i134" class="altColor">
+<tr id="i135" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#onConfigurationChange-org.apache.hadoop.conf.Configuration-">onConfigurationChange</a></span>(org.apache.hadoop.conf.Configuration&nbsp;newConf)</code>
 <div class="block">This method would be called by the <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf"><code>ConfigurationManager</code></a>
  object when the <code>Configuration</code> object is reloaded from disk.</div>
 </td>
 </tr>
-<tr id="i135" class="rowColor">
+<tr id="i136" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#postOpenDeployTasks-org.apache.hadoop.hbase.regionserver.RegionServerServices.PostOpenDeployContext-">postOpenDeployTasks</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.PostOpenDeployContext.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerServices.PostOpenDeployContext</a>&nbsp;context)</code>
 <div class="block">Tasks to perform after region open to complete deploy of region on
  regionserver</div>
 </td>
 </tr>
-<tr id="i136" class="altColor">
+<tr id="i137" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#preRegistrationInitialization--">preRegistrationInitialization</a></span>()</code>
 <div class="block">All initialization needed before we go register with Master.<br>
  Do bare minimum.</div>
 </td>
 </tr>
-<tr id="i137" class="rowColor">
+<tr id="i138" class="altColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#putUpWebUI--">putUpWebUI</a></span>()</code>
 <div class="block">Puts up the webui.</div>
 </td>
 </tr>
-<tr id="i138" class="altColor">
+<tr id="i139" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html" title="class in org.apache.hadoop.hbase.client.locking">EntityLock</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#regionLock-java.util.List-java.lang.String-org.apache.hadoop.hbase.Abortable-">regionLock</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;regionInfos,
           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;description,
@@ -1320,34 +1324,34 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <div class="block">Master based locks on namespaces/tables/regions.</div>
 </td>
 </tr>
-<tr id="i139" class="rowColor">
+<tr id="i140" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#registerConfigurationObservers--">registerConfigurationObservers</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i140" class="altColor">
+<tr id="i141" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#registerService-com.google.protobuf.Service-">registerService</a></span>(com.google.protobuf.Service&nbsp;instance)</code>
 <div class="block">Registers a new protocol buffer <code>Service</code> subclass as a coprocessor endpoint to be
  available for handling</div>
 </td>
 </tr>
-<tr id="i141" class="rowColor">
+<tr id="i142" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#remoteProcedureComplete-long-java.lang.Throwable-">remoteProcedureComplete</a></span>(long&nbsp;procId,
                        <a href="https://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)</code>&nbsp;</td>
 </tr>
-<tr id="i142" class="altColor">
+<tr id="i143" class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#removeFromMovedRegions-java.lang.String-">removeFromMovedRegions</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encodedName)</code>&nbsp;</td>
 </tr>
-<tr id="i143" class="rowColor">
+<tr id="i144" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#removeRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.ServerName-">removeRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;r,
             <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;destination)</code>
 <div class="block">Removes the given Region from the list of onlineRegions.</div>
 </td>
 </tr>
-<tr id="i144" class="altColor">
+<tr id="i145" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportFileArchivalForQuotas-org.apache.hadoop.hbase.TableName-java.util.Collection-">reportFileArchivalForQuotas</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                            <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;&nbsp;archivedFiles)</code>
@@ -1355,90 +1359,90 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
  just moved to the archive directory.</div>
 </td>
 </tr>
-<tr id="i145" class="rowColor">
+<tr id="i146" class="altColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportForDuty--">reportForDuty</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i146" class="altColor">
+<tr id="i147" class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportProcedureDone-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportProcedureDoneRequest-">reportProcedureDone</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportProcedureDoneRequest&nbsp;request)</code>&nbsp;</td>
 </tr>
-<tr id="i147" class="rowColor">
+<tr id="i148" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportRegionSizesForQuotas-org.apache.hadoop.hbase.quotas.RegionSizeStore-">reportRegionSizesForQuotas</a></span>(<a href="../../../../../org/apache/hadoop/hbase/quotas/RegionSizeStore.html" title="interface in org.apache.hadoop.hbase.quotas">RegionSizeStore</a>&nbsp;regionSizeStore)</code>
 <div class="block">Reports the given map of Regions and their size on the filesystem to the active Master.</div>
 </td>
 </tr>
-<tr id="i148" class="altColor">
+<tr id="i149" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportRegionStateTransition-org.apache.hadoop.hbase.regionserver.RegionServerServices.RegionStateTransitionContext-">reportRegionStateTransition</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.RegionStateTransitionContext.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerServices.RegionStateTransitionContext</a>&nbsp;context)</code>
 <div class="block">Notify master that a handler requests to change a region state</div>
 </td>
 </tr>
-<tr id="i149" class="rowColor">
+<tr id="i150" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#run--">run</a></span>()</code>
 <div class="block">The HRegionServer sticks in this loop until closed.</div>
 </td>
 </tr>
-<tr id="i150" class="altColor">
+<tr id="i151" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#sendShutdownInterrupt--">sendShutdownInterrupt</a></span>()</code>
 <div class="block">Called on stop/abort before closing the cluster connection and meta locator.</div>
 </td>
 </tr>
-<tr id="i151" class="rowColor">
+<tr id="i152" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#setupClusterConnection--">setupClusterConnection</a></span>()</code>
 <div class="block">Setup our cluster connection if not already initialized.</div>
 </td>
 </tr>
-<tr id="i152" class="altColor">
+<tr id="i153" class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/util/NettyEventLoopGroupConfig.html" title="class in org.apache.hadoop.hbase.util">NettyEventLoopGroupConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#setupNetty-org.apache.hadoop.conf.Configuration-">setupNetty</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
-<tr id="i153" class="rowColor">
+<tr id="i154" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#setupWALAndReplication--">setupWALAndReplication</a></span>()</code>
 <div class="block">Setup WAL log and replication if enabled.</div>
 </td>
 </tr>
-<tr id="i154" class="altColor">
+<tr id="i155" class="rowColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#setupWindows-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.conf.ConfigurationManager-">setupWindows</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
             <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf">ConfigurationManager</a>&nbsp;cm)</code>
 <div class="block">If running on Windows, do windows-specific setup.</div>
 </td>
 </tr>
-<tr id="i155" class="rowColor">
+<tr id="i156" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#shutdownWAL-boolean-">shutdownWAL</a></span>(boolean&nbsp;close)</code>&nbsp;</td>
 </tr>
-<tr id="i156" class="altColor">
+<tr id="i157" class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#sleep-long-">sleep</a></span>(long&nbsp;millis)</code>&nbsp;</td>
 </tr>
-<tr id="i157" class="rowColor">
+<tr id="i158" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#startHeapMemoryManager--">startHeapMemoryManager</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i158" class="altColor">
+<tr id="i159" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#startReplicationService--">startReplicationService</a></span>()</code>
 <div class="block">Start up replication source and sink handlers.</div>
 </td>
 </tr>
-<tr id="i159" class="rowColor">
+<tr id="i160" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#startServices--">startServices</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i160" class="altColor">
+<tr id="i161" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#stop-java.lang.String-">stop</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg)</code>
 <div class="block">Stop this service.</div>
 </td>
 </tr>
-<tr id="i161" class="rowColor">
+<tr id="i162" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#stop-java.lang.String-boolean-org.apache.hadoop.hbase.security.User-">stop</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg,
     boolean&nbsp;force,
@@ -1446,61 +1450,61 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <div class="block">Stops the regionserver.</div>
 </td>
 </tr>
-<tr id="i162" class="altColor">
+<tr id="i163" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#stopServiceThreads--">stopServiceThreads</a></span>()</code>
 <div class="block">Wait on all threads to finish.</div>
 </td>
 </tr>
-<tr id="i163" class="rowColor">
+<tr id="i164" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#toString--">toString</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i164" class="altColor">
+<tr id="i165" class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#triggerFlushInPrimaryRegion-org.apache.hadoop.hbase.regionserver.HRegion-">triggerFlushInPrimaryRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)</code>
 <div class="block">Trigger a flush in the primary region replica if this region is a secondary replica.</div>
 </td>
 </tr>
-<tr id="i165" class="rowColor">
+<tr id="i166" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#tryRegionServerReport-long-long-">tryRegionServerReport</a></span>(long&nbsp;reportStartTime,
                      long&nbsp;reportEndTime)</code>&nbsp;</td>
 </tr>
-<tr id="i166" class="altColor">
+<tr id="i167" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#unassign-byte:A-">unassign</a></span>(byte[]&nbsp;regionName)</code>
 <div class="block">Unassign the given region from the current regionserver and assign it randomly.</div>
 </td>
 </tr>
-<tr id="i167" class="rowColor">
+<tr id="i168" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#updateConfiguration--">updateConfiguration</a></span>()</code>
 <div class="block">Reload the configuration from disk.</div>
 </td>
 </tr>
-<tr id="i168" class="altColor">
+<tr id="i169" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#updateRegionFavoredNodesMapping-java.lang.String-java.util.List-">updateRegionFavoredNodesMapping</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encodedRegionName,
                                <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ServerName&gt;&nbsp;favoredNodes)</code>
 <div class="block">Used to update the favored nodes mapping when required.</div>
 </td>
 </tr>
-<tr id="i169" class="rowColor">
+<tr id="i170" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#waitForMasterActive--">waitForMasterActive</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i170" class="altColor">
+<tr id="i171" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#waitForServerOnline--">waitForServerOnline</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i171" class="rowColor">
+<tr id="i172" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#waitOnAllRegionsToClose-boolean-">waitOnAllRegionsToClose</a></span>(boolean&nbsp;abort)</code>
 <div class="block">Wait on regions close.</div>
 </td>
 </tr>
-<tr id="i172" class="altColor">
+<tr id="i173" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#walRollRequestFinished--">walRollRequestFinished</a></span>()</code>
 <div class="block">For testing</div>
@@ -1541,7 +1545,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>INIT_PAUSE_TIME_MS</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.228">INIT_PAUSE_TIME_MS</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.230">INIT_PAUSE_TIME_MS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HRegionServer.INIT_PAUSE_TIME_MS">Constant Field Values</a></dd>
@@ -1554,7 +1558,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.230">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.232">LOG</a></pre>
 </li>
 </ul>
 <a name="TEST_SKIP_REPORTING_TRANSITION">
@@ -1563,7 +1567,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_SKIP_REPORTING_TRANSITION</h4>
-<pre>public static&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.237">TEST_SKIP_REPORTING_TRANSITION</a></pre>
+<pre>public static&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.239">TEST_SKIP_REPORTING_TRANSITION</a></pre>
 <div class="block">For testing only!  Set to true to skip notifying region assignment to master .</div>
 </li>
 </ul>
@@ -1573,7 +1577,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>regionsInTransitionInRS</h4>
-<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.242">regionsInTransitionInRS</a></pre>
+<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.244">regionsInTransitionInRS</a></pre>
 </li>
 </ul>
 <a name="cacheFlusher">
@@ -1582,7 +1586,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheFlusher</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreFlusher.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreFlusher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.246">cacheFlusher</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreFlusher.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreFlusher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.248">cacheFlusher</a></pre>
 </li>
 </ul>
 <a name="hMemManager">
@@ -1591,7 +1595,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>hMemManager</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HeapMemoryManager.html" title="class in org.apache.hadoop.hbase.regionserver">HeapMemoryManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.248">hMemManager</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HeapMemoryManager.html" title="class in org.apache.hadoop.hbase.regionserver">HeapMemoryManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.250">hMemManager</a></pre>
 </li>
 </ul>
 <a name="clusterConnection">
@@ -1600,7 +1604,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>clusterConnection</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.258">clusterConnection</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.260">clusterConnection</a></pre>
 <div class="block">Cluster connection to be shared by services.
  Initialized at server startup and closed when server shuts down.
  Clients must never close it explicitly.
@@ -1615,7 +1619,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>metaTableLocator</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html" title="class in org.apache.hadoop.hbase.zookeeper">MetaTableLocator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.266">metaTableLocator</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html" title="class in org.apache.hadoop.hbase.zookeeper">MetaTableLocator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.268">metaTableLocator</a></pre>
 </li>
 </ul>
 <a name="tableDescriptors">
@@ -1624,7 +1628,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>tableDescriptors</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableDescriptors.html" title="interface in org.apache.hadoop.hbase">TableDescriptors</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.271">tableDescriptors</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableDescriptors.html" title="interface in org.apache.hadoop.hbase">TableDescriptors</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.273">tableDescriptors</a></pre>
 <div class="block">Go here to get table descriptors.</div>
 </li>
 </ul>
@@ -1634,7 +1638,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>replicationSourceHandler</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationSourceService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.274">replicationSourceHandler</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationSourceService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.276">replicationSourceHandler</a></pre>
 </li>
 </ul>
 <a name="replicationSinkHandler">
@@ -1643,7 +1647,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>replicationSinkHandler</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ReplicationSinkService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationSinkService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.275">replicationSinkHandler</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ReplicationSinkService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationSinkService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.277">replicationSinkHandler</a></pre>
 </li>
 </ul>
 <a name="compactSplitThread">
@@ -1652,7 +1656,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>compactSplitThread</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactSplit.html" title="class in org.apache.hadoop.hbase.regionserver">CompactSplit</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.278">compactSplitThread</a></pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactSplit.html" title="class in org.apache.hadoop.hbase.regionserver">CompactSplit</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.280">compactSplitThread</a></pre>
 </li>
 </ul>
 <a name="onlineRegions">
@@ -1661,7 +1665,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>onlineRegions</h4>
-<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.284">onlineRegions</a></pre>
+<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.286">onlineRegions</a></pre>
 <div class="block">Map of regions currently being served by this region server. Key is the
  encoded region name.  All access should be synchronized.</div>
 </li>
@@ -1672,7 +1676,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>regionFavoredNodesMap</h4>
-<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.295">regionFavoredNodesMap</a></pre>
+<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html?is-external=true" title="class or interface in java.net">InetSocketAddress</a>[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.297">regionFavoredNodesMap</a></pre>
 <div class="block">Map of encoded region names to the DataNode locations they should be hosted on
  We store the value as InetSocketAddress since this is used only in HDFS
  API (create() that takes favored nodes as hints for placing file blocks).
@@ -1688,7 +1692,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>leases</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Leases.html" title="class in org.apache.hadoop.hbase.regionserver">Leases</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.299">leases</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Leases.html" title="class in org.apache.hadoop.hbase.regionserver">Leases</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.301">leases</a></pre>
 </li>
 </ul>
 <a name="executorService">
@@ -1697,7 +1701,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>executorService</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorService.html" title="class in org.apache.hadoop.hbase.executor">ExecutorService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.302">executorService</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorService.html" title="class in org.apache.hadoop.hbase.executor">ExecutorService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.304">executorService</a></pre>
 </li>
 </ul>
 <a name="fsOk">
@@ -1706,7 +1710,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>fsOk</h4>
-<pre>protected volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.305">fsOk</a></pre>
+<pre>protected volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.307">fsOk</a></pre>
 </li>
 </ul>
 <a name="fs">
@@ -1715,7 +1719,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>fs</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/fs/HFileSystem.html" title="class in org.apache.hadoop.hbase.fs">HFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.306">fs</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/fs/HFileSystem.html" title="class in org.apache.hadoop.hbase.fs">HFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.308">fs</a></pre>
 </li>
 </ul>
 <a name="walFs">
@@ -1724,7 +1728,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>walFs</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/fs/HFileSystem.html" title="class in org.apache.hadoop.hbase.fs">HFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.307">walFs</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/fs/HFileSystem.html" title="class in org.apache.hadoop.hbase.fs">HFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.309">walFs</a></pre>
 </li>
 </ul>
 <a name="stopped">
@@ -1733,7 +1737,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>stopped</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.312">stopped</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.314">stopped</a></pre>
 </li>
 </ul>
 <a name="abortRequested">
@@ -1742,7 +1746,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>abortRequested</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.316">abortRequested</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.318">abortRequested</a></pre>
 </li>
 </ul>
 <a name="rowlocks">
@@ -1751,7 +1755,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>rowlocks</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.318">rowlocks</a></pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.320">rowlocks</a></pre>
 </li>
 </ul>
 <a name="stopping">
@@ -1760,7 +1764,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>stopping</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.322">stopping</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.324">stopping</a></pre>
 </li>
 </ul>
 <a name="killed">
@@ -1769,7 +1773,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>killed</h4>
-<pre>volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.324">killed</a></pre>
+<pre>volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.326">killed</a></pre>
 </li>
 </ul>
 <a name="shutDown">
@@ -1778,7 +1782,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>shutDown</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.326">shutDown</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.328">shutDown</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -1787,7 +1791,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>protected final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.328">conf</a></pre>
+<pre>protected final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.330">conf</a></pre>
 </li>
 </ul>
 <a name="rootDir">
@@ -1796,7 +1800,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>rootDir</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.330">rootDir</a></pre>
+<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.332">rootDir</a></pre>
 </li>
 </ul>
 <a name="walRootDir">
@@ -1805,7 +1809,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>walRootDir</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.331">walRootDir</a></pre>
+<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.333">walRootDir</a></pre>
 </li>
 </ul>
 <a name="lock">
@@ -1814,7 +1818,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>lock</h4>
-<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantReadWriteLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.333">lock</a></pre>
+<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantReadWriteLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.335">lock</a></pre>
 </li>
 </ul>
 <a name="numRetries">
@@ -1823,7 +1827,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>numRetries</h4>
-<pre>final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.335">numRetries</a></pre>
+<pre>final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.337">numRetries</a></pre>
 </li>
 </ul>
 <a name="threadWakeFrequency">
@@ -1832,7 +1836,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>threadWakeFrequency</h4>
-<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.336">threadWakeFrequency</a></pre>
+<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.338">threadWakeFrequency</a></pre>
 </li>
 </ul>
 <a name="msgInterval">
@@ -1841,7 +1845,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>msgInterval</h4>
-<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.337">msgInterval</a></pre>
+<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.339">msgInterval</a></pre>
 </li>
 </ul>
 <a name="numRegionsToReport">
@@ -1850,7 +1854,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>numRegionsToReport</h4>
-<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.339">numRegionsToReport</a></pre>
+<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.341">numRegionsToReport</a></pre>
 </li>
 </ul>
 <a name="rssStub">
@@ -1859,7 +1863,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>rssStub</h4>
-<pre>private volatile&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStatusService.BlockingInterface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.342">rssStub</a></pre>
+<pre>private volatile&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStatusService.BlockingInterface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.344">rssStub</a></pre>
 </li>
 </ul>
 <a name="lockStub">
@@ -1868,7 +1872,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>lockStub</h4>
-<pre>private volatile&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockService.BlockingInterface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.343">lockStub</a></pre>
+<pre>private volatile&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockService.BlockingInterface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.345">lockStub</a></pre>
 </li>
 </ul>
 <a name="rpcClient">
@@ -1877,7 +1881,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>rpcClient</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcClient.html" title="interface in org.apache.hadoop.hbase.ipc">RpcClient</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.345">rpcClient</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcClient.html" title="interface in org.apache.hadoop.hbase.ipc">RpcClient</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.347">rpcClient</a></pre>
 </li>
 </ul>
 <a name="rpcRetryingCallerFactory">
@@ -1886,7 +1890,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>rpcRetryingCallerFactory</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCallerFactory.html" title="class in org.apache.hadoop.hbase.client">RpcRetryingCallerFactory</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.347">rpcRetryingCallerFactory</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCallerFactory.html" title="class in org.apache.hadoop.hbase.client">RpcRetryingCallerFactory</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.349">rpcRetryingCallerFactory</a></pre>
 </li>
 </ul>
 <a name="rpcControllerFactory">
@@ -1895,7 +1899,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>rpcControllerFactory</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcControllerFactory.html" title="class in org.apache.hadoop.hbase.ipc">RpcControllerFactory</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.348">rpcControllerFactory</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcControllerFactory.html" title="class in org.apache.hadoop.hbase.ipc">RpcControllerFactory</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.350">rpcControllerFactory</a></pre>
 </li>
 </ul>
 <a name="uncaughtExceptionHandler">
@@ -1904,7 +1908,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>uncaughtExceptionHandler</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.UncaughtExceptionHandler.html?is-external=true" title="class or interface in java.lang">Thread.UncaughtExceptionHandler</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.350">uncaughtExceptionHandler</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.UncaughtExceptionHandler.html?is-external=true" title="class or interface in java.lang">Thread.UncaughtExceptionHandler</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.352">uncaughtExceptionHandler</a></pre>
 </li>
 </ul>
 <a name="infoServer">
@@ -1913,7 +1917,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>infoServer</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.355">infoServer</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.357">infoServer</a></pre>
 </li>
 </ul>
 <a name="pauseMonitor">
@@ -1922,7 +1926,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>pauseMonitor</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/JvmPauseMonitor.html" title="class in org.apache.hadoop.hbase.util">JvmPauseMonitor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.356">pauseMonitor</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/JvmPauseMonitor.html" title="class in org.apache.hadoop.hbase.util">JvmPauseMonitor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.358">pauseMonitor</a></pre>
 </li>
 </ul>
 <a name="REGIONSERVER">
@@ -1931,7 +1935,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>REGIONSERVER</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.359">REGIONSERVER</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.361">REGIONSERVER</a></pre>
 <div class="block">region server process name</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1945,7 +1949,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>metricsRegionServer</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">MetricsRegionServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.361">metricsRegionServer</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">MetricsRegionServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.363">metricsRegionServer</a></pre>
 </li>
 </ul>
 <a name="metricsTable">
@@ -1954,7 +1958,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>metricsTable</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsTable.html" title="class in org.apache.hadoop.hbase.regionserver">MetricsTable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.362">metricsTable</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsTable.html" title="class in org.apache.hadoop.hbase.regionserver">MetricsTable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.364">metricsTable</a></pre>
 </li>
 </ul>
 <a name="spanReceiverHost">
@@ -1963,7 +1967,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>spanReceiverHost</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/trace/SpanReceiverHost.html" title="class in org.apache.hadoop.hbase.trace">SpanReceiverHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.363">spanReceiverHost</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/trace/SpanReceiverHost.html" title="class in org.apache.hadoop.hbase.trace">SpanReceiverHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.365">spanReceiverHost</a></pre>
 </li>
 </ul>
 <a name="choreService">
@@ -1972,7 +1976,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>choreService</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase">ChoreService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.368">choreService</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase">ChoreService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.370">choreService</a></pre>
 <div class="block">ChoreService used to schedule tasks that we want to run periodically</div>
 </li>
 </ul>
@@ -1982,7 +1986,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>compactionChecker</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.373">compactionChecker</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.375">compactionChecker</a></pre>
 </li>
 </ul>
 <a name="periodicFlusher">
@@ -1991,7 +1995,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>periodicFlusher</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.378">periodicFlusher</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.380">periodicFlusher</a></pre>
 </li>
 </ul>
 <a name="walFactory">
@@ -2000,7 +2004,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>walFactory</h4>
-<pre>protected volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.html" title="class in org.apache.hadoop.hbase.wal">WALFactory</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.380">walFactory</a></pre>
+<pre>protected volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.html" title="class in org.apache.hadoop.hbase.wal">WALFactory</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.382">walFactory</a></pre>
 </li>
 </ul>
 <a name="walRoller">
@@ -2009,7 +2013,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>walRoller</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/LogRoller.html" title="class in org.apache.hadoop.hbase.regionserver">LogRoller</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.384">walRoller</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/LogRoller.html" title="class in org.apache.hadoop.hbase.regionserver">LogRoller</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.386">walRoller</a></pre>
 </li>
 </ul>
 <a name="procedureResultReporter">
@@ -2018,7 +2022,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>procedureResultReporter</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RemoteProcedureResultReporter.html" title="class in org.apache.hadoop.hbase.regionserver">RemoteProcedureResultReporter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.387">procedureResultReporter</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RemoteProcedureResultReporter.html" title="class in org.apache.hadoop.hbase.regionserver">RemoteProcedureResultReporter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.389">procedureResultReporter</a></pre>
 </li>
 </ul>
 <a name="online">
@@ -2027,7 +2031,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>online</h4>
-<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.390">online</a></pre>
+<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.392">online</a></pre>
 </li>
 </ul>
 <a name="zooKeeper">
@@ -2036,7 +2040,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>zooKeeper</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.393">zooKeeper</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.395">zooKeeper</a></pre>
 </li>
 </ul>
 <a name="masterAddressTracker">
@@ -2045,7 +2049,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>masterAddressTracker</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">MasterAddressTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.396">masterAddressTracker</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">MasterAddressTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.398">masterAddressTracker</a></pre>
 </li>
 </ul>
 <a name="clusterStatusTracker">
@@ -2054,7 +2058,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>clusterStatusTracker</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">ClusterStatusTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.399">clusterStatusTracker</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">ClusterStatusTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.401">clusterStatusTracker</a></pre>
 </li>
 </ul>
 <a name="splitLogWorker">
@@ -2063,7 +2067,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>splitLogWorker</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.html" title="class in org.apache.hadoop.hbase.regionserver">SplitLogWorker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.402">splitLogWorker</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.html" title="class in org.apache.hadoop.hbase.regionserver">SplitLogWorker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.404">splitLogWorker</a></pre>
 </li>
 </ul>
 <a name="sleeper">
@@ -2072,7 +2076,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>sleeper</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Sleeper.html" title="class in org.apache.hadoop.hbase.util">Sleeper</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.405">sleeper</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Sleeper.html" title="class in org.apache.hadoop.hbase.util">Sleeper</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.407">sleeper</a></pre>
 </li>
 </ul>
 <a name="operationTimeout">
@@ -2081,7 +2085,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>operationTimeout</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.407">operationTimeout</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.409">operationTimeout</a></pre>
 </li>
 </ul>
 <a name="shortOperationTimeout">
@@ -2090,7 +2094,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>shortOperationTimeout</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.408">shortOperationTimeout</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.410">shortOperationTimeout</a></pre>
 </li>
 </ul>
 <a name="regionServerAccounting">
@@ -2099,7 +2103,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>regionServerAccounting</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerAccounting</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.410">regionServerAccounting</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerAccounting</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.412">regionServerAccounting</a></pre>
 </li>
 </ul>
 <a name="cacheConfig">
@@ -2108,7 +2112,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheConfig</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.413">cacheConfig</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.415">cacheConfig</a></pre>
 </li>
 </ul>
 <a name="mobCacheConfig">
@@ -2117,7 +2121,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>mobCacheConfig</h4>
-<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mob/MobCacheConfig.html" title="class in org.apache.hadoop.hbase.mob">MobCacheConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.415">mobCacheConfig</a></pre>
+<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mob/MobCacheConfig.html" title="class in org.apache.hadoop.hbase.mob">MobCacheConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.417">mobCacheConfig</a></pre>
 </li>
 </ul>
 <a name="healthCheckChore">
@@ -2126,7 +2130,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>healthCheckChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HealthCheckChore.html" title="class in org.apache.hadoop.hbase">HealthCheckChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.418">healthCheckChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HealthCheckChore.html" title="class in org.apache.hadoop.hbase">HealthCheckChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.420">healthCheckChore</a></pre>
 <div class="block">The health check chore.</div>
 </li>
 </ul>
@@ -2136,7 +2140,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>nonceManagerChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.421">nonceManagerChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.423">nonceManagerChore</a></pre>
 <div class="block">The nonce manager chore.</div>
 </li>
 </ul>
@@ -2146,7 +2150,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>coprocessorServiceHandlers</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,com.google.protobuf.Service&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.423">coprocessorServiceHandlers</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,com.google.protobuf.Service&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.425">coprocessorServiceHandlers</a></pre>
 </li>
 </ul>
 <a name="serverName">
@@ -2155,7 +2159,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>serverName</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">S

<TRUNCATED>

[07/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html
index f118c08..cd9722f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html
@@ -206,140 +206,175 @@
 <span class="sourceLineNo">198</span>   */<a name="line.198"></a>
 <span class="sourceLineNo">199</span>  public static int validateBlockAddition(Cacheable existing, Cacheable newBlock,<a name="line.199"></a>
 <span class="sourceLineNo">200</span>                                          BlockCacheKey cacheKey) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    int comparison = compareCacheBlock(existing, newBlock, true);<a name="line.201"></a>
+<span class="sourceLineNo">201</span>    int comparison = compareCacheBlock(existing, newBlock, false);<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    if (comparison != 0) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      LOG.warn("Cached block contents differ, trying to just compare the block contents " +<a name="line.203"></a>
-<span class="sourceLineNo">204</span>          "without the next block. CacheKey: " + cacheKey);<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>      // compare the contents, if they are not equal, we are in big trouble<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      int comparisonWithoutNextBlockMetadata = compareCacheBlock(existing, newBlock, false);<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>      if (comparisonWithoutNextBlockMetadata != 0) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        throw new RuntimeException("Cached block contents differ, which should not have happened."<a name="line.210"></a>
-<span class="sourceLineNo">211</span>            + "cacheKey:" + cacheKey);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    }<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    return comparison;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>  /**<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * Use one of these to keep a running account of cached blocks by file.  Throw it away when done.<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * This is different than metrics in that it is stats on current state of a cache.<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   * See getLoadedCachedBlocksByFile<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   */<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  @JsonIgnoreProperties({"cachedBlockStatsByFile"})<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  public static class CachedBlocksByFile {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    private int count;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    private int dataBlockCount;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    private long size;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    private long dataSize;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    private final long now = System.nanoTime();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    /**<a name="line.229"></a>
-<span class="sourceLineNo">230</span>     * How many blocks to look at before we give up.<a name="line.230"></a>
-<span class="sourceLineNo">231</span>     * There could be many millions of blocks. We don't want the<a name="line.231"></a>
-<span class="sourceLineNo">232</span>     * ui to freeze while we run through 1B blocks... users will<a name="line.232"></a>
-<span class="sourceLineNo">233</span>     * think hbase dead. UI displays warning in red when stats<a name="line.233"></a>
-<span class="sourceLineNo">234</span>     * are incomplete.<a name="line.234"></a>
-<span class="sourceLineNo">235</span>     */<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    private final int max;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    public static final int DEFAULT_MAX = 1000000;<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    CachedBlocksByFile() {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      this(null);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    }<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>    CachedBlocksByFile(final Configuration c) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      this.max = c == null? DEFAULT_MAX: c.getInt("hbase.ui.blockcache.by.file.max", DEFAULT_MAX);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span>     * Map by filename. use concurent utils because we want our Map and contained blocks sorted.<a name="line.248"></a>
-<span class="sourceLineNo">249</span>     */<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    private NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; cachedBlockByFile = new ConcurrentSkipListMap&lt;&gt;();<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    FastLongHistogram hist = new FastLongHistogram();<a name="line.251"></a>
-<span class="sourceLineNo">252</span><a name="line.252"></a>
-<span class="sourceLineNo">253</span>    /**<a name="line.253"></a>
-<span class="sourceLineNo">254</span>     * @param cb<a name="line.254"></a>
-<span class="sourceLineNo">255</span>     * @return True if full.... if we won't be adding any more.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>     */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    public boolean update(final CachedBlock cb) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      if (isFull()) return true;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      NavigableSet&lt;CachedBlock&gt; set = this.cachedBlockByFile.get(cb.getFilename());<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      if (set == null) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        set = new ConcurrentSkipListSet&lt;&gt;();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        this.cachedBlockByFile.put(cb.getFilename(), set);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      }<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      set.add(cb);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      this.size += cb.getSize();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      this.count++;<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      BlockType bt = cb.getBlockType();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      if (bt != null &amp;&amp; bt.isData()) {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        this.dataBlockCount++;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        this.dataSize += cb.getSize();<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      }<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      long age = (this.now - cb.getCachedTime())/NANOS_PER_SECOND;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      this.hist.add(age, 1);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      return false;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    /**<a name="line.277"></a>
-<span class="sourceLineNo">278</span>     * @return True if full; i.e. there are more items in the cache but we only loaded up<a name="line.278"></a>
-<span class="sourceLineNo">279</span>     * the maximum set in configuration &lt;code&gt;hbase.ui.blockcache.by.file.max&lt;/code&gt;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>     * (Default: DEFAULT_MAX).<a name="line.280"></a>
-<span class="sourceLineNo">281</span>     */<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    public boolean isFull() {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      return this.count &gt;= this.max;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    public NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; getCachedBlockStatsByFile() {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      return this.cachedBlockByFile;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    /**<a name="line.290"></a>
-<span class="sourceLineNo">291</span>     * @return count of blocks in the cache<a name="line.291"></a>
-<span class="sourceLineNo">292</span>     */<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    public int getCount() {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      return count;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    }<a name="line.295"></a>
-<span class="sourceLineNo">296</span><a name="line.296"></a>
-<span class="sourceLineNo">297</span>    public int getDataCount() {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      return dataBlockCount;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    /**<a name="line.301"></a>
-<span class="sourceLineNo">302</span>     * @return size of blocks in the cache<a name="line.302"></a>
-<span class="sourceLineNo">303</span>     */<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    public long getSize() {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      return size;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
-<span class="sourceLineNo">307</span><a name="line.307"></a>
-<span class="sourceLineNo">308</span>    /**<a name="line.308"></a>
-<span class="sourceLineNo">309</span>     * @return Size of data.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>     */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    public long getDataSize() {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      return dataSize;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>    public AgeSnapshot getAgeInCacheSnapshot() {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      return new AgeSnapshot(this.hist);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>    @Override<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    public String toString() {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      AgeSnapshot snapshot = getAgeInCacheSnapshot();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      return "count=" + count + ", dataBlockCount=" + dataBlockCount + ", size=" + size +<a name="line.322"></a>
-<span class="sourceLineNo">323</span>          ", dataSize=" + getDataSize() +<a name="line.323"></a>
-<span class="sourceLineNo">324</span>          ", mean age=" + snapshot.getMean() +<a name="line.324"></a>
-<span class="sourceLineNo">325</span>          ", min age=" + snapshot.getMin() +<a name="line.325"></a>
-<span class="sourceLineNo">326</span>          ", max age=" + snapshot.getMax() +<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          ", 75th percentile age="   + snapshot.get75thPercentile() +<a name="line.327"></a>
-<span class="sourceLineNo">328</span>          ", 95th percentile age="   + snapshot.get95thPercentile() +<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          ", 98th percentile age="   + snapshot.get98thPercentile() +<a name="line.329"></a>
-<span class="sourceLineNo">330</span>          ", 99th percentile age="   + snapshot.get99thPercentile() +<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          ", 99.9th percentile age=" + snapshot.get99thPercentile();<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>}<a name="line.334"></a>
+<span class="sourceLineNo">203</span>      throw new RuntimeException("Cached block contents differ, which should not have happened."<a name="line.203"></a>
+<span class="sourceLineNo">204</span>                                 + "cacheKey:" + cacheKey);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    if ((existing instanceof HFileBlock) &amp;&amp; (newBlock instanceof HFileBlock)) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      comparison = ((HFileBlock) existing).getNextBlockOnDiskSize()<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          - ((HFileBlock) newBlock).getNextBlockOnDiskSize();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    }<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    return comparison;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>  /**<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   * Because of the region splitting, it's possible that the split key locate in the middle of a<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   * block. So it's possible that both the daughter regions load the same block from their parent<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * HFile. When pread, we don't force the read to read all of the next block header. So when two<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   * threads try to cache the same block, it's possible that one thread read all of the next block<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * header but the other one didn't. if the already cached block hasn't next block header but the<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   * new block to cache has, then we can replace the existing block with the new block for better<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   * performance.(HBASE-20447)<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   * @param blockCache BlockCache to check<a name="line.221"></a>
+<span class="sourceLineNo">222</span>   * @param cacheKey the block cache key<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * @param newBlock the new block which try to put into the block cache.<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @return true means need to replace existing block with new block for the same block cache key.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   *         false means just keep the existing block.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   */<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public static boolean shouldReplaceExistingCacheBlock(BlockCache blockCache,<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      BlockCacheKey cacheKey, Cacheable newBlock) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    Cacheable existingBlock = blockCache.getBlock(cacheKey, false, false, false);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    try {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      int comparison = BlockCacheUtil.validateBlockAddition(existingBlock, newBlock, cacheKey);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      if (comparison &lt; 0) {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        LOG.warn("Cached block contents differ by nextBlockOnDiskSize, the new block has "<a name="line.233"></a>
+<span class="sourceLineNo">234</span>            + "nextBlockOnDiskSize set. Caching new block.");<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        return true;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      } else if (comparison &gt; 0) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        LOG.warn("Cached block contents differ by nextBlockOnDiskSize, the existing block has "<a name="line.237"></a>
+<span class="sourceLineNo">238</span>            + "nextBlockOnDiskSize set, Keeping cached block.");<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        return false;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      } else {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        LOG.warn("Caching an already cached block: {}. This is harmless and can happen in rare "<a name="line.241"></a>
+<span class="sourceLineNo">242</span>            + "cases (see HBASE-8547)",<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          cacheKey);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        return false;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    } finally {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      // return the block since we need to decrement the count<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      blockCache.returnBlock(cacheKey, existingBlock);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
+<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
+<span class="sourceLineNo">251</span><a name="line.251"></a>
+<span class="sourceLineNo">252</span>  /**<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   * Use one of these to keep a running account of cached blocks by file.  Throw it away when done.<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * This is different than metrics in that it is stats on current state of a cache.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * See getLoadedCachedBlocksByFile<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  @JsonIgnoreProperties({"cachedBlockStatsByFile"})<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public static class CachedBlocksByFile {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    private int count;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    private int dataBlockCount;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    private long size;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    private long dataSize;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    private final long now = System.nanoTime();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    /**<a name="line.264"></a>
+<span class="sourceLineNo">265</span>     * How many blocks to look at before we give up.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>     * There could be many millions of blocks. We don't want the<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * ui to freeze while we run through 1B blocks... users will<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     * think hbase dead. UI displays warning in red when stats<a name="line.268"></a>
+<span class="sourceLineNo">269</span>     * are incomplete.<a name="line.269"></a>
+<span class="sourceLineNo">270</span>     */<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    private final int max;<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    public static final int DEFAULT_MAX = 1000000;<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>    CachedBlocksByFile() {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      this(null);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    CachedBlocksByFile(final Configuration c) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      this.max = c == null? DEFAULT_MAX: c.getInt("hbase.ui.blockcache.by.file.max", DEFAULT_MAX);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>    /**<a name="line.282"></a>
+<span class="sourceLineNo">283</span>     * Map by filename. use concurent utils because we want our Map and contained blocks sorted.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>     */<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    private NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; cachedBlockByFile = new ConcurrentSkipListMap&lt;&gt;();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    FastLongHistogram hist = new FastLongHistogram();<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>    /**<a name="line.288"></a>
+<span class="sourceLineNo">289</span>     * @param cb<a name="line.289"></a>
+<span class="sourceLineNo">290</span>     * @return True if full.... if we won't be adding any more.<a name="line.290"></a>
+<span class="sourceLineNo">291</span>     */<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    public boolean update(final CachedBlock cb) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      if (isFull()) return true;<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      NavigableSet&lt;CachedBlock&gt; set = this.cachedBlockByFile.get(cb.getFilename());<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      if (set == null) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        set = new ConcurrentSkipListSet&lt;&gt;();<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        this.cachedBlockByFile.put(cb.getFilename(), set);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      }<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      set.add(cb);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      this.size += cb.getSize();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      this.count++;<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      BlockType bt = cb.getBlockType();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      if (bt != null &amp;&amp; bt.isData()) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        this.dataBlockCount++;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        this.dataSize += cb.getSize();<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      long age = (this.now - cb.getCachedTime())/NANOS_PER_SECOND;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      this.hist.add(age, 1);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      return false;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
+<span class="sourceLineNo">311</span><a name="line.311"></a>
+<span class="sourceLineNo">312</span>    /**<a name="line.312"></a>
+<span class="sourceLineNo">313</span>     * @return True if full; i.e. there are more items in the cache but we only loaded up<a name="line.313"></a>
+<span class="sourceLineNo">314</span>     * the maximum set in configuration &lt;code&gt;hbase.ui.blockcache.by.file.max&lt;/code&gt;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>     * (Default: DEFAULT_MAX).<a name="line.315"></a>
+<span class="sourceLineNo">316</span>     */<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    public boolean isFull() {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      return this.count &gt;= this.max;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>    public NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; getCachedBlockStatsByFile() {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      return this.cachedBlockByFile;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>    /**<a name="line.325"></a>
+<span class="sourceLineNo">326</span>     * @return count of blocks in the cache<a name="line.326"></a>
+<span class="sourceLineNo">327</span>     */<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    public int getCount() {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      return count;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>    public int getDataCount() {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      return dataBlockCount;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>    /**<a name="line.336"></a>
+<span class="sourceLineNo">337</span>     * @return size of blocks in the cache<a name="line.337"></a>
+<span class="sourceLineNo">338</span>     */<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    public long getSize() {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return size;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
+<span class="sourceLineNo">342</span><a name="line.342"></a>
+<span class="sourceLineNo">343</span>    /**<a name="line.343"></a>
+<span class="sourceLineNo">344</span>     * @return Size of data.<a name="line.344"></a>
+<span class="sourceLineNo">345</span>     */<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    public long getDataSize() {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      return dataSize;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>    public AgeSnapshot getAgeInCacheSnapshot() {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      return new AgeSnapshot(this.hist);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    public String toString() {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      AgeSnapshot snapshot = getAgeInCacheSnapshot();<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      return "count=" + count + ", dataBlockCount=" + dataBlockCount + ", size=" + size +<a name="line.357"></a>
+<span class="sourceLineNo">358</span>          ", dataSize=" + getDataSize() +<a name="line.358"></a>
+<span class="sourceLineNo">359</span>          ", mean age=" + snapshot.getMean() +<a name="line.359"></a>
+<span class="sourceLineNo">360</span>          ", min age=" + snapshot.getMin() +<a name="line.360"></a>
+<span class="sourceLineNo">361</span>          ", max age=" + snapshot.getMax() +<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          ", 75th percentile age="   + snapshot.get75thPercentile() +<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          ", 95th percentile age="   + snapshot.get95thPercentile() +<a name="line.363"></a>
+<span class="sourceLineNo">364</span>          ", 98th percentile age="   + snapshot.get98thPercentile() +<a name="line.364"></a>
+<span class="sourceLineNo">365</span>          ", 99th percentile age="   + snapshot.get99thPercentile() +<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          ", 99.9th percentile age=" + snapshot.get99thPercentile();<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    }<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>}<a name="line.369"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html
index f118c08..cd9722f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html
@@ -206,140 +206,175 @@
 <span class="sourceLineNo">198</span>   */<a name="line.198"></a>
 <span class="sourceLineNo">199</span>  public static int validateBlockAddition(Cacheable existing, Cacheable newBlock,<a name="line.199"></a>
 <span class="sourceLineNo">200</span>                                          BlockCacheKey cacheKey) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    int comparison = compareCacheBlock(existing, newBlock, true);<a name="line.201"></a>
+<span class="sourceLineNo">201</span>    int comparison = compareCacheBlock(existing, newBlock, false);<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    if (comparison != 0) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      LOG.warn("Cached block contents differ, trying to just compare the block contents " +<a name="line.203"></a>
-<span class="sourceLineNo">204</span>          "without the next block. CacheKey: " + cacheKey);<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>      // compare the contents, if they are not equal, we are in big trouble<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      int comparisonWithoutNextBlockMetadata = compareCacheBlock(existing, newBlock, false);<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>      if (comparisonWithoutNextBlockMetadata != 0) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        throw new RuntimeException("Cached block contents differ, which should not have happened."<a name="line.210"></a>
-<span class="sourceLineNo">211</span>            + "cacheKey:" + cacheKey);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    }<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    return comparison;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>  /**<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * Use one of these to keep a running account of cached blocks by file.  Throw it away when done.<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * This is different than metrics in that it is stats on current state of a cache.<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   * See getLoadedCachedBlocksByFile<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   */<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  @JsonIgnoreProperties({"cachedBlockStatsByFile"})<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  public static class CachedBlocksByFile {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    private int count;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    private int dataBlockCount;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    private long size;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    private long dataSize;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    private final long now = System.nanoTime();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    /**<a name="line.229"></a>
-<span class="sourceLineNo">230</span>     * How many blocks to look at before we give up.<a name="line.230"></a>
-<span class="sourceLineNo">231</span>     * There could be many millions of blocks. We don't want the<a name="line.231"></a>
-<span class="sourceLineNo">232</span>     * ui to freeze while we run through 1B blocks... users will<a name="line.232"></a>
-<span class="sourceLineNo">233</span>     * think hbase dead. UI displays warning in red when stats<a name="line.233"></a>
-<span class="sourceLineNo">234</span>     * are incomplete.<a name="line.234"></a>
-<span class="sourceLineNo">235</span>     */<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    private final int max;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    public static final int DEFAULT_MAX = 1000000;<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    CachedBlocksByFile() {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      this(null);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    }<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>    CachedBlocksByFile(final Configuration c) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      this.max = c == null? DEFAULT_MAX: c.getInt("hbase.ui.blockcache.by.file.max", DEFAULT_MAX);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span>     * Map by filename. use concurent utils because we want our Map and contained blocks sorted.<a name="line.248"></a>
-<span class="sourceLineNo">249</span>     */<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    private NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; cachedBlockByFile = new ConcurrentSkipListMap&lt;&gt;();<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    FastLongHistogram hist = new FastLongHistogram();<a name="line.251"></a>
-<span class="sourceLineNo">252</span><a name="line.252"></a>
-<span class="sourceLineNo">253</span>    /**<a name="line.253"></a>
-<span class="sourceLineNo">254</span>     * @param cb<a name="line.254"></a>
-<span class="sourceLineNo">255</span>     * @return True if full.... if we won't be adding any more.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>     */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    public boolean update(final CachedBlock cb) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      if (isFull()) return true;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      NavigableSet&lt;CachedBlock&gt; set = this.cachedBlockByFile.get(cb.getFilename());<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      if (set == null) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        set = new ConcurrentSkipListSet&lt;&gt;();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        this.cachedBlockByFile.put(cb.getFilename(), set);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      }<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      set.add(cb);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      this.size += cb.getSize();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      this.count++;<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      BlockType bt = cb.getBlockType();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      if (bt != null &amp;&amp; bt.isData()) {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        this.dataBlockCount++;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        this.dataSize += cb.getSize();<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      }<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      long age = (this.now - cb.getCachedTime())/NANOS_PER_SECOND;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      this.hist.add(age, 1);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      return false;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    /**<a name="line.277"></a>
-<span class="sourceLineNo">278</span>     * @return True if full; i.e. there are more items in the cache but we only loaded up<a name="line.278"></a>
-<span class="sourceLineNo">279</span>     * the maximum set in configuration &lt;code&gt;hbase.ui.blockcache.by.file.max&lt;/code&gt;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>     * (Default: DEFAULT_MAX).<a name="line.280"></a>
-<span class="sourceLineNo">281</span>     */<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    public boolean isFull() {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      return this.count &gt;= this.max;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    public NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; getCachedBlockStatsByFile() {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      return this.cachedBlockByFile;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    /**<a name="line.290"></a>
-<span class="sourceLineNo">291</span>     * @return count of blocks in the cache<a name="line.291"></a>
-<span class="sourceLineNo">292</span>     */<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    public int getCount() {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      return count;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    }<a name="line.295"></a>
-<span class="sourceLineNo">296</span><a name="line.296"></a>
-<span class="sourceLineNo">297</span>    public int getDataCount() {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      return dataBlockCount;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    /**<a name="line.301"></a>
-<span class="sourceLineNo">302</span>     * @return size of blocks in the cache<a name="line.302"></a>
-<span class="sourceLineNo">303</span>     */<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    public long getSize() {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      return size;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
-<span class="sourceLineNo">307</span><a name="line.307"></a>
-<span class="sourceLineNo">308</span>    /**<a name="line.308"></a>
-<span class="sourceLineNo">309</span>     * @return Size of data.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>     */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    public long getDataSize() {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      return dataSize;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>    public AgeSnapshot getAgeInCacheSnapshot() {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      return new AgeSnapshot(this.hist);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>    @Override<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    public String toString() {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      AgeSnapshot snapshot = getAgeInCacheSnapshot();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      return "count=" + count + ", dataBlockCount=" + dataBlockCount + ", size=" + size +<a name="line.322"></a>
-<span class="sourceLineNo">323</span>          ", dataSize=" + getDataSize() +<a name="line.323"></a>
-<span class="sourceLineNo">324</span>          ", mean age=" + snapshot.getMean() +<a name="line.324"></a>
-<span class="sourceLineNo">325</span>          ", min age=" + snapshot.getMin() +<a name="line.325"></a>
-<span class="sourceLineNo">326</span>          ", max age=" + snapshot.getMax() +<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          ", 75th percentile age="   + snapshot.get75thPercentile() +<a name="line.327"></a>
-<span class="sourceLineNo">328</span>          ", 95th percentile age="   + snapshot.get95thPercentile() +<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          ", 98th percentile age="   + snapshot.get98thPercentile() +<a name="line.329"></a>
-<span class="sourceLineNo">330</span>          ", 99th percentile age="   + snapshot.get99thPercentile() +<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          ", 99.9th percentile age=" + snapshot.get99thPercentile();<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>}<a name="line.334"></a>
+<span class="sourceLineNo">203</span>      throw new RuntimeException("Cached block contents differ, which should not have happened."<a name="line.203"></a>
+<span class="sourceLineNo">204</span>                                 + "cacheKey:" + cacheKey);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    if ((existing instanceof HFileBlock) &amp;&amp; (newBlock instanceof HFileBlock)) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      comparison = ((HFileBlock) existing).getNextBlockOnDiskSize()<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          - ((HFileBlock) newBlock).getNextBlockOnDiskSize();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    }<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    return comparison;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>  /**<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   * Because of the region splitting, it's possible that the split key locate in the middle of a<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   * block. So it's possible that both the daughter regions load the same block from their parent<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * HFile. When pread, we don't force the read to read all of the next block header. So when two<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   * threads try to cache the same block, it's possible that one thread read all of the next block<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * header but the other one didn't. if the already cached block hasn't next block header but the<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   * new block to cache has, then we can replace the existing block with the new block for better<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   * performance.(HBASE-20447)<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   * @param blockCache BlockCache to check<a name="line.221"></a>
+<span class="sourceLineNo">222</span>   * @param cacheKey the block cache key<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * @param newBlock the new block which try to put into the block cache.<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @return true means need to replace existing block with new block for the same block cache key.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   *         false means just keep the existing block.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   */<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public static boolean shouldReplaceExistingCacheBlock(BlockCache blockCache,<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      BlockCacheKey cacheKey, Cacheable newBlock) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    Cacheable existingBlock = blockCache.getBlock(cacheKey, false, false, false);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    try {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      int comparison = BlockCacheUtil.validateBlockAddition(existingBlock, newBlock, cacheKey);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      if (comparison &lt; 0) {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        LOG.warn("Cached block contents differ by nextBlockOnDiskSize, the new block has "<a name="line.233"></a>
+<span class="sourceLineNo">234</span>            + "nextBlockOnDiskSize set. Caching new block.");<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        return true;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      } else if (comparison &gt; 0) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        LOG.warn("Cached block contents differ by nextBlockOnDiskSize, the existing block has "<a name="line.237"></a>
+<span class="sourceLineNo">238</span>            + "nextBlockOnDiskSize set, Keeping cached block.");<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        return false;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      } else {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        LOG.warn("Caching an already cached block: {}. This is harmless and can happen in rare "<a name="line.241"></a>
+<span class="sourceLineNo">242</span>            + "cases (see HBASE-8547)",<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          cacheKey);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        return false;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    } finally {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      // return the block since we need to decrement the count<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      blockCache.returnBlock(cacheKey, existingBlock);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
+<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
+<span class="sourceLineNo">251</span><a name="line.251"></a>
+<span class="sourceLineNo">252</span>  /**<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   * Use one of these to keep a running account of cached blocks by file.  Throw it away when done.<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * This is different than metrics in that it is stats on current state of a cache.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * See getLoadedCachedBlocksByFile<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  @JsonIgnoreProperties({"cachedBlockStatsByFile"})<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public static class CachedBlocksByFile {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    private int count;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    private int dataBlockCount;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    private long size;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    private long dataSize;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    private final long now = System.nanoTime();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    /**<a name="line.264"></a>
+<span class="sourceLineNo">265</span>     * How many blocks to look at before we give up.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>     * There could be many millions of blocks. We don't want the<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * ui to freeze while we run through 1B blocks... users will<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     * think hbase dead. UI displays warning in red when stats<a name="line.268"></a>
+<span class="sourceLineNo">269</span>     * are incomplete.<a name="line.269"></a>
+<span class="sourceLineNo">270</span>     */<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    private final int max;<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    public static final int DEFAULT_MAX = 1000000;<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>    CachedBlocksByFile() {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      this(null);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    CachedBlocksByFile(final Configuration c) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      this.max = c == null? DEFAULT_MAX: c.getInt("hbase.ui.blockcache.by.file.max", DEFAULT_MAX);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>    /**<a name="line.282"></a>
+<span class="sourceLineNo">283</span>     * Map by filename. use concurent utils because we want our Map and contained blocks sorted.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>     */<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    private NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; cachedBlockByFile = new ConcurrentSkipListMap&lt;&gt;();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    FastLongHistogram hist = new FastLongHistogram();<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>    /**<a name="line.288"></a>
+<span class="sourceLineNo">289</span>     * @param cb<a name="line.289"></a>
+<span class="sourceLineNo">290</span>     * @return True if full.... if we won't be adding any more.<a name="line.290"></a>
+<span class="sourceLineNo">291</span>     */<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    public boolean update(final CachedBlock cb) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      if (isFull()) return true;<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      NavigableSet&lt;CachedBlock&gt; set = this.cachedBlockByFile.get(cb.getFilename());<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      if (set == null) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        set = new ConcurrentSkipListSet&lt;&gt;();<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        this.cachedBlockByFile.put(cb.getFilename(), set);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      }<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      set.add(cb);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      this.size += cb.getSize();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      this.count++;<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      BlockType bt = cb.getBlockType();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      if (bt != null &amp;&amp; bt.isData()) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        this.dataBlockCount++;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        this.dataSize += cb.getSize();<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      long age = (this.now - cb.getCachedTime())/NANOS_PER_SECOND;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      this.hist.add(age, 1);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      return false;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
+<span class="sourceLineNo">311</span><a name="line.311"></a>
+<span class="sourceLineNo">312</span>    /**<a name="line.312"></a>
+<span class="sourceLineNo">313</span>     * @return True if full; i.e. there are more items in the cache but we only loaded up<a name="line.313"></a>
+<span class="sourceLineNo">314</span>     * the maximum set in configuration &lt;code&gt;hbase.ui.blockcache.by.file.max&lt;/code&gt;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>     * (Default: DEFAULT_MAX).<a name="line.315"></a>
+<span class="sourceLineNo">316</span>     */<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    public boolean isFull() {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      return this.count &gt;= this.max;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>    public NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; getCachedBlockStatsByFile() {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      return this.cachedBlockByFile;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>    /**<a name="line.325"></a>
+<span class="sourceLineNo">326</span>     * @return count of blocks in the cache<a name="line.326"></a>
+<span class="sourceLineNo">327</span>     */<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    public int getCount() {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      return count;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>    public int getDataCount() {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      return dataBlockCount;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>    /**<a name="line.336"></a>
+<span class="sourceLineNo">337</span>     * @return size of blocks in the cache<a name="line.337"></a>
+<span class="sourceLineNo">338</span>     */<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    public long getSize() {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return size;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
+<span class="sourceLineNo">342</span><a name="line.342"></a>
+<span class="sourceLineNo">343</span>    /**<a name="line.343"></a>
+<span class="sourceLineNo">344</span>     * @return Size of data.<a name="line.344"></a>
+<span class="sourceLineNo">345</span>     */<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    public long getDataSize() {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      return dataSize;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>    public AgeSnapshot getAgeInCacheSnapshot() {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      return new AgeSnapshot(this.hist);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    public String toString() {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      AgeSnapshot snapshot = getAgeInCacheSnapshot();<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      return "count=" + count + ", dataBlockCount=" + dataBlockCount + ", size=" + size +<a name="line.357"></a>
+<span class="sourceLineNo">358</span>          ", dataSize=" + getDataSize() +<a name="line.358"></a>
+<span class="sourceLineNo">359</span>          ", mean age=" + snapshot.getMean() +<a name="line.359"></a>
+<span class="sourceLineNo">360</span>          ", min age=" + snapshot.getMin() +<a name="line.360"></a>
+<span class="sourceLineNo">361</span>          ", max age=" + snapshot.getMax() +<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          ", 75th percentile age="   + snapshot.get75thPercentile() +<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          ", 95th percentile age="   + snapshot.get95thPercentile() +<a name="line.363"></a>
+<span class="sourceLineNo">364</span>          ", 98th percentile age="   + snapshot.get98thPercentile() +<a name="line.364"></a>
+<span class="sourceLineNo">365</span>          ", 99th percentile age="   + snapshot.get99thPercentile() +<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          ", 99.9th percentile age=" + snapshot.get99thPercentile();<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    }<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>}<a name="line.369"></a>
 
 
 


[02/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html
index 67f4551..017124c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html
@@ -387,817 +387,804 @@
 <span class="sourceLineNo">379</span>    }<a name="line.379"></a>
 <span class="sourceLineNo">380</span><a name="line.380"></a>
 <span class="sourceLineNo">381</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    if (cb != null) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      int comparison = BlockCacheUtil.validateBlockAddition(cb.getBuffer(), buf, cacheKey);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      if (comparison != 0) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        if (comparison &lt; 0) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          LOG.warn("Cached block contents differ by nextBlockOnDiskSize. Keeping cached block.");<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          return;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        } else {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          LOG.warn("Cached block contents differ by nextBlockOnDiskSize. Caching new block.");<a name="line.389"></a>
-<span class="sourceLineNo">390</span>        }<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      } else {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        String msg = "Cached an already cached block: " + cacheKey + " cb:" + cb.getCacheKey();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        msg += ". This is harmless and can happen in rare cases (see HBASE-8547)";<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        LOG.debug(msg);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>        return;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    long currentSize = size.get();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    long currentAcceptableSize = acceptableSize();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    long hardLimitSize = (long) (hardCapacityLimitFactor * currentAcceptableSize);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    if (currentSize &gt;= hardLimitSize) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      stats.failInsert();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      if (LOG.isTraceEnabled()) {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        LOG.trace("LruBlockCache current size " + StringUtils.byteDesc(currentSize)<a name="line.404"></a>
-<span class="sourceLineNo">405</span>          + " has exceeded acceptable size " + StringUtils.byteDesc(currentAcceptableSize) + "."<a name="line.405"></a>
-<span class="sourceLineNo">406</span>          + " The hard limit size is " + StringUtils.byteDesc(hardLimitSize)<a name="line.406"></a>
-<span class="sourceLineNo">407</span>          + ", failed to put cacheKey:" + cacheKey + " into LruBlockCache.");<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      }<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      if (!evictionInProgress) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        runEviction();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      }<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      return;<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    cb = new LruCachedBlock(cacheKey, buf, count.incrementAndGet(), inMemory);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    long newSize = updateSizeMetrics(cb, false);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    map.put(cacheKey, cb);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    long val = elements.incrementAndGet();<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    if (buf.getBlockType().isData()) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>       dataBlockElements.increment();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    if (LOG.isTraceEnabled()) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      long size = map.size();<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      assertCounterSanity(size, val);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    if (newSize &gt; currentAcceptableSize &amp;&amp; !evictionInProgress) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      runEviction();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>  }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>  /**<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * Sanity-checking for parity between actual block cache content and metrics.<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   * Intended only for use with TRACE level logging and -ea JVM.<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   */<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  private static void assertCounterSanity(long mapSize, long counterVal) {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if (counterVal &lt; 0) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      LOG.trace("counterVal overflow. Assertions unreliable. counterVal=" + counterVal +<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        ", mapSize=" + mapSize);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      return;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    if (mapSize &lt; Integer.MAX_VALUE) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      double pct_diff = Math.abs((((double) counterVal) / ((double) mapSize)) - 1.);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      if (pct_diff &gt; 0.05) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        LOG.trace("delta between reported and actual size &gt; 5%. counterVal=" + counterVal +<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          ", mapSize=" + mapSize);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>  /**<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * Cache the block with the specified name and buffer.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * &lt;p&gt;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   *<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * @param cacheKey block's cache key<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @param buf      block buffer<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   */<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  @Override<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  public void cacheBlock(BlockCacheKey cacheKey, Cacheable buf) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    cacheBlock(cacheKey, buf, false);<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  }<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>  /**<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * Helper function that updates the local size counter and also updates any<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * per-cf or per-blocktype metrics it can discern from given<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * {@link LruCachedBlock}<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  private long updateSizeMetrics(LruCachedBlock cb, boolean evict) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    long heapsize = cb.heapSize();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    BlockType bt = cb.getBuffer().getBlockType();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    if (evict) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      heapsize *= -1;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    if (bt != null &amp;&amp; bt.isData()) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>       dataBlockSize.add(heapsize);<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    return size.addAndGet(heapsize);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  /**<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * Get the buffer of the block with the specified name.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   *<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @param cacheKey           block's cache key<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * @param caching            true if the caller caches blocks on cache misses<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @param repeat             Whether this is a repeat lookup for the same block<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   *                           (used to avoid double counting cache misses when doing double-check<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   *                           locking)<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @param updateCacheMetrics Whether to update cache metrics or not<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   *<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @return buffer of specified cache key, or null if not in cache<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  @Override<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  public Cacheable getBlock(BlockCacheKey cacheKey, boolean caching, boolean repeat,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      boolean updateCacheMetrics) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    if (cb == null) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      if (!repeat &amp;&amp; updateCacheMetrics) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        stats.miss(caching, cacheKey.isPrimary(), cacheKey.getBlockType());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      }<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      // If there is another block cache then try and read there.<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      // However if this is a retry ( second time in double checked locking )<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      // And it's already a miss then the l2 will also be a miss.<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      if (victimHandler != null &amp;&amp; !repeat) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>        Cacheable result = victimHandler.getBlock(cacheKey, caching, repeat, updateCacheMetrics);<a name="line.502"></a>
-<span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span>        // Promote this to L1.<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        if (result != null &amp;&amp; caching) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>          if (result instanceof HFileBlock &amp;&amp; ((HFileBlock) result).usesSharedMemory()) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>            result = ((HFileBlock) result).deepClone();<a name="line.507"></a>
-<span class="sourceLineNo">508</span>          }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>          cacheBlock(cacheKey, result, /* inMemory = */ false);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        return result;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      }<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      return null;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    if (updateCacheMetrics) stats.hit(caching, cacheKey.isPrimary(), cacheKey.getBlockType());<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    cb.access(count.incrementAndGet());<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    return cb.getBuffer();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>  /**<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * Whether the cache contains block with specified cacheKey<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   *<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @return true if contains the block<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   */<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  public boolean containsBlock(BlockCacheKey cacheKey) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    return map.containsKey(cacheKey);<a name="line.526"></a>
-<span class="sourceLineNo">527</span>  }<a name="line.527"></a>
-<span class="sourceLineNo">528</span><a name="line.528"></a>
-<span class="sourceLineNo">529</span>  @Override<a name="line.529"></a>
-<span class="sourceLineNo">530</span>  public boolean evictBlock(BlockCacheKey cacheKey) {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    return cb != null &amp;&amp; evictBlock(cb, false) &gt; 0;<a name="line.532"></a>
-<span class="sourceLineNo">533</span>  }<a name="line.533"></a>
-<span class="sourceLineNo">534</span><a name="line.534"></a>
-<span class="sourceLineNo">535</span>  /**<a name="line.535"></a>
-<span class="sourceLineNo">536</span>   * Evicts all blocks for a specific HFile. This is an<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * expensive operation implemented as a linear-time search through all blocks<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * in the cache. Ideally this should be a search in a log-access-time map.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   *<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * &lt;p&gt;<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   * This is used for evict-on-close to remove all blocks of a specific HFile.<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   *<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * @return the number of blocks evicted<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   */<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  @Override<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  public int evictBlocksByHfileName(String hfileName) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    int numEvicted = 0;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    for (BlockCacheKey key : map.keySet()) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      if (key.getHfileName().equals(hfileName)) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        if (evictBlock(key))<a name="line.550"></a>
-<span class="sourceLineNo">551</span>          ++numEvicted;<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      }<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    }<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    if (victimHandler != null) {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      numEvicted += victimHandler.evictBlocksByHfileName(hfileName);<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    }<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    return numEvicted;<a name="line.557"></a>
-<span class="sourceLineNo">558</span>  }<a name="line.558"></a>
-<span class="sourceLineNo">559</span><a name="line.559"></a>
-<span class="sourceLineNo">560</span>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * Evict the block, and it will be cached by the victim handler if exists &amp;amp;&amp;amp;<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * block may be read again later<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   *<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param evictedByEvictionProcess true if the given block is evicted by<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   *          EvictionThread<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   * @return the heap size of evicted block<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   */<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  protected long evictBlock(LruCachedBlock block, boolean evictedByEvictionProcess) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    boolean found = map.remove(block.getCacheKey()) != null;<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    if (!found) {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      return 0;<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    }<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    updateSizeMetrics(block, true);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    long val = elements.decrementAndGet();<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    if (LOG.isTraceEnabled()) {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      long size = map.size();<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      assertCounterSanity(size, val);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span>    if (block.getBuffer().getBlockType().isData()) {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>       dataBlockElements.decrement();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    if (evictedByEvictionProcess) {<a name="line.582"></a>
-<span class="sourceLineNo">583</span>      // When the eviction of the block happened because of invalidation of HFiles, no need to<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      // update the stats counter.<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      stats.evicted(block.getCachedTime(), block.getCacheKey().isPrimary());<a name="line.585"></a>
-<span class="sourceLineNo">586</span>      if (victimHandler != null) {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>        victimHandler.cacheBlock(block.getCacheKey(), block.getBuffer());<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      }<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    }<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    return block.heapSize();<a name="line.590"></a>
-<span class="sourceLineNo">591</span>  }<a name="line.591"></a>
-<span class="sourceLineNo">592</span><a name="line.592"></a>
-<span class="sourceLineNo">593</span>  /**<a name="line.593"></a>
-<span class="sourceLineNo">594</span>   * Multi-threaded call to run the eviction process.<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   */<a name="line.595"></a>
-<span class="sourceLineNo">596</span>  private void runEviction() {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    if (evictionThread == null) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      evict();<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    } else {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      evictionThread.evict();<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    }<a name="line.601"></a>
-<span class="sourceLineNo">602</span>  }<a name="line.602"></a>
-<span class="sourceLineNo">603</span><a name="line.603"></a>
-<span class="sourceLineNo">604</span>  @VisibleForTesting<a name="line.604"></a>
-<span class="sourceLineNo">605</span>  boolean isEvictionInProgress() {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    return evictionInProgress;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>  }<a name="line.607"></a>
+<span class="sourceLineNo">382</span>    if (cb != null &amp;&amp; !BlockCacheUtil.shouldReplaceExistingCacheBlock(this, cacheKey, buf)) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      return;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    long currentSize = size.get();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    long currentAcceptableSize = acceptableSize();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    long hardLimitSize = (long) (hardCapacityLimitFactor * currentAcceptableSize);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    if (currentSize &gt;= hardLimitSize) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      stats.failInsert();<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      if (LOG.isTraceEnabled()) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        LOG.trace("LruBlockCache current size " + StringUtils.byteDesc(currentSize)<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          + " has exceeded acceptable size " + StringUtils.byteDesc(currentAcceptableSize) + "."<a name="line.392"></a>
+<span class="sourceLineNo">393</span>          + " The hard limit size is " + StringUtils.byteDesc(hardLimitSize)<a name="line.393"></a>
+<span class="sourceLineNo">394</span>          + ", failed to put cacheKey:" + cacheKey + " into LruBlockCache.");<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      }<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      if (!evictionInProgress) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        runEviction();<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      }<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      return;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    cb = new LruCachedBlock(cacheKey, buf, count.incrementAndGet(), inMemory);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    long newSize = updateSizeMetrics(cb, false);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    map.put(cacheKey, cb);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    long val = elements.incrementAndGet();<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    if (buf.getBlockType().isData()) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>       dataBlockElements.increment();<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    if (LOG.isTraceEnabled()) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      long size = map.size();<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      assertCounterSanity(size, val);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    }<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    if (newSize &gt; currentAcceptableSize &amp;&amp; !evictionInProgress) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      runEviction();<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
+<span class="sourceLineNo">415</span>  }<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>  /**<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   * Sanity-checking for parity between actual block cache content and metrics.<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * Intended only for use with TRACE level logging and -ea JVM.<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  private static void assertCounterSanity(long mapSize, long counterVal) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    if (counterVal &lt; 0) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      LOG.trace("counterVal overflow. Assertions unreliable. counterVal=" + counterVal +<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        ", mapSize=" + mapSize);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      return;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    if (mapSize &lt; Integer.MAX_VALUE) {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      double pct_diff = Math.abs((((double) counterVal) / ((double) mapSize)) - 1.);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      if (pct_diff &gt; 0.05) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>        LOG.trace("delta between reported and actual size &gt; 5%. counterVal=" + counterVal +<a name="line.430"></a>
+<span class="sourceLineNo">431</span>          ", mapSize=" + mapSize);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  /**<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * Cache the block with the specified name and buffer.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   * &lt;p&gt;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   *<a name="line.439"></a>
+<span class="sourceLineNo">440</span>   * @param cacheKey block's cache key<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   * @param buf      block buffer<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   */<a name="line.442"></a>
+<span class="sourceLineNo">443</span>  @Override<a name="line.443"></a>
+<span class="sourceLineNo">444</span>  public void cacheBlock(BlockCacheKey cacheKey, Cacheable buf) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    cacheBlock(cacheKey, buf, false);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  /**<a name="line.448"></a>
+<span class="sourceLineNo">449</span>   * Helper function that updates the local size counter and also updates any<a name="line.449"></a>
+<span class="sourceLineNo">450</span>   * per-cf or per-blocktype metrics it can discern from given<a name="line.450"></a>
+<span class="sourceLineNo">451</span>   * {@link LruCachedBlock}<a name="line.451"></a>
+<span class="sourceLineNo">452</span>   */<a name="line.452"></a>
+<span class="sourceLineNo">453</span>  private long updateSizeMetrics(LruCachedBlock cb, boolean evict) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    long heapsize = cb.heapSize();<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    BlockType bt = cb.getBuffer().getBlockType();<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    if (evict) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      heapsize *= -1;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    if (bt != null &amp;&amp; bt.isData()) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>       dataBlockSize.add(heapsize);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    }<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    return size.addAndGet(heapsize);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>  /**<a name="line.465"></a>
+<span class="sourceLineNo">466</span>   * Get the buffer of the block with the specified name.<a name="line.466"></a>
+<span class="sourceLineNo">467</span>   *<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * @param cacheKey           block's cache key<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   * @param caching            true if the caller caches blocks on cache misses<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   * @param repeat             Whether this is a repeat lookup for the same block<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   *                           (used to avoid double counting cache misses when doing double-check<a name="line.471"></a>
+<span class="sourceLineNo">472</span>   *                           locking)<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * @param updateCacheMetrics Whether to update cache metrics or not<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   *<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * @return buffer of specified cache key, or null if not in cache<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   */<a name="line.476"></a>
+<span class="sourceLineNo">477</span>  @Override<a name="line.477"></a>
+<span class="sourceLineNo">478</span>  public Cacheable getBlock(BlockCacheKey cacheKey, boolean caching, boolean repeat,<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      boolean updateCacheMetrics) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    if (cb == null) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      if (!repeat &amp;&amp; updateCacheMetrics) {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>        stats.miss(caching, cacheKey.isPrimary(), cacheKey.getBlockType());<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      }<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      // If there is another block cache then try and read there.<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      // However if this is a retry ( second time in double checked locking )<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      // And it's already a miss then the l2 will also be a miss.<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      if (victimHandler != null &amp;&amp; !repeat) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>        Cacheable result = victimHandler.getBlock(cacheKey, caching, repeat, updateCacheMetrics);<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>        // Promote this to L1.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>        if (result != null &amp;&amp; caching) {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>          if (result instanceof HFileBlock &amp;&amp; ((HFileBlock) result).usesSharedMemory()) {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>            result = ((HFileBlock) result).deepClone();<a name="line.494"></a>
+<span class="sourceLineNo">495</span>          }<a name="line.495"></a>
+<span class="sourceLineNo">496</span>          cacheBlock(cacheKey, result, /* inMemory = */ false);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>        }<a name="line.497"></a>
+<span class="sourceLineNo">498</span>        return result;<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      }<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      return null;<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    if (updateCacheMetrics) stats.hit(caching, cacheKey.isPrimary(), cacheKey.getBlockType());<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    cb.access(count.incrementAndGet());<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    return cb.getBuffer();<a name="line.504"></a>
+<span class="sourceLineNo">505</span>  }<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>  /**<a name="line.507"></a>
+<span class="sourceLineNo">508</span>   * Whether the cache contains block with specified cacheKey<a name="line.508"></a>
+<span class="sourceLineNo">509</span>   *<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * @return true if contains the block<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  public boolean containsBlock(BlockCacheKey cacheKey) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    return map.containsKey(cacheKey);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>  }<a name="line.514"></a>
+<span class="sourceLineNo">515</span><a name="line.515"></a>
+<span class="sourceLineNo">516</span>  @Override<a name="line.516"></a>
+<span class="sourceLineNo">517</span>  public boolean evictBlock(BlockCacheKey cacheKey) {<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    return cb != null &amp;&amp; evictBlock(cb, false) &gt; 0;<a name="line.519"></a>
+<span class="sourceLineNo">520</span>  }<a name="line.520"></a>
+<span class="sourceLineNo">521</span><a name="line.521"></a>
+<span class="sourceLineNo">522</span>  /**<a name="line.522"></a>
+<span class="sourceLineNo">523</span>   * Evicts all blocks for a specific HFile. This is an<a name="line.523"></a>
+<span class="sourceLineNo">524</span>   * expensive operation implemented as a linear-time search through all blocks<a name="line.524"></a>
+<span class="sourceLineNo">525</span>   * in the cache. Ideally this should be a search in a log-access-time map.<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   *<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * &lt;p&gt;<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * This is used for evict-on-close to remove all blocks of a specific HFile.<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   *<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   * @return the number of blocks evicted<a name="line.530"></a>
+<span class="sourceLineNo">531</span>   */<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  @Override<a name="line.532"></a>
+<span class="sourceLineNo">533</span>  public int evictBlocksByHfileName(String hfileName) {<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    int numEvicted = 0;<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    for (BlockCacheKey key : map.keySet()) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      if (key.getHfileName().equals(hfileName)) {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>        if (evictBlock(key))<a name="line.537"></a>
+<span class="sourceLineNo">538</span>          ++numEvicted;<a name="line.538"></a>
+<span class="sourceLineNo">539</span>      }<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    }<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    if (victimHandler != null) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      numEvicted += victimHandler.evictBlocksByHfileName(hfileName);<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    return numEvicted;<a name="line.544"></a>
+<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
+<span class="sourceLineNo">546</span><a name="line.546"></a>
+<span class="sourceLineNo">547</span>  /**<a name="line.547"></a>
+<span class="sourceLineNo">548</span>   * Evict the block, and it will be cached by the victim handler if exists &amp;amp;&amp;amp;<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * block may be read again later<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   *<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * @param evictedByEvictionProcess true if the given block is evicted by<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   *          EvictionThread<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   * @return the heap size of evicted block<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   */<a name="line.554"></a>
+<span class="sourceLineNo">555</span>  protected long evictBlock(LruCachedBlock block, boolean evictedByEvictionProcess) {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    boolean found = map.remove(block.getCacheKey()) != null;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    if (!found) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      return 0;<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    }<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    updateSizeMetrics(block, true);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    long val = elements.decrementAndGet();<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    if (LOG.isTraceEnabled()) {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      long size = map.size();<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      assertCounterSanity(size, val);<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    }<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    if (block.getBuffer().getBlockType().isData()) {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>       dataBlockElements.decrement();<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    }<a name="line.568"></a>
+<span class="sourceLineNo">569</span>    if (evictedByEvictionProcess) {<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      // When the eviction of the block happened because of invalidation of HFiles, no need to<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      // update the stats counter.<a name="line.571"></a>
+<span class="sourceLineNo">572</span>      stats.evicted(block.getCachedTime(), block.getCacheKey().isPrimary());<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      if (victimHandler != null) {<a name="line.573"></a>
+<span class="sourceLineNo">574</span>        victimHandler.cacheBlock(block.getCacheKey(), block.getBuffer());<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      }<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    }<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    return block.heapSize();<a name="line.577"></a>
+<span class="sourceLineNo">578</span>  }<a name="line.578"></a>
+<span class="sourceLineNo">579</span><a name="line.579"></a>
+<span class="sourceLineNo">580</span>  /**<a name="line.580"></a>
+<span class="sourceLineNo">581</span>   * Multi-threaded call to run the eviction process.<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   */<a name="line.582"></a>
+<span class="sourceLineNo">583</span>  private void runEviction() {<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    if (evictionThread == null) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      evict();<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    } else {<a name="line.586"></a>
+<span class="sourceLineNo">587</span>      evictionThread.evict();<a name="line.587"></a>
+<span class="sourceLineNo">588</span>    }<a name="line.588"></a>
+<span class="sourceLineNo">589</span>  }<a name="line.589"></a>
+<span class="sourceLineNo">590</span><a name="line.590"></a>
+<span class="sourceLineNo">591</span>  @VisibleForTesting<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  boolean isEvictionInProgress() {<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    return evictionInProgress;<a name="line.593"></a>
+<span class="sourceLineNo">594</span>  }<a name="line.594"></a>
+<span class="sourceLineNo">595</span><a name="line.595"></a>
+<span class="sourceLineNo">596</span>  @VisibleForTesting<a name="line.596"></a>
+<span class="sourceLineNo">597</span>  long getOverhead() {<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    return overhead;<a name="line.598"></a>
+<span class="sourceLineNo">599</span>  }<a name="line.599"></a>
+<span class="sourceLineNo">600</span><a name="line.600"></a>
+<span class="sourceLineNo">601</span>  /**<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   * Eviction method.<a name="line.602"></a>
+<span class="sourceLineNo">603</span>   */<a name="line.603"></a>
+<span class="sourceLineNo">604</span>  void evict() {<a name="line.604"></a>
+<span class="sourceLineNo">605</span><a name="line.605"></a>
+<span class="sourceLineNo">606</span>    // Ensure only one eviction at a time<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    if(!evictionLock.tryLock()) return;<a name="line.607"></a>
 <span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>  @VisibleForTesting<a name="line.609"></a>
-<span class="sourceLineNo">610</span>  long getOverhead() {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    return overhead;<a name="line.611"></a>
-<span class="sourceLineNo">612</span>  }<a name="line.612"></a>
+<span class="sourceLineNo">609</span>    try {<a name="line.609"></a>
+<span class="sourceLineNo">610</span>      evictionInProgress = true;<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      long currentSize = this.size.get();<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      long bytesToFree = currentSize - minSize();<a name="line.612"></a>
 <span class="sourceLineNo">613</span><a name="line.613"></a>
-<span class="sourceLineNo">614</span>  /**<a name="line.614"></a>
-<span class="sourceLineNo">615</span>   * Eviction method.<a name="line.615"></a>
-<span class="sourceLineNo">616</span>   */<a name="line.616"></a>
-<span class="sourceLineNo">617</span>  void evict() {<a name="line.617"></a>
-<span class="sourceLineNo">618</span><a name="line.618"></a>
-<span class="sourceLineNo">619</span>    // Ensure only one eviction at a time<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    if(!evictionLock.tryLock()) return;<a name="line.620"></a>
+<span class="sourceLineNo">614</span>      if (LOG.isTraceEnabled()) {<a name="line.614"></a>
+<span class="sourceLineNo">615</span>        LOG.trace("Block cache LRU eviction started; Attempting to free " +<a name="line.615"></a>
+<span class="sourceLineNo">616</span>          StringUtils.byteDesc(bytesToFree) + " of total=" +<a name="line.616"></a>
+<span class="sourceLineNo">617</span>          StringUtils.byteDesc(currentSize));<a name="line.617"></a>
+<span class="sourceLineNo">618</span>      }<a name="line.618"></a>
+<span class="sourceLineNo">619</span><a name="line.619"></a>
+<span class="sourceLineNo">620</span>      if (bytesToFree &lt;= 0) return;<a name="line.620"></a>
 <span class="sourceLineNo">621</span><a name="line.621"></a>
-<span class="sourceLineNo">622</span>    try {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      evictionInProgress = true;<a name="line.623"></a>
-<span class="sourceLineNo">624</span>      long currentSize = this.size.get();<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      long bytesToFree = currentSize - minSize();<a name="line.625"></a>
+<span class="sourceLineNo">622</span>      // Instantiate priority buckets<a name="line.622"></a>
+<span class="sourceLineNo">623</span>      BlockBucket bucketSingle = new BlockBucket("single", bytesToFree, blockSize, singleSize());<a name="line.623"></a>
+<span class="sourceLineNo">624</span>      BlockBucket bucketMulti = new BlockBucket("multi", bytesToFree, blockSize, multiSize());<a name="line.624"></a>
+<span class="sourceLineNo">625</span>      BlockBucket bucketMemory = new BlockBucket("memory", bytesToFree, blockSize, memorySize());<a name="line.625"></a>
 <span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span>      if (LOG.isTraceEnabled()) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>        LOG.trace("Block cache LRU eviction started; Attempting to free " +<a name="line.628"></a>
-<span class="sourceLineNo">629</span>          StringUtils.byteDesc(bytesToFree) + " of total=" +<a name="line.629"></a>
-<span class="sourceLineNo">630</span>          StringUtils.byteDesc(currentSize));<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      }<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span>      if (bytesToFree &lt;= 0) return;<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
-<span class="sourceLineNo">635</span>      // Instantiate priority buckets<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      BlockBucket bucketSingle = new BlockBucket("single", bytesToFree, blockSize, singleSize());<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      BlockBucket bucketMulti = new BlockBucket("multi", bytesToFree, blockSize, multiSize());<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      BlockBucket bucketMemory = new BlockBucket("memory", bytesToFree, blockSize, memorySize());<a name="line.638"></a>
-<span class="sourceLineNo">639</span><a name="line.639"></a>
-<span class="sourceLineNo">640</span>      // Scan entire map putting into appropriate buckets<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      for (LruCachedBlock cachedBlock : map.values()) {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>        switch (cachedBlock.getPriority()) {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>          case SINGLE: {<a name="line.643"></a>
-<span class="sourceLineNo">644</span>            bucketSingle.add(cachedBlock);<a name="line.644"></a>
-<span class="sourceLineNo">645</span>            break;<a name="line.645"></a>
-<span class="sourceLineNo">646</span>          }<a name="line.646"></a>
-<span class="sourceLineNo">647</span>          case MULTI: {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>            bucketMulti.add(cachedBlock);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>            break;<a name="line.649"></a>
-<span class="sourceLineNo">650</span>          }<a name="line.650"></a>
-<span class="sourceLineNo">651</span>          case MEMORY: {<a name="line.651"></a>
-<span class="sourceLineNo">652</span>            bucketMemory.add(cachedBlock);<a name="line.652"></a>
-<span class="sourceLineNo">653</span>            break;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>          }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>        }<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
-<span class="sourceLineNo">657</span><a name="line.657"></a>
-<span class="sourceLineNo">658</span>      long bytesFreed = 0;<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      if (forceInMemory || memoryFactor &gt; 0.999f) {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        long s = bucketSingle.totalSize();<a name="line.660"></a>
-<span class="sourceLineNo">661</span>        long m = bucketMulti.totalSize();<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        if (bytesToFree &gt; (s + m)) {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>          // this means we need to evict blocks in memory bucket to make room,<a name="line.663"></a>
-<span class="sourceLineNo">664</span>          // so the single and multi buckets will be emptied<a name="line.664"></a>
-<span class="sourceLineNo">665</span>          bytesFreed = bucketSingle.free(s);<a name="line.665"></a>
-<span class="sourceLineNo">666</span>          bytesFreed += bucketMulti.free(m);<a name="line.666"></a>
-<span class="sourceLineNo">667</span>          if (LOG.isTraceEnabled()) {<a name="line.667"></a>
-<span class="sourceLineNo">668</span>            LOG.trace("freed " + StringUtils.byteDesc(bytesFreed) +<a name="line.668"></a>
-<span class="sourceLineNo">669</span>              " from single and multi buckets");<a name="line.669"></a>
-<span class="sourceLineNo">670</span>          }<a name="line.670"></a>
-<span class="sourceLineNo">671</span>          bytesFreed += bucketMemory.free(bytesToFree - bytesFreed);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>          if (LOG.isTraceEnabled()) {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>            LOG.trace("freed " + StringUtils.byteDesc(bytesFreed) +<a name="line.673"></a>
-<span class="sourceLineNo">674</span>              " total from all three buckets ");<a name="line.674"></a>
-<span class="sourceLineNo">675</span>          }<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        } else {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>          // this means no need to evict block in memory bucket,<a name="line.677"></a>
-<span class="sourceLineNo">678</span>          // and we try best to make the ratio between single-bucket and<a name="line.678"></a>
-<span class="sourceLineNo">679</span>          // multi-bucket is 1:2<a name="line.679"></a>
-<span class="sourceLineNo">680</span>          long bytesRemain = s + m - bytesToFree;<a name="line.680"></a>
-<span class="sourceLineNo">681</span>          if (3 * s &lt;= bytesRemain) {<a name="line.681"></a>
-<span class="sourceLineNo">682</span>            // single-bucket is small enough that no eviction happens for it<a name="line.682"></a>
-<span class="sourceLineNo">683</span>            // hence all eviction goes from multi-bucket<a name="line.683"></a>
-<span class="sourceLineNo">684</span>            bytesFreed = bucketMulti.free(bytesToFree);<a name="line.684"></a>
-<span class="sourceLineNo">685</span>          } else if (3 * m &lt;= 2 * bytesRemain) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>            // multi-bucket is small enough that no eviction happens for it<a name="line.686"></a>
-<span class="sourceLineNo">687</span>            // hence all eviction goes from single-bucket<a name="line.687"></a>
-<span class="sourceLineNo">688</span>            bytesFreed = bucketSingle.free(bytesToFree);<a name="line.688"></a>
-<span class="sourceLineNo">689</span>          } else {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>            // both buckets need to evict some blocks<a name="line.690"></a>
-<span class="sourceLineNo">691</span>            bytesFreed = bucketSingle.free(s - bytesRemain / 3);<a name="line.691"></a>
-<span class="sourceLineNo">692</span>            if (bytesFreed &lt; bytesToFree) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>              bytesFreed += bucketMulti.free(bytesToFree - bytesFreed);<a name="line.693"></a>
-<span class="sourceLineNo">694</span>            }<a name="line.694"></a>
-<span class="sourceLineNo">695</span>          }<a name="line.695"></a>
-<span class="sourceLineNo">696</span>        }<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      } else {<a name="line.697"></a>
-<span class="sourceLineNo">698</span>        PriorityQueue&lt;BlockBucket&gt; bucketQueue = new PriorityQueue&lt;&gt;(3);<a name="line.698"></a>
-<span class="sourceLineNo">699</span><a name="line.699"></a>
-<span class="sourceLineNo">700</span>        bucketQueue.add(bucketSingle);<a name="line.700"></a>
-<span class="sourceLineNo">701</span>        bucketQueue.add(bucketMulti);<a name="line.701"></a>
-<span class="sourceLineNo">702</span>        bucketQueue.add(bucketMemory);<a name="line.702"></a>
-<span class="sourceLineNo">703</span><a name="line.703"></a>
-<span class="sourceLineNo">704</span>        int remainingBuckets = 3;<a name="line.704"></a>
-<span class="sourceLineNo">705</span><a name="line.705"></a>
-<span class="sourceLineNo">706</span>        BlockBucket bucket;<a name="line.706"></a>
-<span class="sourceLineNo">707</span>        while ((bucket = bucketQueue.poll()) != null) {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>          long overflow = bucket.overflow();<a name="line.708"></a>
-<span class="sourceLineNo">709</span>          if (overflow &gt; 0) {<a name="line.709"></a>
-<span class="sourceLineNo">710</span>            long bucketBytesToFree =<a name="line.710"></a>
-<span class="sourceLineNo">711</span>                Math.min(overflow, (bytesToFree - bytesFreed) / remainingBuckets);<a name="line.711"></a>
-<span class="sourceLineNo">712</span>            bytesFreed += bucket.free(bucketBytesToFree);<a name="line.712"></a>
-<span class="sourceLineNo">713</span>          }<a name="line.713"></a>
-<span class="sourceLineNo">714</span>          remainingBuckets--;<a name="line.714"></a>
-<span class="sourceLineNo">715</span>        }<a name="line.715"></a>
-<span class="sourceLineNo">716</span>      }<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      if (LOG.isTraceEnabled()) {<a name="line.717"></a>
-<span class="sourceLineNo">718</span>        long single = bucketSingle.totalSize();<a name="line.718"></a>
-<span class="sourceLineNo">719</span>        long multi = bucketMulti.totalSize();<a name="line.719"></a>
-<span class="sourceLineNo">720</span>        long memory = bucketMemory.totalSize();<a name="line.720"></a>
-<span class="sourceLineNo">721</span>        LOG.trace("Block cache LRU eviction completed; " +<a name="line.721"></a>
-<span class="sourceLineNo">722</span>          "freed=" + StringUtils.byteDesc(bytesFreed) + ", " +<a name="line.722"></a>
-<span class="sourceLineNo">723</span>          "total=" + StringUtils.byteDesc(this.size.get()) + ", " +<a name="line.723"></a>
-<span class="sourceLineNo">724</span>          "single=" + StringUtils.byteDesc(single) + ", " +<a name="line.724"></a>
-<span class="sourceLineNo">725</span>          "multi=" + StringUtils.byteDesc(multi) + ", " +<a name="line.725"></a>
-<span class="sourceLineNo">726</span>          "memory=" + StringUtils.byteDesc(memory));<a name="line.726"></a>
-<span class="sourceLineNo">727</span>      }<a name="line.727"></a>
-<span class="sourceLineNo">728</span>    } finally {<a name="line.728"></a>
-<span class="sourceLineNo">729</span>      stats.evict();<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      evictionInProgress = false;<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      evictionLock.unlock();<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    }<a name="line.732"></a>
-<span class="sourceLineNo">733</span>  }<a name="line.733"></a>
-<span class="sourceLineNo">734</span><a name="line.734"></a>
-<span class="sourceLineNo">735</span>  @Override<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  public String toString() {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    return MoreObjects.toStringHelper(this)<a name="line.737"></a>
-<span class="sourceLineNo">738</span>      .add("blockCount", getBlockCount())<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      .add("currentSize", StringUtils.byteDesc(getCurrentSize()))<a name="line.739"></a>
-<span class="sourceLineNo">740</span>      .add("freeSize", StringUtils.byteDesc(getFreeSize()))<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      .add("maxSize", StringUtils.byteDesc(getMaxSize()))<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      .add("heapSize", StringUtils.byteDesc(heapSize()))<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      .add("minSize", StringUtils.byteDesc(minSize()))<a name="line.743"></a>
-<span class="sourceLineNo">744</span>      .add("minFactor", minFactor)<a name="line.744"></a>
-<span class="sourceLineNo">745</span>      .add("multiSize", StringUtils.byteDesc(multiSize()))<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      .add("multiFactor", multiFactor)<a name="line.746"></a>
-<span class="sourceLineNo">747</span>      .add("singleSize", StringUtils.byteDesc(singleSize()))<a name="line.747"></a>
-<span class="sourceLineNo">748</span>      .add("singleFactor", singleFactor)<a name="line.748"></a>
-<span class="sourceLineNo">749</span>      .toString();<a name="line.749"></a>
-<span class="sourceLineNo">750</span>  }<a name="line.750"></a>
+<span class="sourceLineNo">627</span>      // Scan entire map putting into appropriate buckets<a name="line.627"></a>
+<span class="sourceLineNo">628</span>      for (LruCachedBlock cachedBlock : map.values()) {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>        switch (cachedBlock.getPriority()) {<a name="line.629"></a>
+<span class="sourceLineNo">630</span>          case SINGLE: {<a name="line.630"></a>
+<span class="sourceLineNo">631</span>            bucketSingle.add(cachedBlock);<a name="line.631"></a>
+<span class="sourceLineNo">632</span>            break;<a name="line.632"></a>
+<span class="sourceLineNo">633</span>          }<a name="line.633"></a>
+<span class="sourceLineNo">634</span>          case MULTI: {<a name="line.634"></a>
+<span class="sourceLineNo">635</span>            bucketMulti.add(cachedBlock);<a name="line.635"></a>
+<span class="sourceLineNo">636</span>            break;<a name="line.636"></a>
+<span class="sourceLineNo">637</span>          }<a name="line.637"></a>
+<span class="sourceLineNo">638</span>          case MEMORY: {<a name="line.638"></a>
+<span class="sourceLineNo">639</span>            bucketMemory.add(cachedBlock);<a name="line.639"></a>
+<span class="sourceLineNo">640</span>            break;<a name="line.640"></a>
+<span class="sourceLineNo">641</span>          }<a name="line.641"></a>
+<span class="sourceLineNo">642</span>        }<a name="line.642"></a>
+<span class="sourceLineNo">643</span>      }<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>      long bytesFreed = 0;<a name="line.645"></a>
+<span class="sourceLineNo">646</span>      if (forceInMemory || memoryFactor &gt; 0.999f) {<a name="line.646"></a>
+<span class="sourceLineNo">647</span>        long s = bucketSingle.totalSize();<a name="line.647"></a>
+<span class="sourceLineNo">648</span>        long m = bucketMulti.totalSize();<a name="line.648"></a>
+<span class="sourceLineNo">649</span>        if (bytesToFree &gt; (s + m)) {<a name="line.649"></a>
+<span class="sourceLineNo">650</span>          // this means we need to evict blocks in memory bucket to make room,<a name="line.650"></a>
+<span class="sourceLineNo">651</span>          // so the single and multi buckets will be emptied<a name="line.651"></a>
+<span class="sourceLineNo">652</span>          bytesFreed = bucketSingle.free(s);<a name="line.652"></a>
+<span class="sourceLineNo">653</span>          bytesFreed += bucketMulti.free(m);<a name="line.653"></a>
+<span class="sourceLineNo">654</span>          if (LOG.isTraceEnabled()) {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>            LOG.trace("freed " + StringUtils.byteDesc(bytesFreed) +<a name="line.655"></a>
+<span class="sourceLineNo">656</span>              " from single and multi buckets");<a name="line.656"></a>
+<span class="sourceLineNo">657</span>          }<a name="line.657"></a>
+<span class="sourceLineNo">658</span>          bytesFreed += bucketMemory.free(bytesToFree - bytesFreed);<a name="line.658"></a>
+<span class="sourceLineNo">659</span>          if (LOG.isTraceEnabled()) {<a name="line.659"></a>
+<span class="sourceLineNo">660</span>            LOG.trace("freed " + StringUtils.byteDesc(bytesFreed) +<a name="line.660"></a>
+<span class="sourceLineNo">661</span>              " total from all three buckets ");<a name="line.661"></a>
+<span class="sourceLineNo">662</span>          }<a name="line.662"></a>
+<span class="sourceLineNo">663</span>        } else {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>          // this means no need to evict block in memory bucket,<a name="line.664"></a>
+<span class="sourceLineNo">665</span>          // and we try best to make the ratio between single-bucket and<a name="line.665"></a>
+<span class="sourceLineNo">666</span>          // multi-bucket is 1:2<a name="line.666"></a>
+<span class="sourceLineNo">667</span>          long bytesRemain = s + m - bytesToFree;<a name="line.667"></a>
+<span class="sourceLineNo">668</span>          if (3 * s &lt;= bytesRemain) {<a name="line.668"></a>
+<span class="sourceLineNo">669</span>            // single-bucket is small enough that no eviction happens for it<a name="line.669"></a>
+<span class="sourceLineNo">670</span>            // hence all eviction goes from multi-bucket<a name="line.670"></a>
+<span class="sourceLineNo">671</span>            bytesFreed = bucketMulti.free(bytesToFree);<a name="line.671"></a>
+<span class="sourceLineNo">672</span>          } else if (3 * m &lt;= 2 * bytesRemain) {<a name="line.672"></a>
+<span class="sourceLineNo">673</span>            // multi-bucket is small enough that no eviction happens for it<a name="line.673"></a>
+<span class="sourceLineNo">674</span>            // hence all eviction goes from single-bucket<a name="line.674"></a>
+<span class="sourceLineNo">675</span>            bytesFreed = bucketSingle.free(bytesToFree);<a name="line.675"></a>
+<span class="sourceLineNo">676</span>          } else {<a name="line.676"></a>
+<span class="sourceLineNo">677</span>            // both buckets need to evict some blocks<a name="line.677"></a>
+<span class="sourceLineNo">678</span>            bytesFreed = bucketSingle.free(s - bytesRemain / 3);<a name="line.678"></a>
+<span class="sourceLineNo">679</span>            if (bytesFreed &lt; bytesToFree) {<a name="line.679"></a>
+<span class="sourceLineNo">680</span>              bytesFreed += bucketMulti.free(bytesToFree - bytesFreed);<a name="line.680"></a>
+<span class="sourceLineNo">681</span>            }<a name="line.681"></a>
+<span class="sourceLineNo">682</span>          }<a name="line.682"></a>
+<span class="sourceLineNo">683</span>        }<a name="line.683"></a>
+<span class="sourceLineNo">684</span>      } else {<a name="line.684"></a>
+<span class="sourceLineNo">685</span>        PriorityQueue&lt;BlockBucket&gt; bucketQueue = new PriorityQueue&lt;&gt;(3);<a name="line.685"></a>
+<span class="sourceLineNo">686</span><a name="line.686"></a>
+<span class="sourceLineNo">687</span>        bucketQueue.add(bucketSingle);<a name="line.687"></a>
+<span class="sourceLineNo">688</span>        bucketQueue.add(bucketMulti);<a name="line.688"></a>
+<span class="sourceLineNo">689</span>        bucketQueue.add(bucketMemory);<a name="line.689"></a>
+<span class="sourceLineNo">690</span><a name="line.690"></a>
+<span class="sourceLineNo">691</span>        int remainingBuckets = 3;<a name="line.691"></a>
+<span class="sourceLineNo">692</span><a name="line.692"></a>
+<span class="sourceLineNo">693</span>        BlockBucket bucket;<a name="line.693"></a>
+<span class="sourceLineNo">694</span>        while ((bucket = bucketQueue.poll()) != null) {<a name="line.694"></a>
+<span class="sourceLineNo">695</span>          long overflow = bucket.overflow();<a name="line.695"></a>
+<span class="sourceLineNo">696</span>          if (overflow &gt; 0) {<a name="line.696"></a>
+<span class="sourceLineNo">697</span>            long bucketBytesToFree =<a name="line.697"></a>
+<span class="sourceLineNo">698</span>                Math.min(overflow, (bytesToFree - bytesFreed) / remainingBuckets);<a name="line.698"></a>
+<span class="sourceLineNo">699</span>            bytesFreed += bucket.free(bucketBytesToFree);<a name="line.699"></a>
+<span class="sourceLineNo">700</span>          }<a name="line.700"></a>
+<span class="sourceLineNo">701</span>          remainingBuckets--;<a name="line.701"></a>
+<span class="sourceLineNo">702</span>        }<a name="line.702"></a>
+<span class="sourceLineNo">703</span>      }<a name="line.703"></a>
+<span class="sourceLineNo">704</span>      if (LOG.isTraceEnabled()) {<a name="line.704"></a>
+<span class="sourceLineNo">705</span>        long single = bucketSingle.totalSize();<a name="line.705"></a>
+<span class="sourceLineNo">706</span>        long multi = bucketMulti.totalSize();<a name="line.706"></a>
+<span class="sourceLineNo">707</span>        long memory = bucketMemory.totalSize();<a name="line.707"></a>
+<span class="sourceLineNo">708</span>        LOG.trace("Block cache LRU eviction completed; " +<a name="line.708"></a>
+<span class="sourceLineNo">709</span>          "freed=" + StringUtils.byteDesc(bytesFreed) + ", " +<a name="line.709"></a>
+<span class="sourceLineNo">710</span>          "total=" + StringUtils.byteDesc(this.size.get()) + ", " +<a name="line.710"></a>
+<span class="sourceLineNo">711</span>          "single=" + StringUtils.byteDesc(single) + ", " +<a name="line.711"></a>
+<span class="sourceLineNo">712</span>          "multi=" + StringUtils.byteDesc(multi) + ", " +<a name="line.712"></a>
+<span class="sourceLineNo">713</span>          "memory=" + StringUtils.byteDesc(memory));<a name="line.713"></a>
+<span class="sourceLineNo">714</span>      }<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    } finally {<a name="line.715"></a>
+<span class="sourceLineNo">716</span>      stats.evict();<a name="line.716"></a>
+<span class="sourceLineNo">717</span>      evictionInProgress = false;<a name="line.717"></a>
+<span class="sourceLineNo">718</span>      evictionLock.unlock();<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    }<a name="line.719"></a>
+<span class="sourceLineNo">720</span>  }<a name="line.720"></a>
+<span class="sourceLineNo">721</span><a name="line.721"></a>
+<span class="sourceLineNo">722</span>  @Override<a name="line.722"></a>
+<span class="sourceLineNo">723</span>  public String toString() {<a name="line.723"></a>
+<span class="sourceLineNo">724</span>    return MoreObjects.toStringHelper(this)<a name="line.724"></a>
+<span class="sourceLineNo">725</span>      .add("blockCount", getBlockCount())<a name="line.725"></a>
+<span class="sourceLineNo">726</span>      .add("currentSize", StringUtils.byteDesc(getCurrentSize()))<a name="line.726"></a>
+<span class="sourceLineNo">727</span>      .add("freeSize", StringUtils.byteDesc(getFreeSize()))<a name="line.727"></a>
+<span class="sourceLineNo">728</span>      .add("maxSize", StringUtils.byteDesc(getMaxSize()))<a name="line.728"></a>
+<span class="sourceLineNo">729</span>      .add("heapSize", StringUtils.byteDesc(heapSize()))<a name="line.729"></a>
+<span class="sourceLineNo">730</span>      .add("minSize", StringUtils.byteDesc(minSize()))<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      .add("minFactor", minFactor)<a name="line.731"></a>
+<span class="sourceLineNo">732</span>      .add("multiSize", StringUtils.byteDesc(multiSize()))<a name="line.732"></a>
+<span class="sourceLineNo">733</span>      .add("multiFactor", multiFactor)<a name="line.733"></a>
+<span class="sourceLineNo">734</span>      .add("singleSize", StringUtils.byteDesc(singleSize()))<a name="line.734"></a>
+<span class="sourceLineNo">735</span>      .add("singleFactor", singleFactor)<a name="line.735"></a>
+<span class="sourceLineNo">736</span>      .toString();<a name="line.736"></a>
+<span class="sourceLineNo">737</span>  }<a name="line.737"></a>
+<span class="sourceLineNo">738</span><a name="line.738"></a>
+<span class="sourceLineNo">739</span>  /**<a name="line.739"></a>
+<span class="sourceLineNo">740</span>   * Used to group blocks into priority buckets.  There will be a BlockBucket<a name="line.740"></a>
+<span class="sourceLineNo">741</span>   * for each priority (single, multi, memory).  Once bucketed, the eviction<a name="line.741"></a>
+<span class="sourceLineNo">742</span>   * algorithm takes the appropriate number of elements out of each according<a name="line.742"></a>
+<span class="sourceLineNo">743</span>   * to configuration parameters and their relatives sizes.<a name="line.743"></a>
+<span class="sourceLineNo">744</span>   */<a name="line.744"></a>
+<span class="sourceLineNo">745</span>  private class BlockBucket implements Comparable&lt;BlockBucket&gt; {<a name="line.745"></a>
+<span class="sourceLineNo">746</span><a name="line.746"></a>
+<span class="sourceLineNo">747</span>    private final String name;<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    private LruCachedBlockQueue queue;<a name="line.748"></a>
+<span class="sourceLineNo">749</span>    private long totalSize = 0;<a name="line.749"></a>
+<span class="sourceLineNo">750</span>    private long bucketSize;<a name="line.750"></a>
 <span class="sourceLineNo">751</span><a name="line.751"></a>
-<span class="sourceLineNo">752</span>  /**<a name="line.752"></a>
-<span class="sourceLineNo">753</span>   * Used to group blocks into priority buckets.  There will be a BlockBucket<a name="line.753"></a>
-<span class="sourceLineNo">754</span>   * for each priority (single, multi, memory).  Once bucketed, the eviction<a name="line.754"></a>
-<span class="sourceLineNo">755</span>   * algorithm takes the appropriate number of elements out of each according<a name="line.755"></a>
-<span class="sourceLineNo">756</span>   * to configuration parameters and their relatives sizes.<a name="line.756"></a>
-<span class="sourceLineNo">757</span>   */<a name="line.757"></a>
-<span class="sourceLineNo">758</span>  private class BlockBucket implements Comparable&lt;BlockBucket&gt; {<a name="line.758"></a>
-<span class="sourceLineNo">759</span><a name="line.759"></a>
-<span class="sourceLineNo">760</span>    private final String name;<a name="line.760"></a>
-<span class="sourceLineNo">761</span>    private LruCachedBlockQueue queue;<a name="line.761"></a>
-<span class="sourceLineNo">762</span>    private long totalSize = 0;<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    private long bucketSize;<a name="line.763"></a>
-<span class="sourceLineNo">764</span><a name="line.764"></a>
-<span class="sourceLineNo">765</span>    public BlockBucket(String name, long bytesToFree, long blockSize, long bucketSize) {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      this.name = name;<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      this.bucketSize = bucketSize;<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      queue = new LruCachedBlockQueue(bytesToFree, blockSize);<a name="line.768"></a>
-<span class="sourceLineNo">769</span>      totalSize = 0;<a name="line.769"></a>
-<span class="sourceLineNo">770</span>    }<a name="line.770"></a>
-<span class="sourceLineNo">771</span><a name="line.771"></a>
-<span class="sourceLineNo">772</span>    public void add(LruCachedBlock block) {<a name="line.772"></a>
-<span class="sourceLineNo">773</span>      totalSize += block.heapSize();<a name="line.773"></a>
-<span class="sourceLineNo">774</span>      queue.add(block);<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    }<a name="line.775"></a>
-<span class="sourceLineNo">776</span><a name="line.776"></a>
-<span class="sourceLineNo">777</span>    public long free(long toFree) {<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      if (LOG.isTraceEnabled()) {<a name="line.778"></a>
-<span class="sourceLineNo">779</span>        LOG.trace("freeing " + StringUtils.byteDesc(toFree) + " from " + this);<a name="line.779"></a>
-<span class="sourceLineNo">780</span>      }<a name="line.780"></a>
-<span class="sourceLineNo">781</span>      LruCachedBlock cb;<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      long freedBytes = 0;<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      while ((cb = queue.pollLast()) != null) {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>        freedBytes += evictBlock(cb, true);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>        if (freedBytes &gt;= toFree) {<a name="line.785"></a>
-<span class="sourceLineNo">786</span>          return freedBytes;<a name="line.786"></a>
-<span class="sourceLineNo">787</span>        }<a name="line.787"></a>
-<span class="sourceLineNo">788</span>      }<a name="line.788"></a>
-<span class="sourceLineNo">789</span>      if (LOG.isTraceEnabled()) {<a name="line.789"></a>
-<span class="sourceLineNo">790</span>        LOG.trace("freed " + StringUtils.byteDesc(freedBytes) + " from " + this);<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      }<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      return freedBytes;<a name="line.792"></a>
+<span class="sourceLineNo">752</span>    public BlockBucket(String name, long bytesToFree, long blockSize, long bucketSize) {<a name="line.752"></a>
+<span class="sourceLineNo">753</span>      this.name = name;<a name="line.753"></a>
+<span class="sourceLineNo">754</span>      this.bucketSize = bucketSize;<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      queue = new LruCachedBlockQueue(bytesToFree, blockSize);<a name="line.755"></a>
+<span class="sourceLineNo">756</span>      totalSize = 0;<a name="line.756"></a>
+<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
+<span class="sourceLineNo">758</span><a name="line.758"></a>
+<span class="sourceLineNo">759</span>    public void add(LruCachedBlock block) {<a name="line.759"></a>
+<span class="sourceLineNo">760</span>      totalSize += block.heapSize();<a name="line.760"></a>
+<span class="sourceLineNo">761</span>      queue.add(block);<a name="line.761"></a>
+<span class="sourceLineNo">762</span>    }<a name="line.762"></a>
+<span class="sourceLineNo">763</span><a name="line.763"></a>
+<span class="sourceLineNo">764</span>    public long free(long toFree) {<a name="line.764"></a>
+<span class="sourceLineNo">765</span>      if (LOG.isTraceEnabled()) {<a name="line.765"></a>
+<span class="sourceLineNo">766</span>        LOG.trace("freeing " + StringUtils.byteDesc(toFree) + " from " + this);<a name="line.766"></a>
+<span class="sourceLineNo">767</span>      }<a name="line.767"></a>
+<span class="sourceLineNo">768</span>      LruCachedBlock cb;<a name="line.768"></a>
+<span class="sourceLineNo">769</span>      long freedBytes = 0;<a name="line.769"></a>
+<span class="sourceLineNo">770</span>      while ((cb = queue.pollLast()) != null) {<a name="line.770"></a>
+<span class="sourceLineNo">771</span>        freedBytes += evictBlock(cb, true);<a name="line.771"></a>
+<span class="sourceLineNo">772</span>        if (freedBytes &gt;= toFree) {<a name="line.772"></a>
+<span class="sourceLineNo">773</span>          return freedBytes;<a name="line.773"></a>
+<span class="sourceLineNo">774</span>        }<a name="line.774"></a>
+<span class="sourceLineNo">775</span>      }<a name="line.775"></a>
+<span class="sourceLineNo">776</span>      if (LOG.isTraceEnabled()) {<a name="line.776"></a>
+<span class="sourceLineNo">777</span>        LOG.trace("freed " + StringUtils.byteDesc(freedBytes) + " from " + this);<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      }<a name="line.778"></a>
+<span class="sourceLineNo">779</span>      return freedBytes;<a name="line.779"></a>
+<span class="sourceLineNo">780</span>    }<a name="line.780"></a>
+<span class="sourceLineNo">781</span><a name="line.781"></a>
+<span class="sourceLineNo">782</span>    public long overflow() {<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      return totalSize - bucketSize;<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    }<a name="line.784"></a>
+<span class="sourceLineNo">785</span><a name="line.785"></a>
+<span class="sourceLineNo">786</span>    public long totalSize() {<a name="line.786"></a>
+<span class="sourceLineNo">787</span>      return totalSize;<a name="line.787"></a>
+<span class="sourceLineNo">788</span>    }<a name="line.788"></a>
+<span class="sourceLineNo">789</span><a name="line.789"></a>
+<span class="sourceLineNo">790</span>    @Override<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    public int compareTo(BlockBucket that) {<a name="line.791"></a>
+<span class="sourceLineNo">792</span>      return Long.compare(this.overflow(), that.overflow());<a name="line.792"></a>
 <span class="sourceLineNo">793</span>    }<a name="line.793"></a>
 <span class="sourceLineNo">794</span><a name="line.794"></a>
-<span class="sourceLineNo">795</span>    public long overflow() {<a name="line.795"></a>
-<span class="sourceLineNo">796</span>      return totalSize - bucketSize;<a name="line.796"></a>
-<span class="sourceLineNo">797</span>    }<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span>    public long totalSize() {<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      return totalSize;<a name="line.800"></a>
+<span class="sourceLineNo">795</span>    @Override<a name="line.795"></a>
+<span class="sourceLineNo">796</span>    public boolean equals(Object that) {<a name="line.796"></a>
+<span class="sourceLineNo">797</span>      if (that == null || !(that instanceof BlockBucket)) {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>        return false;<a name="line.798"></a>
+<span class="sourceLineNo">799</span>      }<a name="line.799"></a>
+<span class="sourceLineNo">800</span>      return compareTo((BlockBucket)that) == 0;<a name="line.800"></a>
 <span class="sourceLineNo">801</span>    }<a name="line.801"></a>
 <span class="sourceLineNo">802</span><a name="line.802"></a>
 <span class="sourceLineNo">803</span>    @Override<a name="line.803"></a>
-<span class="sourceLineNo">804</span>    public int compareTo(BlockBucket that) {<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      return Long.compare(this.overflow(), that.overflow());<a name="line.805"></a>
+<span class="sourceLineNo">804</span>    public int hashCode() {<a name="line.804"></a>
+<span class="sourceLineNo">805</span>      return Objects.hashCode(name, bucketSize, queue, totalSize);<a name="line.805"></a>
 <span class="sourceLineNo">806</span>    }<a name="line.806"></a>
 <span class="sourceLineNo">807</span><a name="line.807"></a>
 <span class="sourceLineNo">808</span>    @Override<a name="line.808"></a>
-<span class="sourceLineNo">809</span>    public boolean equals(Object that) {<a name="line.809"></a>
-<span class="sourceLineNo">810</span>      if (that == null || !(that instanceof BlockBucket)) {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>        return false;<a name="line.811"></a>
-<span class="sourceLineNo">812</span>      }<a name="line.812"></a>
-<span class="sourceLineNo">813</span>      return compareTo((BlockBucket)that) == 0;<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    }<a name="line.814"></a>
-<span class="sourceLineNo">815</span><a name="line.815"></a>
-<span class="sourceLineNo">816</span>    @Override<a name="line.816"></a>
-<span class="sourceLineNo">817</span>    public int hashCode() {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      return Objects.hashCode(name, bucketSize, queue, totalSize);<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    }<a name="line.819"></a>
-<span class="sourceLineNo">820</span><a name="line.820"></a>
-<span class="sourceLineNo">821</span>    @Override<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    public String toString() {<a name="line.822"></a>
-<span class="sourceLineNo">823</span>      return MoreObjects.toStringHelper(this)<a name="line.823"></a>
-<span class="sourceLineNo">824</span>        .add("name", name)<a name="line.824"></a>
-<span class="sourceLineNo">825</span>        .add("totalSize", StringUtils.byteDesc(totalSize))<a name="line.825"></a>
-<span class="sourceLineNo">826</span>        .add("bucketSize", StringUtils.byteDesc(bucketSize))<a name="line.826"></a>
-<span class="sourceLineNo">827</span>        .toString();<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    }<a name="line.828"></a>
-<span class="sourceLineNo">829</span>  }<a name="line.829"></a>
-<span class="sourceLineNo">830</span><a name="line.830"></a>
-<span class="sourceLineNo">831</span>  /**<a name="line.831"></a>
-<span class="sourceLineNo">832</span>   * Get the maximum size of this cache.<a name="line.832"></a>
-<span class="sourceLineNo">833</span>   *<a name="line.833"></a>
-<span class="sourceLineNo">834</span>   * @return max size in bytes<a name="line.834"></a>
-<span class="sourceLineNo">835</span>   */<a name="line.835"></a>
-<span class="sourceLineNo">836</span><a name="line.836"></a>
-<span class="sourceLineNo">837</span>  @Override<a name="line.837"></a>
-<span class="sourceLineNo">838</span>  public long getMaxSize() {<a name="line.838"></a>
-<span class="sourceLineNo">839</span>    return this.maxSize;<a name="line.839"></a>
-<span class="sourceLineNo">840</span>  }<a name="line.840"></a>
-<span class="sourceLineNo">841</span><a name="line.841"></a>
-<span class="sourceLineNo">842</span>  @Override<a name="line.842"></a>
-<span class="sourceLineNo">843</span>  public long getCurrentSize() {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>    return this.size.get();<a name="line.844"></a>
-<span class="sourceLineNo">845</span>  }<a name="line.845"></a>
-<span class="sourceLineNo">846</span><a name="line.846"></a>
-<span class="sourceLineNo">847</span>  @Override<a name="line.847"></a>
-<span class="sourceLineNo">848</span>  public long getCurrentDataSize() {<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    return this.dataBlockSize.sum();<a name="line.849"></a>
-<span class="sourceLineNo">850</span>  }<a name="line.850"></a>
-<span class="sourceLineNo">851</span><a name="line.851"></a>
-<span class="sourceLineNo">852</span>  @Override<a name="line.852"></a>
-<span class="sourceLineNo">853</span>  public long getFreeSize() {<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    return getMaxSize() - getCurrentSize();<a name="line.854"></a>
-<span class="sourceLineNo">855</span>  }<a name="line.855"></a>
-<span class="sourceLineNo">856</span><a name="line.856"></a>
-<span class="sourceLineNo">857</span>  @Override<a name="line.857"></a>
-<span class="sourceLineNo">858</span>  public long size() {<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    return getMaxSize();<a name="line.859"></a>
-<span class="sourceLineNo">860</span>  }<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>  @Override<a name="line.862"></a>
-<span class="sourceLineNo">863</span>  public long getBlockCount() {<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    return this.elements.get();<a name="line.864"></a>
-<span class="sourceLineNo">865</span>  }<a name="line.865"></a>
-<span class="sourceLineNo">866</span><a name="line.866"></a>
-<span class="sourceLineNo">867</span>  @Override<a name="line.867"></a>
-<span class="sourceLineNo">868</span>  public long getDataBlockCount() {<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    return this.dataBlockElements.sum();<a name="line.869"></a>
-<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
-<span class="sourceLineNo">871</span><a name="line.871"></a>
-<span class="sourceLineNo">872</span>  EvictionThread getEvictionThread() {<a name="line.872"></a>
-<span class="sourceLineNo">873</span>    return this.evictionThread;<a name="line.873"></a>
-<span class="sourceLineNo">874</span>  }<a name="line.874"></a>
+<span class="sourceLineNo">809</span>    public String toString() {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>      return MoreObjects.toStringHelper(this)<a name="line.810"></a>
+<span class="sourceLineNo">811</span>        .add("name", name)<a name="line.811"></a>
+<span class="sourceLineNo">812</span>        .add("totalSize", StringUtils.byteDesc(totalSize))<a name="line.812"></a>
+<span class="sourceLineNo">813</span>        .add("bucketSize", StringUtils.byteDesc(bucketSize))<a name="line.813"></a>
+<span class="sourceLineNo">814</span>        .toString();<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    }<a name="line.815"></a>
+<span class="sourceLineNo">816</span>  }<a name="line.816"></a>
+<span class="sourceLineNo">817</span><a name="line.817"></a>
+<span class="sourceLineNo">818</span>  /**<a name="line.818"></a>
+<span class="sourceLineNo">819</span>   * Get the maximum size of this cache.<a name="line.819"></a>
+<span class="sourceLineNo">820</span>   *<a name="line.820"></a>
+<span class="sourceLineNo">821</span>   * @return max size in bytes<a name="line.821"></a>
+<span class="sourceLineNo">822</span>   */<a name="line.822"></a>
+<span class="sourceLineNo">823</span><a name="line.823"></a>
+<span class="sourceLineNo">824</span>  @Override<a name="line.824"></a>
+<span class="sourceLineNo">825</span>  public long getMaxSize() {<a name="line.825"></a>
+<span class="sourceLineNo">826</span>    return this.maxSize;<a name="line.826"></a>
+<span class="sourceLineNo">827</span>  }<a name="line.827"></a>
+<span class="sourceLineNo">828</span><a name="line.828"></a>
+<span class="sourceLineNo">829</span>  @Override<a name="line.829"></a>
+<span class="sourceLineNo">830</span>  public long getCurrentSize() {<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    return this.size.get();<a name="line.831"></a>
+<span class="sourceLineNo">832</span>  }<a name="line.832"></a>
+<span class="sourceLineNo">833</span><a name="line.833"></a>
+<span class="sourceLineNo">834</span>  @Override<a name="line.834"></a>
+<span class="sourceLineNo">835</span>  public long getCurrentDataSize() {<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    return this.dataBlockSize.sum();<a name="line.836"></a>
+<span class="sourceLineNo">837</span>  }<a name="line.837"></a>
+<span class="sourceLineNo">838</span><a name="line.838"></a>
+<span class="sourceLineNo">839</span>  @Override<a name="line.839"></a>
+<span class="sourceLineNo">840</span>  public long getFreeSize() {<a name="line.840"></a>
+<span class="sourceLineNo">841</span>    return getMaxSize() - getCurrentSize();<a name="line.841"></a>
+<span class="sourceLineNo">842</span>  }<a name="line.842"></a>
+<span class="sourceLineNo">843</span><a name="line.843"></a>
+<span class="sourceLineNo">844</span>  @Override<a name="line.844"></a>
+<span class="sourceLin

<TRUNCATED>

[17/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.DecryptHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.DecryptHandler.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.DecryptHandler.html
index 05e032c..40ef9f4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.DecryptHandler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.DecryptHandler.html
@@ -25,767 +25,805 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.io.asyncfs;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.21"></a>
 <span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import com.google.protobuf.CodedOutputStream;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.io.IOException;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.lang.reflect.Field;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.lang.reflect.InvocationTargetException;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.lang.reflect.Method;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.net.InetAddress;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import java.net.InetSocketAddress;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import java.nio.ByteBuffer;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import java.security.GeneralSecurityException;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import java.util.Arrays;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import java.util.Collections;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import java.util.List;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import java.util.Map;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import java.util.Set;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import java.util.concurrent.TimeUnit;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>import javax.security.auth.callback.Callback;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import javax.security.auth.callback.CallbackHandler;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import javax.security.auth.callback.NameCallback;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import javax.security.auth.callback.PasswordCallback;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import javax.security.sasl.RealmCallback;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import javax.security.sasl.Sasl;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import javax.security.sasl.SaslClient;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import javax.security.sasl.SaslException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.commons.codec.binary.Base64;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.commons.lang3.StringUtils;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.conf.Configuration;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.slf4j.Logger;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.slf4j.LoggerFactory;<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>import com.google.protobuf.ByteString;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.security.token.Token;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>/**<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> */<a name="line.108"></a>
-<span class="sourceLineNo">109</span>@InterfaceAudience.Private<a name="line.109"></a>
-<span class="sourceLineNo">110</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private static final Logger LOG =<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.112"></a>
+<span class="sourceLineNo">023</span>import com.google.protobuf.ByteString;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import com.google.protobuf.CodedOutputStream;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.lang.reflect.Field;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.lang.reflect.InvocationTargetException;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.lang.reflect.Method;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.InetAddress;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.net.InetSocketAddress;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.nio.ByteBuffer;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.security.GeneralSecurityException;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Arrays;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Collections;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.List;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Map;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Set;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.concurrent.TimeUnit;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import javax.security.auth.callback.Callback;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import javax.security.auth.callback.CallbackHandler;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import javax.security.auth.callback.NameCallback;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import javax.security.auth.callback.PasswordCallback;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import javax.security.sasl.RealmCallback;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import javax.security.sasl.Sasl;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import javax.security.sasl.SaslClient;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import javax.security.sasl.SaslException;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.commons.codec.binary.Base64;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.commons.lang3.StringUtils;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.crypto.key.KeyProvider;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.security.token.Token;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.slf4j.Logger;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.LoggerFactory;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>/**<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.104"></a>
+<span class="sourceLineNo">105</span> */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>@InterfaceAudience.Private<a name="line.106"></a>
+<span class="sourceLineNo">107</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private static final Logger LOG =<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private static final String SERVER_NAME = "0";<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  private static final String PROTOCOL = "hdfs";<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  private static final String NAME_DELIMITER = " ";<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  private interface SaslAdaptor {<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.127"></a>
+<span class="sourceLineNo">114</span>  private static final String SERVER_NAME = "0";<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final String PROTOCOL = "hdfs";<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private static final String NAME_DELIMITER = " ";<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  private interface SaslAdaptor {<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
 <span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.132"></a>
+<span class="sourceLineNo">129</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  // helper class for convert protos.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private interface PBHelper {<a name="line.132"></a>
 <span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  // helper class for convert protos.<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  private interface PBHelper {<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.137"></a>
+<span class="sourceLineNo">134</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
 <span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final PBHelper PB_HELPER;<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private interface TransparentCryptoHelper {<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        throws IOException;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    Field saslPropsResolverField =<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    saslPropsResolverField.setAccessible(true);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    Field trustedChannelResolverField =<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    trustedChannelResolverField.setAccessible(true);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Field fallbackToSimpleAuthField =<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return new SaslAdaptor() {<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>      @Override<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        try {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        } catch (IllegalAccessException e) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>          throw new RuntimeException(e);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        }<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        try {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        } catch (IllegalAccessException e) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          throw new RuntimeException(e);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      }<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>      @Override<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        try {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (IllegalAccessException e) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          throw new RuntimeException(e);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    };<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    Class&lt;?&gt; helperClass;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    try {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } catch (ClassNotFoundException e) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    Method convertCipherOptionProtosMethod =<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    return new PBHelper() {<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>      @SuppressWarnings("unchecked")<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      @Override<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        try {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          throw new RuntimeException(e);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>      @SuppressWarnings("unchecked")<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      @Override<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        try {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>          throw new RuntimeException(e);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      }<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    };<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      throws NoSuchMethodException {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    return new TransparentCryptoHelper() {<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>      @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          DFSClient client) throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        try {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          KeyVersion decryptedKey =<a name="line.240"></a>
-<span class="sourceLineNo">241</span>              (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          return encryptor;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        } catch (InvocationTargetException e) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          throw new RuntimeException(e.getTargetException());<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        } catch (GeneralSecurityException e) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          throw new IOException(e);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        } catch (IllegalAccessException e) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          throw new RuntimeException(e);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      }<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    };<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  static {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    try {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      PB_HELPER = createPBHelper();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    } catch (Exception e) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          + "HBASE-16110 for more information.";<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      LOG.error(msg, e);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      throw new Error(msg, e);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>  /**<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    private final char[] password;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    private final String userName;<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>     * Creates a new SaslClientCallbackHandler.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>     * @param userName SASL user name<a name="line.282"></a>
-<span class="sourceLineNo">283</span>     * @Param password SASL password<a name="line.283"></a>
-<span class="sourceLineNo">284</span>     */<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      this.password = password;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      this.userName = userName;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    @Override<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      NameCallback nc = null;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      PasswordCallback pc = null;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      RealmCallback rc = null;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      for (Callback callback : callbacks) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          continue;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        } else if (callback instanceof NameCallback) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          nc = (NameCallback) callback;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        } else if (callback instanceof PasswordCallback) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>          pc = (PasswordCallback) callback;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        } else if (callback instanceof RealmCallback) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          rc = (RealmCallback) callback;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        } else {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      if (nc != null) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        nc.setName(userName);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      if (pc != null) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        pc.setPassword(password);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      if (rc != null) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        rc.setText(rc.getDefaultText());<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private final Configuration conf;<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    private final SaslClient saslClient;<a name="line.326"></a>
+<span class="sourceLineNo">139</span>  private static final PBHelper PB_HELPER;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  private interface TransparentCryptoHelper {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        throws IOException;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    Field saslPropsResolverField =<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    saslPropsResolverField.setAccessible(true);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    Field trustedChannelResolverField =<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    trustedChannelResolverField.setAccessible(true);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Field fallbackToSimpleAuthField =<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return new SaslAdaptor() {<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>      @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        try {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        } catch (IllegalAccessException e) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          throw new RuntimeException(e);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>      @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        try {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        } catch (IllegalAccessException e) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          throw new RuntimeException(e);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      }<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>      @Override<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        } catch (IllegalAccessException e) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          throw new RuntimeException(e);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    Class&lt;?&gt; helperClass;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    try {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    } catch (ClassNotFoundException e) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Method convertCipherOptionProtosMethod =<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    return new PBHelper() {<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>      @SuppressWarnings("unchecked")<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      @Override<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        try {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          throw new RuntimeException(e);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        }<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      }<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>      @SuppressWarnings("unchecked")<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          throw new RuntimeException(e);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    };<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  private static TransparentCryptoHelper createTransparentCryptoHelper27()<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      throws NoSuchMethodException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    return new TransparentCryptoHelper() {<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          DFSClient client) throws IOException {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          KeyVersion decryptedKey =<a name="line.237"></a>
+<span class="sourceLineNo">238</span>            (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          return encryptor;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        } catch (InvocationTargetException e) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          throw new RuntimeException(e.getTargetException());<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        } catch (GeneralSecurityException e) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          throw new IOException(e);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        } catch (IllegalAccessException e) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          throw new RuntimeException(e);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    };<a name="line.252"></a>
+<span class="sourceLineNo">253</span>  }<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>  private static TransparentCryptoHelper createTransparentCryptoHelper28()<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      throws ClassNotFoundException, NoSuchMethodException {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Class&lt;?&gt; hdfsKMSUtilCls = Class.forName("org.apache.hadoop.hdfs.HdfsKMSUtil");<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Method decryptEncryptedDataEncryptionKeyMethod = hdfsKMSUtilCls.getDeclaredMethod(<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      "decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class, KeyProvider.class);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    return new TransparentCryptoHelper() {<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>      @Override<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          DFSClient client) throws IOException {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        try {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          KeyVersion decryptedKey = (KeyVersion) decryptEncryptedDataEncryptionKeyMethod<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            .invoke(null, feInfo, client.getKeyProvider());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          return encryptor;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        } catch (InvocationTargetException e) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          throw new RuntimeException(e.getTargetException());<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        } catch (GeneralSecurityException e) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          throw new IOException(e);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        } catch (IllegalAccessException e) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>          throw new RuntimeException(e);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    };<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      throws NoSuchMethodException, ClassNotFoundException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      return createTransparentCryptoHelper27();<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    } catch (NoSuchMethodException e) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      LOG.debug("No decryptEncryptedDataEncryptionKey method in DFSClient, should be hadoop 2.8+",<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        e);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    return createTransparentCryptoHelper28();<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  static {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    try {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      PB_HELPER = createPBHelper();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    } catch (Exception e) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          + "HBASE-16110 for more information.";<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      LOG.error(msg, e);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      throw new Error(msg, e);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  }<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /**<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   */<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    private final char[] password;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    private final String userName;<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>    /**<a name="line.318"></a>
+<span class="sourceLineNo">319</span>     * Creates a new SaslClientCallbackHandler.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>     * @param userName SASL user name<a name="line.320"></a>
+<span class="sourceLineNo">321</span>     * @Param password SASL password<a name="line.321"></a>
+<span class="sourceLineNo">322</span>     */<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      this.password = password;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      this.userName = userName;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>    private final int timeoutMs;<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    private final Promise&lt;Void&gt; promise;<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>    private int step = 0;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      this.conf = conf;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      this.saslProps = saslProps;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      this.timeoutMs = timeoutMs;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      this.promise = promise;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    }<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      sendSaslMessage(ctx, payload, null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      // values for future expansion.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        return null;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    }<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      if (payload != null) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        // and we want to keep that out of hbase-server.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      }<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (options != null) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      int size = proto.getSerializedSize();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      ctx.write(buf);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>    @Override<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      ctx.flush();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      step++;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    }<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      saslClient.dispose();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        throw new IOException(proto.getMessage());<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    private String getNegotiatedQop() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>    private boolean isNegotiatedQopPrivacy() {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      String qop = getNegotiatedQop();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      return qop != null &amp;&amp; "auth-conf".equalsIgnoreCase(qop);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>    private boolean requestedQopContainsPrivacy() {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      Set&lt;String&gt; requestedQop =<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      return requestedQop.contains("auth-conf");<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>    private void checkSaslComplete() throws IOException {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      if (!saslClient.isComplete()) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        throw new IOException("Failed to complete SASL handshake");<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      Set&lt;String&gt; requestedQop =<a name="line.424"></a>
-<span class="sourceLineNo">425</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      String negotiatedQop = getNegotiatedQop();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      LOG.debug(<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        "Verifying QOP, requested QOP = " + requestedQop + ", negotiated QOP = " + negotiatedQop);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (!requestedQop.contains(negotiatedQop)) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        throw new IOException(String.format("SASL handshake completed, but "<a name="line.430"></a>
-<span class="sourceLineNo">431</span>            + "channel does not have acceptable quality of protection, "<a name="line.431"></a>
-<span class="sourceLineNo">432</span>            + "requested = %s, negotiated = %s",<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          requestedQop, negotiatedQop));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>    private boolean useWrap() {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      String qop = (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      return qop != null &amp;&amp; !"auth".equalsIgnoreCase(qop);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    private CipherOption unwrap(CipherOption option, SaslClient saslClient) throws IOException {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      byte[] inKey = option.getInKey();<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      if (inKey != null) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        inKey = saslClient.unwrap(inKey, 0, inKey.length);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      byte[] outKey = option.getOutKey();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      if (outKey != null) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        outKey = saslClient.unwrap(outKey, 0, outKey.length);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      }<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return new CipherOption(option.getCipherSuite(), inKey, option.getInIv(), outKey,<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          option.getOutIv());<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    }<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    private CipherOption getCipherOption(DataTransferEncryptorMessageProto proto,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        boolean isNegotiatedQopPrivacy, SaslClient saslClient) throws IOException {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      List&lt;CipherOption&gt; cipherOptions =<a name="line.457"></a>
-<span class="sourceLineNo">458</span>          PB_HELPER.convertCipherOptionProtos(proto.getCipherOptionList());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      if (cipherOptions == null || cipherOptions.isEmpty()) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        return null;<a name="line.460"></a>
+<span class="sourceLineNo">328</span>    @Override<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      NameCallback nc = null;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      PasswordCallback pc = null;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      RealmCallback rc = null;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      for (Callback callback : callbacks) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>          continue;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        } else if (callback instanceof NameCallback) {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          nc = (NameCallback) callback;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        } else if (callback instanceof PasswordCallback) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>          pc = (PasswordCallback) callback;<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        } else if (callback instanceof RealmCallback) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          rc = (RealmCallback) callback;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        } else {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      if (nc != null) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        nc.setName(userName);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      if (pc != null) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        pc.setPassword(password);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      if (rc != null) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        rc.setText(rc.getDefaultText());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>    private final Configuration conf;<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>    private final SaslClient saslClient;<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    private final int timeoutMs;<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>    private final Promise&lt;Void&gt; promise;<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>    private int step = 0;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      this.conf = conf;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      this.saslProps = saslProps;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      this.timeoutMs = timeoutMs;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      this.promise = promise;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      sendSaslMessage(ctx, payload, null);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      // values for future expansion.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        return null;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.395"></a>
+<span class="sourceLineNo">396</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      if (payload != null) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        // and we want to keep that out of hbase-server.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      if (options != null) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      int size = proto.getSerializedSize();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      ctx.write(buf);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>    @Override<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      ctx.flush();<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      step++;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    @Override<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      saslClient.dispose();<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        throw new IOException(proto.getMessage());<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    private String getNegotiatedQop() {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>    private boolean isNegotiatedQopPrivacy() {<a name="line

<TRUNCATED>

[44/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
index c868bae..520fe9a5d 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
@@ -183,13 +183,13 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterWrapper.FilterRowRetCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">CompareFilter.CompareOp</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">RegexStringComparator.EngineType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterList.Operator.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterList.Operator</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">BitComparator.BitwiseOp</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterWrapper.FilterRowRetCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterList.Operator.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterList.Operator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.DecryptHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.DecryptHandler.html b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.DecryptHandler.html
index 17ba14f..0cdaf25 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.DecryptHandler.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.DecryptHandler.html
@@ -132,7 +132,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.601">FanOutOneBlockAsyncDFSOutputSaslHelper.DecryptHandler</a>
+<pre>private static final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.639">FanOutOneBlockAsyncDFSOutputSaslHelper.DecryptHandler</a>
 extends org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler&lt;org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf&gt;</pre>
 </li>
 </ul>
@@ -266,7 +266,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler
 <ul class="blockListLast">
 <li class="blockList">
 <h4>decryptor</h4>
-<pre>private final&nbsp;org.apache.hadoop.crypto.Decryptor <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.DecryptHandler.html#line.603">decryptor</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.crypto.Decryptor <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.DecryptHandler.html#line.641">decryptor</a></pre>
 </li>
 </ul>
 </li>
@@ -283,7 +283,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DecryptHandler</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.DecryptHandler.html#line.605">DecryptHandler</a>(org.apache.hadoop.crypto.CryptoCodec&nbsp;codec,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.DecryptHandler.html#line.643">DecryptHandler</a>(org.apache.hadoop.crypto.CryptoCodec&nbsp;codec,
                       byte[]&nbsp;key,
                       byte[]&nbsp;iv)
                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/security/GeneralSecurityException.html?is-external=true" title="class or interface in java.security">GeneralSecurityException</a>,
@@ -309,7 +309,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler
 <ul class="blockListLast">
 <li class="blockList">
 <h4>channelRead0</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.DecryptHandler.html#line.612">channelRead0</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.DecryptHandler.html#line.650">channelRead0</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
                             org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf&nbsp;msg)
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler.html b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler.html
index 7cb08c7..fffc44e 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler.html
@@ -132,7 +132,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.634">FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler</a>
+<pre>private static final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.672">FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler</a>
 extends org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder&lt;org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf&gt;</pre>
 </li>
 </ul>
@@ -273,7 +273,7 @@ extends org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder&
 <ul class="blockListLast">
 <li class="blockList">
 <h4>encryptor</h4>
-<pre>private final&nbsp;org.apache.hadoop.crypto.Encryptor <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler.html#line.636">encryptor</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.crypto.Encryptor <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler.html#line.674">encryptor</a></pre>
 </li>
 </ul>
 </li>
@@ -290,7 +290,7 @@ extends org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder&
 <ul class="blockListLast">
 <li class="blockList">
 <h4>EncryptHandler</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler.html#line.638">EncryptHandler</a>(org.apache.hadoop.crypto.CryptoCodec&nbsp;codec,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler.html#line.676">EncryptHandler</a>(org.apache.hadoop.crypto.CryptoCodec&nbsp;codec,
                       byte[]&nbsp;key,
                       byte[]&nbsp;iv)
                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/security/GeneralSecurityException.html?is-external=true" title="class or interface in java.security">GeneralSecurityException</a>,
@@ -316,7 +316,7 @@ extends org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder&
 <ul class="blockList">
 <li class="blockList">
 <h4>allocateBuffer</h4>
-<pre>protected&nbsp;org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler.html#line.645">allocateBuffer</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
+<pre>protected&nbsp;org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler.html#line.683">allocateBuffer</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
                                                                              org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf&nbsp;msg,
                                                                              boolean&nbsp;preferDirect)
                                                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -334,7 +334,7 @@ extends org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder&
 <ul class="blockListLast">
 <li class="blockList">
 <h4>encode</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler.html#line.655">encode</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.EncryptHandler.html#line.693">encode</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
                       org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf&nbsp;msg,
                       org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf&nbsp;out)
                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper.html b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper.html
index b26b7ff..257000b 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper.html
@@ -105,7 +105,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.135">FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper</a></pre>
+<pre>private static interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.132">FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper</a></pre>
 </li>
 </ul>
 </div>
@@ -153,7 +153,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockList">
 <li class="blockList">
 <h4>convertCipherOptions</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper.html#line.137">convertCipherOptions</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.crypto.CipherOption&gt;&nbsp;options)</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper.html#line.134">convertCipherOptions</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.crypto.CipherOption&gt;&nbsp;options)</pre>
 </li>
 </ul>
 <a name="convertCipherOptionProtos-java.util.List-">
@@ -162,7 +162,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>convertCipherOptionProtos</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.crypto.CipherOption&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper.html#line.139">convertCipherOptionProtos</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto&gt;&nbsp;options)</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.crypto.CipherOption&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper.html#line.136">convertCipherOptionProtos</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto&gt;&nbsp;options)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html
index 25179a9..109781f 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html
@@ -105,7 +105,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.123">FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor</a></pre>
+<pre>private static interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.120">FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor</a></pre>
 </li>
 </ul>
 </div>
@@ -157,7 +157,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockList">
 <li class="blockList">
 <h4>getTrustedChannelResolver</h4>
-<pre>org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html#line.125">getTrustedChannelResolver</a>(org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient&nbsp;saslClient)</pre>
+<pre>org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html#line.122">getTrustedChannelResolver</a>(org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient&nbsp;saslClient)</pre>
 </li>
 </ul>
 <a name="getSaslPropsResolver-org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient-">
@@ -166,7 +166,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockList">
 <li class="blockList">
 <h4>getSaslPropsResolver</h4>
-<pre>org.apache.hadoop.security.SaslPropertiesResolver&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html#line.127">getSaslPropsResolver</a>(org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient&nbsp;saslClient)</pre>
+<pre>org.apache.hadoop.security.SaslPropertiesResolver&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html#line.124">getSaslPropsResolver</a>(org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient&nbsp;saslClient)</pre>
 </li>
 </ul>
 <a name="getFallbackToSimpleAuth-org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient-">
@@ -175,7 +175,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getFallbackToSimpleAuth</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html#line.129">getFallbackToSimpleAuth</a>(org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient&nbsp;saslClient)</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html#line.126">getFallbackToSimpleAuth</a>(org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient&nbsp;saslClient)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler.html b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler.html
index eb48a2b..ebf9634 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.275">FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler</a>
+<pre>private static final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.313">FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="https://docs.oracle.com/javase/8/docs/api/javax/security/auth/callback/CallbackHandler.html?is-external=true" title="class or interface in javax.security.auth.callback">CallbackHandler</a></pre>
 <div class="block">Sets user name and password when asked by the client-side SASL object.</div>
@@ -214,7 +214,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/javax/security/aut
 <ul class="blockList">
 <li class="blockList">
 <h4>password</h4>
-<pre>private final&nbsp;char[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler.html#line.277">password</a></pre>
+<pre>private final&nbsp;char[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler.html#line.315">password</a></pre>
 </li>
 </ul>
 <a name="userName">
@@ -223,7 +223,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/javax/security/aut
 <ul class="blockListLast">
 <li class="blockList">
 <h4>userName</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler.html#line.278">userName</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler.html#line.316">userName</a></pre>
 </li>
 </ul>
 </li>
@@ -240,7 +240,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/javax/security/aut
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SaslClientCallbackHandler</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler.html#line.285">SaslClientCallbackHandler</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;userName,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler.html#line.323">SaslClientCallbackHandler</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;userName,
                                  char[]&nbsp;password)</pre>
 <div class="block">Creates a new SaslClientCallbackHandler.</div>
 <dl>
@@ -263,7 +263,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/javax/security/aut
 <ul class="blockListLast">
 <li class="blockList">
 <h4>handle</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler.html#line.291">handle</a>(<a href="https://docs.oracle.com/javase/8/docs/api/javax/security/auth/callback/Callback.html?is-external=true" title="class or interface in javax.security.auth.callback">Callback</a>[]&nbsp;callbacks)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler.html#line.329">handle</a>(<a href="https://docs.oracle.com/javase/8/docs/api/javax/security/auth/callback/Callback.html?is-external=true" title="class or interface in javax.security.auth.callback">Callback</a>[]&nbsp;callbacks)
             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                    <a href="https://docs.oracle.com/javase/8/docs/api/javax/security/auth/callback/UnsupportedCallbackException.html?is-external=true" title="class or interface in javax.security.auth.callback">UnsupportedCallbackException</a></pre>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html
index 2ace10b..f835c13 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html
@@ -132,7 +132,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.320">FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler</a>
+<pre>private static final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.358">FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler</a>
 extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 </li>
 </ul>
@@ -357,7 +357,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>private final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.322">conf</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.360">conf</a></pre>
 </li>
 </ul>
 <a name="saslProps">
@@ -366,7 +366,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>saslProps</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.324">saslProps</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.362">saslProps</a></pre>
 </li>
 </ul>
 <a name="saslClient">
@@ -375,7 +375,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>saslClient</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/javax/security/sasl/SaslClient.html?is-external=true" title="class or interface in javax.security.sasl">SaslClient</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.326">saslClient</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/javax/security/sasl/SaslClient.html?is-external=true" title="class or interface in javax.security.sasl">SaslClient</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.364">saslClient</a></pre>
 </li>
 </ul>
 <a name="timeoutMs">
@@ -384,7 +384,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>timeoutMs</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.328">timeoutMs</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.366">timeoutMs</a></pre>
 </li>
 </ul>
 <a name="promise">
@@ -393,7 +393,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>promise</h4>
-<pre>private final&nbsp;org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.330">promise</a></pre>
+<pre>private final&nbsp;org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.368">promise</a></pre>
 </li>
 </ul>
 <a name="step">
@@ -402,7 +402,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>step</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.332">step</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.370">step</a></pre>
 </li>
 </ul>
 </li>
@@ -419,7 +419,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SaslNegotiateHandler</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.334">SaslNegotiateHandler</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.372">SaslNegotiateHandler</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;username,
                             char[]&nbsp;password,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;saslProps,
@@ -446,7 +446,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>sendSaslMessage</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.344">sendSaslMessage</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.382">sendSaslMessage</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
                              byte[]&nbsp;payload)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -461,7 +461,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getCipherOptions</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.crypto.CipherOption&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.348">getCipherOptions</a>()
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.crypto.CipherOption&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.386">getCipherOptions</a>()
                                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -475,7 +475,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>sendSaslMessage</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.363">sendSaslMessage</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.401">sendSaslMessage</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
                              byte[]&nbsp;payload,
                              <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.crypto.CipherOption&gt;&nbsp;options)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -491,7 +491,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>handlerAdded</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.385">handlerAdded</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.423">handlerAdded</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx)
                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -509,7 +509,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>channelInactive</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.393">channelInactive</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.431">channelInactive</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx)
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -527,7 +527,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>check</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.397">check</a>(org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto&nbsp;proto)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.435">check</a>(org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto&nbsp;proto)
             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -541,7 +541,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getNegotiatedQop</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.405">getNegotiatedQop</a>()</pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.443">getNegotiatedQop</a>()</pre>
 </li>
 </ul>
 <a name="isNegotiatedQopPrivacy--">
@@ -550,7 +550,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>isNegotiatedQopPrivacy</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.409">isNegotiatedQopPrivacy</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.447">isNegotiatedQopPrivacy</a>()</pre>
 </li>
 </ul>
 <a name="requestedQopContainsPrivacy--">
@@ -559,7 +559,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>requestedQopContainsPrivacy</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.414">requestedQopContainsPrivacy</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.452">requestedQopContainsPrivacy</a>()</pre>
 </li>
 </ul>
 <a name="checkSaslComplete--">
@@ -568,7 +568,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>checkSaslComplete</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.420">checkSaslComplete</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.458">checkSaslComplete</a>()
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -582,7 +582,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>useWrap</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.437">useWrap</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.475">useWrap</a>()</pre>
 </li>
 </ul>
 <a name="unwrap-org.apache.hadoop.crypto.CipherOption-javax.security.sasl.SaslClient-">
@@ -591,7 +591,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>unwrap</h4>
-<pre>private&nbsp;org.apache.hadoop.crypto.CipherOption&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.442">unwrap</a>(org.apache.hadoop.crypto.CipherOption&nbsp;option,
+<pre>private&nbsp;org.apache.hadoop.crypto.CipherOption&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.480">unwrap</a>(org.apache.hadoop.crypto.CipherOption&nbsp;option,
                                                      <a href="https://docs.oracle.com/javase/8/docs/api/javax/security/sasl/SaslClient.html?is-external=true" title="class or interface in javax.security.sasl">SaslClient</a>&nbsp;saslClient)
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -606,7 +606,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getCipherOption</h4>
-<pre>private&nbsp;org.apache.hadoop.crypto.CipherOption&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.455">getCipherOption</a>(org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto&nbsp;proto,
+<pre>private&nbsp;org.apache.hadoop.crypto.CipherOption&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.493">getCipherOption</a>(org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto&nbsp;proto,
                                                               boolean&nbsp;isNegotiatedQopPrivacy,
                                                               <a href="https://docs.oracle.com/javase/8/docs/api/javax/security/sasl/SaslClient.html?is-external=true" title="class or interface in javax.security.sasl">SaslClient</a>&nbsp;saslClient)
                                                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -622,7 +622,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>channelRead</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.467">channelRead</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.505">channelRead</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;msg)
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
@@ -641,7 +641,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>exceptionCaught</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.516">exceptionCaught</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.554">exceptionCaught</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;cause)
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
@@ -662,7 +662,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>userEventTriggered</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.521">userEventTriggered</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html#line.559">userEventTriggered</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
                                <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;evt)
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler.html b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler.html
index 3ca8c9f..2ff4512 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler.html
@@ -132,7 +132,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.530">FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler</a>
+<pre>private static final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.568">FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler</a>
 extends org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler&lt;org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf&gt;</pre>
 </li>
 </ul>
@@ -268,7 +268,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler
 <ul class="blockListLast">
 <li class="blockList">
 <h4>saslClient</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/javax/security/sasl/SaslClient.html?is-external=true" title="class or interface in javax.security.sasl">SaslClient</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler.html#line.532">saslClient</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/javax/security/sasl/SaslClient.html?is-external=true" title="class or interface in javax.security.sasl">SaslClient</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler.html#line.570">saslClient</a></pre>
 </li>
 </ul>
 </li>
@@ -285,7 +285,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SaslUnwrapHandler</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler.html#line.534">SaslUnwrapHandler</a>(<a href="https://docs.oracle.com/javase/8/docs/api/javax/security/sasl/SaslClient.html?is-external=true" title="class or interface in javax.security.sasl">SaslClient</a>&nbsp;saslClient)</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler.html#line.572">SaslUnwrapHandler</a>(<a href="https://docs.oracle.com/javase/8/docs/api/javax/security/sasl/SaslClient.html?is-external=true" title="class or interface in javax.security.sasl">SaslClient</a>&nbsp;saslClient)</pre>
 </li>
 </ul>
 </li>
@@ -302,7 +302,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler
 <ul class="blockList">
 <li class="blockList">
 <h4>channelInactive</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler.html#line.539">channelInactive</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler.html#line.577">channelInactive</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx)
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -320,7 +320,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler
 <ul class="blockListLast">
 <li class="blockList">
 <h4>channelRead0</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler.html#line.544">channelRead0</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler.html#line.582">channelRead0</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
                             org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf&nbsp;msg)
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html
index 2760a0c..8987cd5 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.552">FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler</a>
+<pre>private static final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.590">FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler</a>
 extends org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter</pre>
 </li>
 </ul>
@@ -270,7 +270,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapt
 <ul class="blockList">
 <li class="blockList">
 <h4>saslClient</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/javax/security/sasl/SaslClient.html?is-external=true" title="class or interface in javax.security.sasl">SaslClient</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html#line.554">saslClient</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/javax/security/sasl/SaslClient.html?is-external=true" title="class or interface in javax.security.sasl">SaslClient</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html#line.592">saslClient</a></pre>
 </li>
 </ul>
 <a name="cBuf">
@@ -279,7 +279,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapt
 <ul class="blockListLast">
 <li class="blockList">
 <h4>cBuf</h4>
-<pre>private&nbsp;org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html#line.556">cBuf</a></pre>
+<pre>private&nbsp;org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html#line.594">cBuf</a></pre>
 </li>
 </ul>
 </li>
@@ -296,7 +296,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapt
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SaslWrapHandler</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html#line.558">SaslWrapHandler</a>(<a href="https://docs.oracle.com/javase/8/docs/api/javax/security/sasl/SaslClient.html?is-external=true" title="class or interface in javax.security.sasl">SaslClient</a>&nbsp;saslClient)</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html#line.596">SaslWrapHandler</a>(<a href="https://docs.oracle.com/javase/8/docs/api/javax/security/sasl/SaslClient.html?is-external=true" title="class or interface in javax.security.sasl">SaslClient</a>&nbsp;saslClient)</pre>
 </li>
 </ul>
 </li>
@@ -313,7 +313,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapt
 <ul class="blockList">
 <li class="blockList">
 <h4>handlerAdded</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html#line.563">handlerAdded</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html#line.601">handlerAdded</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx)
                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -331,7 +331,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapt
 <ul class="blockList">
 <li class="blockList">
 <h4>write</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html#line.568">write</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html#line.606">write</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;msg,
                   org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise&nbsp;promise)
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -351,7 +351,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapt
 <ul class="blockList">
 <li class="blockList">
 <h4>flush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html#line.580">flush</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html#line.618">flush</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx)
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -369,7 +369,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapt
 <ul class="blockListLast">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html#line.595">close</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html#line.633">close</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
                   org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise&nbsp;promise)
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html
index 1f87fbc..fa1407e 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html
@@ -105,7 +105,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.144">FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper</a></pre>
+<pre>private static interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.141">FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper</a></pre>
 </li>
 </ul>
 </div>
@@ -151,7 +151,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>createEncryptor</h4>
-<pre>org.apache.hadoop.crypto.Encryptor&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html#line.146">createEncryptor</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>org.apache.hadoop.crypto.Encryptor&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html#line.143">createEncryptor</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                    org.apache.hadoop.fs.FileEncryptionInfo&nbsp;feInfo,
                                                    org.apache.hadoop.hdfs.DFSClient&nbsp;client)
                                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>


[06/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html
index f118c08..cd9722f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html
@@ -206,140 +206,175 @@
 <span class="sourceLineNo">198</span>   */<a name="line.198"></a>
 <span class="sourceLineNo">199</span>  public static int validateBlockAddition(Cacheable existing, Cacheable newBlock,<a name="line.199"></a>
 <span class="sourceLineNo">200</span>                                          BlockCacheKey cacheKey) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    int comparison = compareCacheBlock(existing, newBlock, true);<a name="line.201"></a>
+<span class="sourceLineNo">201</span>    int comparison = compareCacheBlock(existing, newBlock, false);<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    if (comparison != 0) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      LOG.warn("Cached block contents differ, trying to just compare the block contents " +<a name="line.203"></a>
-<span class="sourceLineNo">204</span>          "without the next block. CacheKey: " + cacheKey);<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>      // compare the contents, if they are not equal, we are in big trouble<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      int comparisonWithoutNextBlockMetadata = compareCacheBlock(existing, newBlock, false);<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>      if (comparisonWithoutNextBlockMetadata != 0) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        throw new RuntimeException("Cached block contents differ, which should not have happened."<a name="line.210"></a>
-<span class="sourceLineNo">211</span>            + "cacheKey:" + cacheKey);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    }<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    return comparison;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>  /**<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * Use one of these to keep a running account of cached blocks by file.  Throw it away when done.<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * This is different than metrics in that it is stats on current state of a cache.<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   * See getLoadedCachedBlocksByFile<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   */<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  @JsonIgnoreProperties({"cachedBlockStatsByFile"})<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  public static class CachedBlocksByFile {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    private int count;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    private int dataBlockCount;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    private long size;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    private long dataSize;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    private final long now = System.nanoTime();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    /**<a name="line.229"></a>
-<span class="sourceLineNo">230</span>     * How many blocks to look at before we give up.<a name="line.230"></a>
-<span class="sourceLineNo">231</span>     * There could be many millions of blocks. We don't want the<a name="line.231"></a>
-<span class="sourceLineNo">232</span>     * ui to freeze while we run through 1B blocks... users will<a name="line.232"></a>
-<span class="sourceLineNo">233</span>     * think hbase dead. UI displays warning in red when stats<a name="line.233"></a>
-<span class="sourceLineNo">234</span>     * are incomplete.<a name="line.234"></a>
-<span class="sourceLineNo">235</span>     */<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    private final int max;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    public static final int DEFAULT_MAX = 1000000;<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    CachedBlocksByFile() {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      this(null);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    }<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>    CachedBlocksByFile(final Configuration c) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      this.max = c == null? DEFAULT_MAX: c.getInt("hbase.ui.blockcache.by.file.max", DEFAULT_MAX);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span>     * Map by filename. use concurent utils because we want our Map and contained blocks sorted.<a name="line.248"></a>
-<span class="sourceLineNo">249</span>     */<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    private NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; cachedBlockByFile = new ConcurrentSkipListMap&lt;&gt;();<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    FastLongHistogram hist = new FastLongHistogram();<a name="line.251"></a>
-<span class="sourceLineNo">252</span><a name="line.252"></a>
-<span class="sourceLineNo">253</span>    /**<a name="line.253"></a>
-<span class="sourceLineNo">254</span>     * @param cb<a name="line.254"></a>
-<span class="sourceLineNo">255</span>     * @return True if full.... if we won't be adding any more.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>     */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    public boolean update(final CachedBlock cb) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      if (isFull()) return true;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      NavigableSet&lt;CachedBlock&gt; set = this.cachedBlockByFile.get(cb.getFilename());<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      if (set == null) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        set = new ConcurrentSkipListSet&lt;&gt;();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        this.cachedBlockByFile.put(cb.getFilename(), set);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      }<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      set.add(cb);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      this.size += cb.getSize();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      this.count++;<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      BlockType bt = cb.getBlockType();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      if (bt != null &amp;&amp; bt.isData()) {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        this.dataBlockCount++;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        this.dataSize += cb.getSize();<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      }<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      long age = (this.now - cb.getCachedTime())/NANOS_PER_SECOND;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      this.hist.add(age, 1);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      return false;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    /**<a name="line.277"></a>
-<span class="sourceLineNo">278</span>     * @return True if full; i.e. there are more items in the cache but we only loaded up<a name="line.278"></a>
-<span class="sourceLineNo">279</span>     * the maximum set in configuration &lt;code&gt;hbase.ui.blockcache.by.file.max&lt;/code&gt;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>     * (Default: DEFAULT_MAX).<a name="line.280"></a>
-<span class="sourceLineNo">281</span>     */<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    public boolean isFull() {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      return this.count &gt;= this.max;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    public NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; getCachedBlockStatsByFile() {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      return this.cachedBlockByFile;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    /**<a name="line.290"></a>
-<span class="sourceLineNo">291</span>     * @return count of blocks in the cache<a name="line.291"></a>
-<span class="sourceLineNo">292</span>     */<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    public int getCount() {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      return count;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    }<a name="line.295"></a>
-<span class="sourceLineNo">296</span><a name="line.296"></a>
-<span class="sourceLineNo">297</span>    public int getDataCount() {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      return dataBlockCount;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    /**<a name="line.301"></a>
-<span class="sourceLineNo">302</span>     * @return size of blocks in the cache<a name="line.302"></a>
-<span class="sourceLineNo">303</span>     */<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    public long getSize() {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      return size;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
-<span class="sourceLineNo">307</span><a name="line.307"></a>
-<span class="sourceLineNo">308</span>    /**<a name="line.308"></a>
-<span class="sourceLineNo">309</span>     * @return Size of data.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>     */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    public long getDataSize() {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      return dataSize;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>    public AgeSnapshot getAgeInCacheSnapshot() {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      return new AgeSnapshot(this.hist);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>    @Override<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    public String toString() {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      AgeSnapshot snapshot = getAgeInCacheSnapshot();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      return "count=" + count + ", dataBlockCount=" + dataBlockCount + ", size=" + size +<a name="line.322"></a>
-<span class="sourceLineNo">323</span>          ", dataSize=" + getDataSize() +<a name="line.323"></a>
-<span class="sourceLineNo">324</span>          ", mean age=" + snapshot.getMean() +<a name="line.324"></a>
-<span class="sourceLineNo">325</span>          ", min age=" + snapshot.getMin() +<a name="line.325"></a>
-<span class="sourceLineNo">326</span>          ", max age=" + snapshot.getMax() +<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          ", 75th percentile age="   + snapshot.get75thPercentile() +<a name="line.327"></a>
-<span class="sourceLineNo">328</span>          ", 95th percentile age="   + snapshot.get95thPercentile() +<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          ", 98th percentile age="   + snapshot.get98thPercentile() +<a name="line.329"></a>
-<span class="sourceLineNo">330</span>          ", 99th percentile age="   + snapshot.get99thPercentile() +<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          ", 99.9th percentile age=" + snapshot.get99thPercentile();<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>}<a name="line.334"></a>
+<span class="sourceLineNo">203</span>      throw new RuntimeException("Cached block contents differ, which should not have happened."<a name="line.203"></a>
+<span class="sourceLineNo">204</span>                                 + "cacheKey:" + cacheKey);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    if ((existing instanceof HFileBlock) &amp;&amp; (newBlock instanceof HFileBlock)) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      comparison = ((HFileBlock) existing).getNextBlockOnDiskSize()<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          - ((HFileBlock) newBlock).getNextBlockOnDiskSize();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    }<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    return comparison;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>  /**<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   * Because of the region splitting, it's possible that the split key locate in the middle of a<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   * block. So it's possible that both the daughter regions load the same block from their parent<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * HFile. When pread, we don't force the read to read all of the next block header. So when two<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   * threads try to cache the same block, it's possible that one thread read all of the next block<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * header but the other one didn't. if the already cached block hasn't next block header but the<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   * new block to cache has, then we can replace the existing block with the new block for better<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   * performance.(HBASE-20447)<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   * @param blockCache BlockCache to check<a name="line.221"></a>
+<span class="sourceLineNo">222</span>   * @param cacheKey the block cache key<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * @param newBlock the new block which try to put into the block cache.<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @return true means need to replace existing block with new block for the same block cache key.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   *         false means just keep the existing block.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   */<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public static boolean shouldReplaceExistingCacheBlock(BlockCache blockCache,<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      BlockCacheKey cacheKey, Cacheable newBlock) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    Cacheable existingBlock = blockCache.getBlock(cacheKey, false, false, false);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    try {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      int comparison = BlockCacheUtil.validateBlockAddition(existingBlock, newBlock, cacheKey);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      if (comparison &lt; 0) {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        LOG.warn("Cached block contents differ by nextBlockOnDiskSize, the new block has "<a name="line.233"></a>
+<span class="sourceLineNo">234</span>            + "nextBlockOnDiskSize set. Caching new block.");<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        return true;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      } else if (comparison &gt; 0) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        LOG.warn("Cached block contents differ by nextBlockOnDiskSize, the existing block has "<a name="line.237"></a>
+<span class="sourceLineNo">238</span>            + "nextBlockOnDiskSize set, Keeping cached block.");<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        return false;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      } else {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        LOG.warn("Caching an already cached block: {}. This is harmless and can happen in rare "<a name="line.241"></a>
+<span class="sourceLineNo">242</span>            + "cases (see HBASE-8547)",<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          cacheKey);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        return false;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    } finally {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      // return the block since we need to decrement the count<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      blockCache.returnBlock(cacheKey, existingBlock);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
+<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
+<span class="sourceLineNo">251</span><a name="line.251"></a>
+<span class="sourceLineNo">252</span>  /**<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   * Use one of these to keep a running account of cached blocks by file.  Throw it away when done.<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * This is different than metrics in that it is stats on current state of a cache.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * See getLoadedCachedBlocksByFile<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  @JsonIgnoreProperties({"cachedBlockStatsByFile"})<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public static class CachedBlocksByFile {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    private int count;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    private int dataBlockCount;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    private long size;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    private long dataSize;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    private final long now = System.nanoTime();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    /**<a name="line.264"></a>
+<span class="sourceLineNo">265</span>     * How many blocks to look at before we give up.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>     * There could be many millions of blocks. We don't want the<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * ui to freeze while we run through 1B blocks... users will<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     * think hbase dead. UI displays warning in red when stats<a name="line.268"></a>
+<span class="sourceLineNo">269</span>     * are incomplete.<a name="line.269"></a>
+<span class="sourceLineNo">270</span>     */<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    private final int max;<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    public static final int DEFAULT_MAX = 1000000;<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>    CachedBlocksByFile() {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      this(null);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    CachedBlocksByFile(final Configuration c) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      this.max = c == null? DEFAULT_MAX: c.getInt("hbase.ui.blockcache.by.file.max", DEFAULT_MAX);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>    /**<a name="line.282"></a>
+<span class="sourceLineNo">283</span>     * Map by filename. use concurent utils because we want our Map and contained blocks sorted.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>     */<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    private NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; cachedBlockByFile = new ConcurrentSkipListMap&lt;&gt;();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    FastLongHistogram hist = new FastLongHistogram();<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>    /**<a name="line.288"></a>
+<span class="sourceLineNo">289</span>     * @param cb<a name="line.289"></a>
+<span class="sourceLineNo">290</span>     * @return True if full.... if we won't be adding any more.<a name="line.290"></a>
+<span class="sourceLineNo">291</span>     */<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    public boolean update(final CachedBlock cb) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      if (isFull()) return true;<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      NavigableSet&lt;CachedBlock&gt; set = this.cachedBlockByFile.get(cb.getFilename());<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      if (set == null) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        set = new ConcurrentSkipListSet&lt;&gt;();<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        this.cachedBlockByFile.put(cb.getFilename(), set);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      }<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      set.add(cb);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      this.size += cb.getSize();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      this.count++;<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      BlockType bt = cb.getBlockType();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      if (bt != null &amp;&amp; bt.isData()) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        this.dataBlockCount++;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        this.dataSize += cb.getSize();<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      long age = (this.now - cb.getCachedTime())/NANOS_PER_SECOND;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      this.hist.add(age, 1);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      return false;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
+<span class="sourceLineNo">311</span><a name="line.311"></a>
+<span class="sourceLineNo">312</span>    /**<a name="line.312"></a>
+<span class="sourceLineNo">313</span>     * @return True if full; i.e. there are more items in the cache but we only loaded up<a name="line.313"></a>
+<span class="sourceLineNo">314</span>     * the maximum set in configuration &lt;code&gt;hbase.ui.blockcache.by.file.max&lt;/code&gt;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>     * (Default: DEFAULT_MAX).<a name="line.315"></a>
+<span class="sourceLineNo">316</span>     */<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    public boolean isFull() {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      return this.count &gt;= this.max;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>    public NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; getCachedBlockStatsByFile() {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      return this.cachedBlockByFile;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>    /**<a name="line.325"></a>
+<span class="sourceLineNo">326</span>     * @return count of blocks in the cache<a name="line.326"></a>
+<span class="sourceLineNo">327</span>     */<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    public int getCount() {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      return count;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>    public int getDataCount() {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      return dataBlockCount;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>    /**<a name="line.336"></a>
+<span class="sourceLineNo">337</span>     * @return size of blocks in the cache<a name="line.337"></a>
+<span class="sourceLineNo">338</span>     */<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    public long getSize() {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return size;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
+<span class="sourceLineNo">342</span><a name="line.342"></a>
+<span class="sourceLineNo">343</span>    /**<a name="line.343"></a>
+<span class="sourceLineNo">344</span>     * @return Size of data.<a name="line.344"></a>
+<span class="sourceLineNo">345</span>     */<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    public long getDataSize() {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      return dataSize;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>    public AgeSnapshot getAgeInCacheSnapshot() {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      return new AgeSnapshot(this.hist);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    public String toString() {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      AgeSnapshot snapshot = getAgeInCacheSnapshot();<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      return "count=" + count + ", dataBlockCount=" + dataBlockCount + ", size=" + size +<a name="line.357"></a>
+<span class="sourceLineNo">358</span>          ", dataSize=" + getDataSize() +<a name="line.358"></a>
+<span class="sourceLineNo">359</span>          ", mean age=" + snapshot.getMean() +<a name="line.359"></a>
+<span class="sourceLineNo">360</span>          ", min age=" + snapshot.getMin() +<a name="line.360"></a>
+<span class="sourceLineNo">361</span>          ", max age=" + snapshot.getMax() +<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          ", 75th percentile age="   + snapshot.get75thPercentile() +<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          ", 95th percentile age="   + snapshot.get95thPercentile() +<a name="line.363"></a>
+<span class="sourceLineNo">364</span>          ", 98th percentile age="   + snapshot.get98thPercentile() +<a name="line.364"></a>
+<span class="sourceLineNo">365</span>          ", 99th percentile age="   + snapshot.get99thPercentile() +<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          ", 99.9th percentile age=" + snapshot.get99thPercentile();<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    }<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>}<a name="line.369"></a>
 
 
 


[03/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html
index 67f4551..017124c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html
@@ -387,817 +387,804 @@
 <span class="sourceLineNo">379</span>    }<a name="line.379"></a>
 <span class="sourceLineNo">380</span><a name="line.380"></a>
 <span class="sourceLineNo">381</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    if (cb != null) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      int comparison = BlockCacheUtil.validateBlockAddition(cb.getBuffer(), buf, cacheKey);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      if (comparison != 0) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        if (comparison &lt; 0) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          LOG.warn("Cached block contents differ by nextBlockOnDiskSize. Keeping cached block.");<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          return;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        } else {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          LOG.warn("Cached block contents differ by nextBlockOnDiskSize. Caching new block.");<a name="line.389"></a>
-<span class="sourceLineNo">390</span>        }<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      } else {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        String msg = "Cached an already cached block: " + cacheKey + " cb:" + cb.getCacheKey();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        msg += ". This is harmless and can happen in rare cases (see HBASE-8547)";<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        LOG.debug(msg);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>        return;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    long currentSize = size.get();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    long currentAcceptableSize = acceptableSize();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    long hardLimitSize = (long) (hardCapacityLimitFactor * currentAcceptableSize);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    if (currentSize &gt;= hardLimitSize) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      stats.failInsert();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      if (LOG.isTraceEnabled()) {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        LOG.trace("LruBlockCache current size " + StringUtils.byteDesc(currentSize)<a name="line.404"></a>
-<span class="sourceLineNo">405</span>          + " has exceeded acceptable size " + StringUtils.byteDesc(currentAcceptableSize) + "."<a name="line.405"></a>
-<span class="sourceLineNo">406</span>          + " The hard limit size is " + StringUtils.byteDesc(hardLimitSize)<a name="line.406"></a>
-<span class="sourceLineNo">407</span>          + ", failed to put cacheKey:" + cacheKey + " into LruBlockCache.");<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      }<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      if (!evictionInProgress) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        runEviction();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      }<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      return;<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    cb = new LruCachedBlock(cacheKey, buf, count.incrementAndGet(), inMemory);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    long newSize = updateSizeMetrics(cb, false);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    map.put(cacheKey, cb);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    long val = elements.incrementAndGet();<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    if (buf.getBlockType().isData()) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>       dataBlockElements.increment();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    if (LOG.isTraceEnabled()) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      long size = map.size();<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      assertCounterSanity(size, val);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    if (newSize &gt; currentAcceptableSize &amp;&amp; !evictionInProgress) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      runEviction();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>  }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>  /**<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * Sanity-checking for parity between actual block cache content and metrics.<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   * Intended only for use with TRACE level logging and -ea JVM.<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   */<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  private static void assertCounterSanity(long mapSize, long counterVal) {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if (counterVal &lt; 0) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      LOG.trace("counterVal overflow. Assertions unreliable. counterVal=" + counterVal +<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        ", mapSize=" + mapSize);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      return;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    if (mapSize &lt; Integer.MAX_VALUE) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      double pct_diff = Math.abs((((double) counterVal) / ((double) mapSize)) - 1.);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      if (pct_diff &gt; 0.05) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        LOG.trace("delta between reported and actual size &gt; 5%. counterVal=" + counterVal +<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          ", mapSize=" + mapSize);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>  /**<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * Cache the block with the specified name and buffer.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * &lt;p&gt;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   *<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * @param cacheKey block's cache key<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @param buf      block buffer<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   */<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  @Override<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  public void cacheBlock(BlockCacheKey cacheKey, Cacheable buf) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    cacheBlock(cacheKey, buf, false);<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  }<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>  /**<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * Helper function that updates the local size counter and also updates any<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * per-cf or per-blocktype metrics it can discern from given<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * {@link LruCachedBlock}<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  private long updateSizeMetrics(LruCachedBlock cb, boolean evict) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    long heapsize = cb.heapSize();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    BlockType bt = cb.getBuffer().getBlockType();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    if (evict) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      heapsize *= -1;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    if (bt != null &amp;&amp; bt.isData()) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>       dataBlockSize.add(heapsize);<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    return size.addAndGet(heapsize);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  /**<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * Get the buffer of the block with the specified name.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   *<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @param cacheKey           block's cache key<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * @param caching            true if the caller caches blocks on cache misses<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @param repeat             Whether this is a repeat lookup for the same block<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   *                           (used to avoid double counting cache misses when doing double-check<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   *                           locking)<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @param updateCacheMetrics Whether to update cache metrics or not<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   *<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @return buffer of specified cache key, or null if not in cache<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  @Override<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  public Cacheable getBlock(BlockCacheKey cacheKey, boolean caching, boolean repeat,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      boolean updateCacheMetrics) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    if (cb == null) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      if (!repeat &amp;&amp; updateCacheMetrics) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        stats.miss(caching, cacheKey.isPrimary(), cacheKey.getBlockType());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      }<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      // If there is another block cache then try and read there.<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      // However if this is a retry ( second time in double checked locking )<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      // And it's already a miss then the l2 will also be a miss.<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      if (victimHandler != null &amp;&amp; !repeat) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>        Cacheable result = victimHandler.getBlock(cacheKey, caching, repeat, updateCacheMetrics);<a name="line.502"></a>
-<span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span>        // Promote this to L1.<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        if (result != null &amp;&amp; caching) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>          if (result instanceof HFileBlock &amp;&amp; ((HFileBlock) result).usesSharedMemory()) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>            result = ((HFileBlock) result).deepClone();<a name="line.507"></a>
-<span class="sourceLineNo">508</span>          }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>          cacheBlock(cacheKey, result, /* inMemory = */ false);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        return result;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      }<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      return null;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    if (updateCacheMetrics) stats.hit(caching, cacheKey.isPrimary(), cacheKey.getBlockType());<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    cb.access(count.incrementAndGet());<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    return cb.getBuffer();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>  /**<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * Whether the cache contains block with specified cacheKey<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   *<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @return true if contains the block<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   */<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  public boolean containsBlock(BlockCacheKey cacheKey) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    return map.containsKey(cacheKey);<a name="line.526"></a>
-<span class="sourceLineNo">527</span>  }<a name="line.527"></a>
-<span class="sourceLineNo">528</span><a name="line.528"></a>
-<span class="sourceLineNo">529</span>  @Override<a name="line.529"></a>
-<span class="sourceLineNo">530</span>  public boolean evictBlock(BlockCacheKey cacheKey) {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    return cb != null &amp;&amp; evictBlock(cb, false) &gt; 0;<a name="line.532"></a>
-<span class="sourceLineNo">533</span>  }<a name="line.533"></a>
-<span class="sourceLineNo">534</span><a name="line.534"></a>
-<span class="sourceLineNo">535</span>  /**<a name="line.535"></a>
-<span class="sourceLineNo">536</span>   * Evicts all blocks for a specific HFile. This is an<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * expensive operation implemented as a linear-time search through all blocks<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * in the cache. Ideally this should be a search in a log-access-time map.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   *<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * &lt;p&gt;<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   * This is used for evict-on-close to remove all blocks of a specific HFile.<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   *<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * @return the number of blocks evicted<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   */<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  @Override<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  public int evictBlocksByHfileName(String hfileName) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    int numEvicted = 0;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    for (BlockCacheKey key : map.keySet()) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      if (key.getHfileName().equals(hfileName)) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        if (evictBlock(key))<a name="line.550"></a>
-<span class="sourceLineNo">551</span>          ++numEvicted;<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      }<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    }<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    if (victimHandler != null) {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      numEvicted += victimHandler.evictBlocksByHfileName(hfileName);<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    }<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    return numEvicted;<a name="line.557"></a>
-<span class="sourceLineNo">558</span>  }<a name="line.558"></a>
-<span class="sourceLineNo">559</span><a name="line.559"></a>
-<span class="sourceLineNo">560</span>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * Evict the block, and it will be cached by the victim handler if exists &amp;amp;&amp;amp;<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * block may be read again later<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   *<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param evictedByEvictionProcess true if the given block is evicted by<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   *          EvictionThread<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   * @return the heap size of evicted block<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   */<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  protected long evictBlock(LruCachedBlock block, boolean evictedByEvictionProcess) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    boolean found = map.remove(block.getCacheKey()) != null;<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    if (!found) {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      return 0;<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    }<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    updateSizeMetrics(block, true);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    long val = elements.decrementAndGet();<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    if (LOG.isTraceEnabled()) {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      long size = map.size();<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      assertCounterSanity(size, val);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span>    if (block.getBuffer().getBlockType().isData()) {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>       dataBlockElements.decrement();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    if (evictedByEvictionProcess) {<a name="line.582"></a>
-<span class="sourceLineNo">583</span>      // When the eviction of the block happened because of invalidation of HFiles, no need to<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      // update the stats counter.<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      stats.evicted(block.getCachedTime(), block.getCacheKey().isPrimary());<a name="line.585"></a>
-<span class="sourceLineNo">586</span>      if (victimHandler != null) {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>        victimHandler.cacheBlock(block.getCacheKey(), block.getBuffer());<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      }<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    }<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    return block.heapSize();<a name="line.590"></a>
-<span class="sourceLineNo">591</span>  }<a name="line.591"></a>
-<span class="sourceLineNo">592</span><a name="line.592"></a>
-<span class="sourceLineNo">593</span>  /**<a name="line.593"></a>
-<span class="sourceLineNo">594</span>   * Multi-threaded call to run the eviction process.<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   */<a name="line.595"></a>
-<span class="sourceLineNo">596</span>  private void runEviction() {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    if (evictionThread == null) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      evict();<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    } else {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      evictionThread.evict();<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    }<a name="line.601"></a>
-<span class="sourceLineNo">602</span>  }<a name="line.602"></a>
-<span class="sourceLineNo">603</span><a name="line.603"></a>
-<span class="sourceLineNo">604</span>  @VisibleForTesting<a name="line.604"></a>
-<span class="sourceLineNo">605</span>  boolean isEvictionInProgress() {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    return evictionInProgress;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>  }<a name="line.607"></a>
+<span class="sourceLineNo">382</span>    if (cb != null &amp;&amp; !BlockCacheUtil.shouldReplaceExistingCacheBlock(this, cacheKey, buf)) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      return;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    long currentSize = size.get();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    long currentAcceptableSize = acceptableSize();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    long hardLimitSize = (long) (hardCapacityLimitFactor * currentAcceptableSize);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    if (currentSize &gt;= hardLimitSize) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      stats.failInsert();<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      if (LOG.isTraceEnabled()) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        LOG.trace("LruBlockCache current size " + StringUtils.byteDesc(currentSize)<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          + " has exceeded acceptable size " + StringUtils.byteDesc(currentAcceptableSize) + "."<a name="line.392"></a>
+<span class="sourceLineNo">393</span>          + " The hard limit size is " + StringUtils.byteDesc(hardLimitSize)<a name="line.393"></a>
+<span class="sourceLineNo">394</span>          + ", failed to put cacheKey:" + cacheKey + " into LruBlockCache.");<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      }<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      if (!evictionInProgress) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        runEviction();<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      }<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      return;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    cb = new LruCachedBlock(cacheKey, buf, count.incrementAndGet(), inMemory);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    long newSize = updateSizeMetrics(cb, false);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    map.put(cacheKey, cb);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    long val = elements.incrementAndGet();<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    if (buf.getBlockType().isData()) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>       dataBlockElements.increment();<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    if (LOG.isTraceEnabled()) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      long size = map.size();<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      assertCounterSanity(size, val);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    }<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    if (newSize &gt; currentAcceptableSize &amp;&amp; !evictionInProgress) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      runEviction();<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
+<span class="sourceLineNo">415</span>  }<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>  /**<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   * Sanity-checking for parity between actual block cache content and metrics.<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * Intended only for use with TRACE level logging and -ea JVM.<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  private static void assertCounterSanity(long mapSize, long counterVal) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    if (counterVal &lt; 0) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      LOG.trace("counterVal overflow. Assertions unreliable. counterVal=" + counterVal +<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        ", mapSize=" + mapSize);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      return;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    if (mapSize &lt; Integer.MAX_VALUE) {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      double pct_diff = Math.abs((((double) counterVal) / ((double) mapSize)) - 1.);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      if (pct_diff &gt; 0.05) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>        LOG.trace("delta between reported and actual size &gt; 5%. counterVal=" + counterVal +<a name="line.430"></a>
+<span class="sourceLineNo">431</span>          ", mapSize=" + mapSize);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  /**<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * Cache the block with the specified name and buffer.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   * &lt;p&gt;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   *<a name="line.439"></a>
+<span class="sourceLineNo">440</span>   * @param cacheKey block's cache key<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   * @param buf      block buffer<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   */<a name="line.442"></a>
+<span class="sourceLineNo">443</span>  @Override<a name="line.443"></a>
+<span class="sourceLineNo">444</span>  public void cacheBlock(BlockCacheKey cacheKey, Cacheable buf) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    cacheBlock(cacheKey, buf, false);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  /**<a name="line.448"></a>
+<span class="sourceLineNo">449</span>   * Helper function that updates the local size counter and also updates any<a name="line.449"></a>
+<span class="sourceLineNo">450</span>   * per-cf or per-blocktype metrics it can discern from given<a name="line.450"></a>
+<span class="sourceLineNo">451</span>   * {@link LruCachedBlock}<a name="line.451"></a>
+<span class="sourceLineNo">452</span>   */<a name="line.452"></a>
+<span class="sourceLineNo">453</span>  private long updateSizeMetrics(LruCachedBlock cb, boolean evict) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    long heapsize = cb.heapSize();<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    BlockType bt = cb.getBuffer().getBlockType();<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    if (evict) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      heapsize *= -1;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    if (bt != null &amp;&amp; bt.isData()) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>       dataBlockSize.add(heapsize);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    }<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    return size.addAndGet(heapsize);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>  /**<a name="line.465"></a>
+<span class="sourceLineNo">466</span>   * Get the buffer of the block with the specified name.<a name="line.466"></a>
+<span class="sourceLineNo">467</span>   *<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * @param cacheKey           block's cache key<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   * @param caching            true if the caller caches blocks on cache misses<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   * @param repeat             Whether this is a repeat lookup for the same block<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   *                           (used to avoid double counting cache misses when doing double-check<a name="line.471"></a>
+<span class="sourceLineNo">472</span>   *                           locking)<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * @param updateCacheMetrics Whether to update cache metrics or not<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   *<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * @return buffer of specified cache key, or null if not in cache<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   */<a name="line.476"></a>
+<span class="sourceLineNo">477</span>  @Override<a name="line.477"></a>
+<span class="sourceLineNo">478</span>  public Cacheable getBlock(BlockCacheKey cacheKey, boolean caching, boolean repeat,<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      boolean updateCacheMetrics) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    if (cb == null) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      if (!repeat &amp;&amp; updateCacheMetrics) {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>        stats.miss(caching, cacheKey.isPrimary(), cacheKey.getBlockType());<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      }<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      // If there is another block cache then try and read there.<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      // However if this is a retry ( second time in double checked locking )<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      // And it's already a miss then the l2 will also be a miss.<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      if (victimHandler != null &amp;&amp; !repeat) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>        Cacheable result = victimHandler.getBlock(cacheKey, caching, repeat, updateCacheMetrics);<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>        // Promote this to L1.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>        if (result != null &amp;&amp; caching) {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>          if (result instanceof HFileBlock &amp;&amp; ((HFileBlock) result).usesSharedMemory()) {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>            result = ((HFileBlock) result).deepClone();<a name="line.494"></a>
+<span class="sourceLineNo">495</span>          }<a name="line.495"></a>
+<span class="sourceLineNo">496</span>          cacheBlock(cacheKey, result, /* inMemory = */ false);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>        }<a name="line.497"></a>
+<span class="sourceLineNo">498</span>        return result;<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      }<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      return null;<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    if (updateCacheMetrics) stats.hit(caching, cacheKey.isPrimary(), cacheKey.getBlockType());<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    cb.access(count.incrementAndGet());<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    return cb.getBuffer();<a name="line.504"></a>
+<span class="sourceLineNo">505</span>  }<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>  /**<a name="line.507"></a>
+<span class="sourceLineNo">508</span>   * Whether the cache contains block with specified cacheKey<a name="line.508"></a>
+<span class="sourceLineNo">509</span>   *<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * @return true if contains the block<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  public boolean containsBlock(BlockCacheKey cacheKey) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    return map.containsKey(cacheKey);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>  }<a name="line.514"></a>
+<span class="sourceLineNo">515</span><a name="line.515"></a>
+<span class="sourceLineNo">516</span>  @Override<a name="line.516"></a>
+<span class="sourceLineNo">517</span>  public boolean evictBlock(BlockCacheKey cacheKey) {<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    return cb != null &amp;&amp; evictBlock(cb, false) &gt; 0;<a name="line.519"></a>
+<span class="sourceLineNo">520</span>  }<a name="line.520"></a>
+<span class="sourceLineNo">521</span><a name="line.521"></a>
+<span class="sourceLineNo">522</span>  /**<a name="line.522"></a>
+<span class="sourceLineNo">523</span>   * Evicts all blocks for a specific HFile. This is an<a name="line.523"></a>
+<span class="sourceLineNo">524</span>   * expensive operation implemented as a linear-time search through all blocks<a name="line.524"></a>
+<span class="sourceLineNo">525</span>   * in the cache. Ideally this should be a search in a log-access-time map.<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   *<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * &lt;p&gt;<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * This is used for evict-on-close to remove all blocks of a specific HFile.<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   *<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   * @return the number of blocks evicted<a name="line.530"></a>
+<span class="sourceLineNo">531</span>   */<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  @Override<a name="line.532"></a>
+<span class="sourceLineNo">533</span>  public int evictBlocksByHfileName(String hfileName) {<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    int numEvicted = 0;<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    for (BlockCacheKey key : map.keySet()) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      if (key.getHfileName().equals(hfileName)) {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>        if (evictBlock(key))<a name="line.537"></a>
+<span class="sourceLineNo">538</span>          ++numEvicted;<a name="line.538"></a>
+<span class="sourceLineNo">539</span>      }<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    }<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    if (victimHandler != null) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      numEvicted += victimHandler.evictBlocksByHfileName(hfileName);<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    return numEvicted;<a name="line.544"></a>
+<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
+<span class="sourceLineNo">546</span><a name="line.546"></a>
+<span class="sourceLineNo">547</span>  /**<a name="line.547"></a>
+<span class="sourceLineNo">548</span>   * Evict the block, and it will be cached by the victim handler if exists &amp;amp;&amp;amp;<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * block may be read again later<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   *<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * @param evictedByEvictionProcess true if the given block is evicted by<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   *          EvictionThread<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   * @return the heap size of evicted block<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   */<a name="line.554"></a>
+<span class="sourceLineNo">555</span>  protected long evictBlock(LruCachedBlock block, boolean evictedByEvictionProcess) {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    boolean found = map.remove(block.getCacheKey()) != null;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    if (!found) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      return 0;<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    }<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    updateSizeMetrics(block, true);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    long val = elements.decrementAndGet();<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    if (LOG.isTraceEnabled()) {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      long size = map.size();<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      assertCounterSanity(size, val);<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    }<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    if (block.getBuffer().getBlockType().isData()) {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>       dataBlockElements.decrement();<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    }<a name="line.568"></a>
+<span class="sourceLineNo">569</span>    if (evictedByEvictionProcess) {<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      // When the eviction of the block happened because of invalidation of HFiles, no need to<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      // update the stats counter.<a name="line.571"></a>
+<span class="sourceLineNo">572</span>      stats.evicted(block.getCachedTime(), block.getCacheKey().isPrimary());<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      if (victimHandler != null) {<a name="line.573"></a>
+<span class="sourceLineNo">574</span>        victimHandler.cacheBlock(block.getCacheKey(), block.getBuffer());<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      }<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    }<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    return block.heapSize();<a name="line.577"></a>
+<span class="sourceLineNo">578</span>  }<a name="line.578"></a>
+<span class="sourceLineNo">579</span><a name="line.579"></a>
+<span class="sourceLineNo">580</span>  /**<a name="line.580"></a>
+<span class="sourceLineNo">581</span>   * Multi-threaded call to run the eviction process.<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   */<a name="line.582"></a>
+<span class="sourceLineNo">583</span>  private void runEviction() {<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    if (evictionThread == null) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      evict();<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    } else {<a name="line.586"></a>
+<span class="sourceLineNo">587</span>      evictionThread.evict();<a name="line.587"></a>
+<span class="sourceLineNo">588</span>    }<a name="line.588"></a>
+<span class="sourceLineNo">589</span>  }<a name="line.589"></a>
+<span class="sourceLineNo">590</span><a name="line.590"></a>
+<span class="sourceLineNo">591</span>  @VisibleForTesting<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  boolean isEvictionInProgress() {<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    return evictionInProgress;<a name="line.593"></a>
+<span class="sourceLineNo">594</span>  }<a name="line.594"></a>
+<span class="sourceLineNo">595</span><a name="line.595"></a>
+<span class="sourceLineNo">596</span>  @VisibleForTesting<a name="line.596"></a>
+<span class="sourceLineNo">597</span>  long getOverhead() {<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    return overhead;<a name="line.598"></a>
+<span class="sourceLineNo">599</span>  }<a name="line.599"></a>
+<span class="sourceLineNo">600</span><a name="line.600"></a>
+<span class="sourceLineNo">601</span>  /**<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   * Eviction method.<a name="line.602"></a>
+<span class="sourceLineNo">603</span>   */<a name="line.603"></a>
+<span class="sourceLineNo">604</span>  void evict() {<a name="line.604"></a>
+<span class="sourceLineNo">605</span><a name="line.605"></a>
+<span class="sourceLineNo">606</span>    // Ensure only one eviction at a time<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    if(!evictionLock.tryLock()) return;<a name="line.607"></a>
 <span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>  @VisibleForTesting<a name="line.609"></a>
-<span class="sourceLineNo">610</span>  long getOverhead() {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    return overhead;<a name="line.611"></a>
-<span class="sourceLineNo">612</span>  }<a name="line.612"></a>
+<span class="sourceLineNo">609</span>    try {<a name="line.609"></a>
+<span class="sourceLineNo">610</span>      evictionInProgress = true;<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      long currentSize = this.size.get();<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      long bytesToFree = currentSize - minSize();<a name="line.612"></a>
 <span class="sourceLineNo">613</span><a name="line.613"></a>
-<span class="sourceLineNo">614</span>  /**<a name="line.614"></a>
-<span class="sourceLineNo">615</span>   * Eviction method.<a name="line.615"></a>
-<span class="sourceLineNo">616</span>   */<a name="line.616"></a>
-<span class="sourceLineNo">617</span>  void evict() {<a name="line.617"></a>
-<span class="sourceLineNo">618</span><a name="line.618"></a>
-<span class="sourceLineNo">619</span>    // Ensure only one eviction at a time<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    if(!evictionLock.tryLock()) return;<a name="line.620"></a>
+<span class="sourceLineNo">614</span>      if (LOG.isTraceEnabled()) {<a name="line.614"></a>
+<span class="sourceLineNo">615</span>        LOG.trace("Block cache LRU eviction started; Attempting to free " +<a name="line.615"></a>
+<span class="sourceLineNo">616</span>          StringUtils.byteDesc(bytesToFree) + " of total=" +<a name="line.616"></a>
+<span class="sourceLineNo">617</span>          StringUtils.byteDesc(currentSize));<a name="line.617"></a>
+<span class="sourceLineNo">618</span>      }<a name="line.618"></a>
+<span class="sourceLineNo">619</span><a name="line.619"></a>
+<span class="sourceLineNo">620</span>      if (bytesToFree &lt;= 0) return;<a name="line.620"></a>
 <span class="sourceLineNo">621</span><a name="line.621"></a>
-<span class="sourceLineNo">622</span>    try {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      evictionInProgress = true;<a name="line.623"></a>
-<span class="sourceLineNo">624</span>      long currentSize = this.size.get();<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      long bytesToFree = currentSize - minSize();<a name="line.625"></a>
+<span class="sourceLineNo">622</span>      // Instantiate priority buckets<a name="line.622"></a>
+<span class="sourceLineNo">623</span>      BlockBucket bucketSingle = new BlockBucket("single", bytesToFree, blockSize, singleSize());<a name="line.623"></a>
+<span class="sourceLineNo">624</span>      BlockBucket bucketMulti = new BlockBucket("multi", bytesToFree, blockSize, multiSize());<a name="line.624"></a>
+<span class="sourceLineNo">625</span>      BlockBucket bucketMemory = new BlockBucket("memory", bytesToFree, blockSize, memorySize());<a name="line.625"></a>
 <span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span>      if (LOG.isTraceEnabled()) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>        LOG.trace("Block cache LRU eviction started; Attempting to free " +<a name="line.628"></a>
-<span class="sourceLineNo">629</span>          StringUtils.byteDesc(bytesToFree) + " of total=" +<a name="line.629"></a>
-<span class="sourceLineNo">630</span>          StringUtils.byteDesc(currentSize));<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      }<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span>      if (bytesToFree &lt;= 0) return;<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
-<span class="sourceLineNo">635</span>      // Instantiate priority buckets<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      BlockBucket bucketSingle = new BlockBucket("single", bytesToFree, blockSize, singleSize());<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      BlockBucket bucketMulti = new BlockBucket("multi", bytesToFree, blockSize, multiSize());<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      BlockBucket bucketMemory = new BlockBucket("memory", bytesToFree, blockSize, memorySize());<a name="line.638"></a>
-<span class="sourceLineNo">639</span><a name="line.639"></a>
-<span class="sourceLineNo">640</span>      // Scan entire map putting into appropriate buckets<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      for (LruCachedBlock cachedBlock : map.values()) {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>        switch (cachedBlock.getPriority()) {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>          case SINGLE: {<a name="line.643"></a>
-<span class="sourceLineNo">644</span>            bucketSingle.add(cachedBlock);<a name="line.644"></a>
-<span class="sourceLineNo">645</span>            break;<a name="line.645"></a>
-<span class="sourceLineNo">646</span>          }<a name="line.646"></a>
-<span class="sourceLineNo">647</span>          case MULTI: {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>            bucketMulti.add(cachedBlock);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>            break;<a name="line.649"></a>
-<span class="sourceLineNo">650</span>          }<a name="line.650"></a>
-<span class="sourceLineNo">651</span>          case MEMORY: {<a name="line.651"></a>
-<span class="sourceLineNo">652</span>            bucketMemory.add(cachedBlock);<a name="line.652"></a>
-<span class="sourceLineNo">653</span>            break;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>          }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>        }<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
-<span class="sourceLineNo">657</span><a name="line.657"></a>
-<span class="sourceLineNo">658</span>      long bytesFreed = 0;<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      if (forceInMemory || memoryFactor &gt; 0.999f) {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        long s = bucketSingle.totalSize();<a name="line.660"></a>
-<span class="sourceLineNo">661</span>        long m = bucketMulti.totalSize();<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        if (bytesToFree &gt; (s + m)) {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>          // this means we need to evict blocks in memory bucket to make room,<a name="line.663"></a>
-<span class="sourceLineNo">664</span>          // so the single and multi buckets will be emptied<a name="line.664"></a>
-<span class="sourceLineNo">665</span>          bytesFreed = bucketSingle.free(s);<a name="line.665"></a>
-<span class="sourceLineNo">666</span>          bytesFreed += bucketMulti.free(m);<a name="line.666"></a>
-<span class="sourceLineNo">667</span>          if (LOG.isTraceEnabled()) {<a name="line.667"></a>
-<span class="sourceLineNo">668</span>            LOG.trace("freed " + StringUtils.byteDesc(bytesFreed) +<a name="line.668"></a>
-<span class="sourceLineNo">669</span>              " from single and multi buckets");<a name="line.669"></a>
-<span class="sourceLineNo">670</span>          }<a name="line.670"></a>
-<span class="sourceLineNo">671</span>          bytesFreed += bucketMemory.free(bytesToFree - bytesFreed);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>          if (LOG.isTraceEnabled()) {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>            LOG.trace("freed " + StringUtils.byteDesc(bytesFreed) +<a name="line.673"></a>
-<span class="sourceLineNo">674</span>              " total from all three buckets ");<a name="line.674"></a>
-<span class="sourceLineNo">675</span>          }<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        } else {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>          // this means no need to evict block in memory bucket,<a name="line.677"></a>
-<span class="sourceLineNo">678</span>          // and we try best to make the ratio between single-bucket and<a name="line.678"></a>
-<span class="sourceLineNo">679</span>          // multi-bucket is 1:2<a name="line.679"></a>
-<span class="sourceLineNo">680</span>          long bytesRemain = s + m - bytesToFree;<a name="line.680"></a>
-<span class="sourceLineNo">681</span>          if (3 * s &lt;= bytesRemain) {<a name="line.681"></a>
-<span class="sourceLineNo">682</span>            // single-bucket is small enough that no eviction happens for it<a name="line.682"></a>
-<span class="sourceLineNo">683</span>            // hence all eviction goes from multi-bucket<a name="line.683"></a>
-<span class="sourceLineNo">684</span>            bytesFreed = bucketMulti.free(bytesToFree);<a name="line.684"></a>
-<span class="sourceLineNo">685</span>          } else if (3 * m &lt;= 2 * bytesRemain) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>            // multi-bucket is small enough that no eviction happens for it<a name="line.686"></a>
-<span class="sourceLineNo">687</span>            // hence all eviction goes from single-bucket<a name="line.687"></a>
-<span class="sourceLineNo">688</span>            bytesFreed = bucketSingle.free(bytesToFree);<a name="line.688"></a>
-<span class="sourceLineNo">689</span>          } else {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>            // both buckets need to evict some blocks<a name="line.690"></a>
-<span class="sourceLineNo">691</span>            bytesFreed = bucketSingle.free(s - bytesRemain / 3);<a name="line.691"></a>
-<span class="sourceLineNo">692</span>            if (bytesFreed &lt; bytesToFree) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>              bytesFreed += bucketMulti.free(bytesToFree - bytesFreed);<a name="line.693"></a>
-<span class="sourceLineNo">694</span>            }<a name="line.694"></a>
-<span class="sourceLineNo">695</span>          }<a name="line.695"></a>
-<span class="sourceLineNo">696</span>        }<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      } else {<a name="line.697"></a>
-<span class="sourceLineNo">698</span>        PriorityQueue&lt;BlockBucket&gt; bucketQueue = new PriorityQueue&lt;&gt;(3);<a name="line.698"></a>
-<span class="sourceLineNo">699</span><a name="line.699"></a>
-<span class="sourceLineNo">700</span>        bucketQueue.add(bucketSingle);<a name="line.700"></a>
-<span class="sourceLineNo">701</span>        bucketQueue.add(bucketMulti);<a name="line.701"></a>
-<span class="sourceLineNo">702</span>        bucketQueue.add(bucketMemory);<a name="line.702"></a>
-<span class="sourceLineNo">703</span><a name="line.703"></a>
-<span class="sourceLineNo">704</span>        int remainingBuckets = 3;<a name="line.704"></a>
-<span class="sourceLineNo">705</span><a name="line.705"></a>
-<span class="sourceLineNo">706</span>        BlockBucket bucket;<a name="line.706"></a>
-<span class="sourceLineNo">707</span>        while ((bucket = bucketQueue.poll()) != null) {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>          long overflow = bucket.overflow();<a name="line.708"></a>
-<span class="sourceLineNo">709</span>          if (overflow &gt; 0) {<a name="line.709"></a>
-<span class="sourceLineNo">710</span>            long bucketBytesToFree =<a name="line.710"></a>
-<span class="sourceLineNo">711</span>                Math.min(overflow, (bytesToFree - bytesFreed) / remainingBuckets);<a name="line.711"></a>
-<span class="sourceLineNo">712</span>            bytesFreed += bucket.free(bucketBytesToFree);<a name="line.712"></a>
-<span class="sourceLineNo">713</span>          }<a name="line.713"></a>
-<span class="sourceLineNo">714</span>          remainingBuckets--;<a name="line.714"></a>
-<span class="sourceLineNo">715</span>        }<a name="line.715"></a>
-<span class="sourceLineNo">716</span>      }<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      if (LOG.isTraceEnabled()) {<a name="line.717"></a>
-<span class="sourceLineNo">718</span>        long single = bucketSingle.totalSize();<a name="line.718"></a>
-<span class="sourceLineNo">719</span>        long multi = bucketMulti.totalSize();<a name="line.719"></a>
-<span class="sourceLineNo">720</span>        long memory = bucketMemory.totalSize();<a name="line.720"></a>
-<span class="sourceLineNo">721</span>        LOG.trace("Block cache LRU eviction completed; " +<a name="line.721"></a>
-<span class="sourceLineNo">722</span>          "freed=" + StringUtils.byteDesc(bytesFreed) + ", " +<a name="line.722"></a>
-<span class="sourceLineNo">723</span>          "total=" + StringUtils.byteDesc(this.size.get()) + ", " +<a name="line.723"></a>
-<span class="sourceLineNo">724</span>          "single=" + StringUtils.byteDesc(single) + ", " +<a name="line.724"></a>
-<span class="sourceLineNo">725</span>          "multi=" + StringUtils.byteDesc(multi) + ", " +<a name="line.725"></a>
-<span class="sourceLineNo">726</span>          "memory=" + StringUtils.byteDesc(memory));<a name="line.726"></a>
-<span class="sourceLineNo">727</span>      }<a name="line.727"></a>
-<span class="sourceLineNo">728</span>    } finally {<a name="line.728"></a>
-<span class="sourceLineNo">729</span>      stats.evict();<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      evictionInProgress = false;<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      evictionLock.unlock();<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    }<a name="line.732"></a>
-<span class="sourceLineNo">733</span>  }<a name="line.733"></a>
-<span class="sourceLineNo">734</span><a name="line.734"></a>
-<span class="sourceLineNo">735</span>  @Override<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  public String toString() {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    return MoreObjects.toStringHelper(this)<a name="line.737"></a>
-<span class="sourceLineNo">738</span>      .add("blockCount", getBlockCount())<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      .add("currentSize", StringUtils.byteDesc(getCurrentSize()))<a name="line.739"></a>
-<span class="sourceLineNo">740</span>      .add("freeSize", StringUtils.byteDesc(getFreeSize()))<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      .add("maxSize", StringUtils.byteDesc(getMaxSize()))<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      .add("heapSize", StringUtils.byteDesc(heapSize()))<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      .add("minSize", StringUtils.byteDesc(minSize()))<a name="line.743"></a>
-<span class="sourceLineNo">744</span>      .add("minFactor", minFactor)<a name="line.744"></a>
-<span class="sourceLineNo">745</span>      .add("multiSize", StringUtils.byteDesc(multiSize()))<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      .add("multiFactor", multiFactor)<a name="line.746"></a>
-<span class="sourceLineNo">747</span>      .add("singleSize", StringUtils.byteDesc(singleSize()))<a name="line.747"></a>
-<span class="sourceLineNo">748</span>      .add("singleFactor", singleFactor)<a name="line.748"></a>
-<span class="sourceLineNo">749</span>      .toString();<a name="line.749"></a>
-<span class="sourceLineNo">750</span>  }<a name="line.750"></a>
+<span class="sourceLineNo">627</span>      // Scan entire map putting into appropriate buckets<a name="line.627"></a>
+<span class="sourceLineNo">628</span>      for (LruCachedBlock cachedBlock : map.values()) {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>        switch (cachedBlock.getPriority()) {<a name="line.629"></a>
+<span class="sourceLineNo">630</span>          case SINGLE: {<a name="line.630"></a>
+<span class="sourceLineNo">631</span>            bucketSingle.add(cachedBlock);<a name="line.631"></a>
+<span class="sourceLineNo">632</span>            break;<a name="line.632"></a>
+<span class="sourceLineNo">633</span>          }<a name="line.633"></a>
+<span class="sourceLineNo">634</span>          case MULTI: {<a name="line.634"></a>
+<span class="sourceLineNo">635</span>            bucketMulti.add(cachedBlock);<a name="line.635"></a>
+<span class="sourceLineNo">636</span>            break;<a name="line.636"></a>
+<span class="sourceLineNo">637</span>          }<a name="line.637"></a>
+<span class="sourceLineNo">638</span>          case MEMORY: {<a name="line.638"></a>
+<span class="sourceLineNo">639</span>            bucketMemory.add(cachedBlock);<a name="line.639"></a>
+<span class="sourceLineNo">640</span>            break;<a name="line.640"></a>
+<span class="sourceLineNo">641</span>          }<a name="line.641"></a>
+<span class="sourceLineNo">642</span>        }<a name="line.642"></a>
+<span class="sourceLineNo">643</span>      }<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>      long bytesFreed = 0;<a name="line.645"></a>
+<span class="sourceLineNo">646</span>      if (forceInMemory || memoryFactor &gt; 0.999f) {<a name="line.646"></a>
+<span class="sourceLineNo">647</span>        long s = bucketSingle.totalSize();<a name="line.647"></a>
+<span class="sourceLineNo">648</span>        long m = bucketMulti.totalSize();<a name="line.648"></a>
+<span class="sourceLineNo">649</span>        if (bytesToFree &gt; (s + m)) {<a name="line.649"></a>
+<span class="sourceLineNo">650</span>          // this means we need to evict blocks in memory bucket to make room,<a name="line.650"></a>
+<span class="sourceLineNo">651</span>          // so the single and multi buckets will be emptied<a name="line.651"></a>
+<span class="sourceLineNo">652</span>          bytesFreed = bucketSingle.free(s);<a name="line.652"></a>
+<span class="sourceLineNo">653</span>          bytesFreed += bucketMulti.free(m);<a name="line.653"></a>
+<span class="sourceLineNo">654</span>          if (LOG.isTraceEnabled()) {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>            LOG.trace("freed " + StringUtils.byteDesc(bytesFreed) +<a name="line.655"></a>
+<span class="sourceLineNo">656</span>              " from single and multi buckets");<a name="line.656"></a>
+<span class="sourceLineNo">657</span>          }<a name="line.657"></a>
+<span class="sourceLineNo">658</span>          bytesFreed += bucketMemory.free(bytesToFree - bytesFreed);<a name="line.658"></a>
+<span class="sourceLineNo">659</span>          if (LOG.isTraceEnabled()) {<a name="line.659"></a>
+<span class="sourceLineNo">660</span>            LOG.trace("freed " + StringUtils.byteDesc(bytesFreed) +<a name="line.660"></a>
+<span class="sourceLineNo">661</span>              " total from all three buckets ");<a name="line.661"></a>
+<span class="sourceLineNo">662</span>          }<a name="line.662"></a>
+<span class="sourceLineNo">663</span>        } else {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>          // this means no need to evict block in memory bucket,<a name="line.664"></a>
+<span class="sourceLineNo">665</span>          // and we try best to make the ratio between single-bucket and<a name="line.665"></a>
+<span class="sourceLineNo">666</span>          // multi-bucket is 1:2<a name="line.666"></a>
+<span class="sourceLineNo">667</span>          long bytesRemain = s + m - bytesToFree;<a name="line.667"></a>
+<span class="sourceLineNo">668</span>          if (3 * s &lt;= bytesRemain) {<a name="line.668"></a>
+<span class="sourceLineNo">669</span>            // single-bucket is small enough that no eviction happens for it<a name="line.669"></a>
+<span class="sourceLineNo">670</span>            // hence all eviction goes from multi-bucket<a name="line.670"></a>
+<span class="sourceLineNo">671</span>            bytesFreed = bucketMulti.free(bytesToFree);<a name="line.671"></a>
+<span class="sourceLineNo">672</span>          } else if (3 * m &lt;= 2 * bytesRemain) {<a name="line.672"></a>
+<span class="sourceLineNo">673</span>            // multi-bucket is small enough that no eviction happens for it<a name="line.673"></a>
+<span class="sourceLineNo">674</span>            // hence all eviction goes from single-bucket<a name="line.674"></a>
+<span class="sourceLineNo">675</span>            bytesFreed = bucketSingle.free(bytesToFree);<a name="line.675"></a>
+<span class="sourceLineNo">676</span>          } else {<a name="line.676"></a>
+<span class="sourceLineNo">677</span>            // both buckets need to evict some blocks<a name="line.677"></a>
+<span class="sourceLineNo">678</span>            bytesFreed = bucketSingle.free(s - bytesRemain / 3);<a name="line.678"></a>
+<span class="sourceLineNo">679</span>            if (bytesFreed &lt; bytesToFree) {<a name="line.679"></a>
+<span class="sourceLineNo">680</span>              bytesFreed += bucketMulti.free(bytesToFree - bytesFreed);<a name="line.680"></a>
+<span class="sourceLineNo">681</span>            }<a name="line.681"></a>
+<span class="sourceLineNo">682</span>          }<a name="line.682"></a>
+<span class="sourceLineNo">683</span>        }<a name="line.683"></a>
+<span class="sourceLineNo">684</span>      } else {<a name="line.684"></a>
+<span class="sourceLineNo">685</span>        PriorityQueue&lt;BlockBucket&gt; bucketQueue = new PriorityQueue&lt;&gt;(3);<a name="line.685"></a>
+<span class="sourceLineNo">686</span><a name="line.686"></a>
+<span class="sourceLineNo">687</span>        bucketQueue.add(bucketSingle);<a name="line.687"></a>
+<span class="sourceLineNo">688</span>        bucketQueue.add(bucketMulti);<a name="line.688"></a>
+<span class="sourceLineNo">689</span>        bucketQueue.add(bucketMemory);<a name="line.689"></a>
+<span class="sourceLineNo">690</span><a name="line.690"></a>
+<span class="sourceLineNo">691</span>        int remainingBuckets = 3;<a name="line.691"></a>
+<span class="sourceLineNo">692</span><a name="line.692"></a>
+<span class="sourceLineNo">693</span>        BlockBucket bucket;<a name="line.693"></a>
+<span class="sourceLineNo">694</span>        while ((bucket = bucketQueue.poll()) != null) {<a name="line.694"></a>
+<span class="sourceLineNo">695</span>          long overflow = bucket.overflow();<a name="line.695"></a>
+<span class="sourceLineNo">696</span>          if (overflow &gt; 0) {<a name="line.696"></a>
+<span class="sourceLineNo">697</span>            long bucketBytesToFree =<a name="line.697"></a>
+<span class="sourceLineNo">698</span>                Math.min(overflow, (bytesToFree - bytesFreed) / remainingBuckets);<a name="line.698"></a>
+<span class="sourceLineNo">699</span>            bytesFreed += bucket.free(bucketBytesToFree);<a name="line.699"></a>
+<span class="sourceLineNo">700</span>          }<a name="line.700"></a>
+<span class="sourceLineNo">701</span>          remainingBuckets--;<a name="line.701"></a>
+<span class="sourceLineNo">702</span>        }<a name="line.702"></a>
+<span class="sourceLineNo">703</span>      }<a name="line.703"></a>
+<span class="sourceLineNo">704</span>      if (LOG.isTraceEnabled()) {<a name="line.704"></a>
+<span class="sourceLineNo">705</span>        long single = bucketSingle.totalSize();<a name="line.705"></a>
+<span class="sourceLineNo">706</span>        long multi = bucketMulti.totalSize();<a name="line.706"></a>
+<span class="sourceLineNo">707</span>        long memory = bucketMemory.totalSize();<a name="line.707"></a>
+<span class="sourceLineNo">708</span>        LOG.trace("Block cache LRU eviction completed; " +<a name="line.708"></a>
+<span class="sourceLineNo">709</span>          "freed=" + StringUtils.byteDesc(bytesFreed) + ", " +<a name="line.709"></a>
+<span class="sourceLineNo">710</span>          "total=" + StringUtils.byteDesc(this.size.get()) + ", " +<a name="line.710"></a>
+<span class="sourceLineNo">711</span>          "single=" + StringUtils.byteDesc(single) + ", " +<a name="line.711"></a>
+<span class="sourceLineNo">712</span>          "multi=" + StringUtils.byteDesc(multi) + ", " +<a name="line.712"></a>
+<span class="sourceLineNo">713</span>          "memory=" + StringUtils.byteDesc(memory));<a name="line.713"></a>
+<span class="sourceLineNo">714</span>      }<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    } finally {<a name="line.715"></a>
+<span class="sourceLineNo">716</span>      stats.evict();<a name="line.716"></a>
+<span class="sourceLineNo">717</span>      evictionInProgress = false;<a name="line.717"></a>
+<span class="sourceLineNo">718</span>      evictionLock.unlock();<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    }<a name="line.719"></a>
+<span class="sourceLineNo">720</span>  }<a name="line.720"></a>
+<span class="sourceLineNo">721</span><a name="line.721"></a>
+<span class="sourceLineNo">722</span>  @Override<a name="line.722"></a>
+<span class="sourceLineNo">723</span>  public String toString() {<a name="line.723"></a>
+<span class="sourceLineNo">724</span>    return MoreObjects.toStringHelper(this)<a name="line.724"></a>
+<span class="sourceLineNo">725</span>      .add("blockCount", getBlockCount())<a name="line.725"></a>
+<span class="sourceLineNo">726</span>      .add("currentSize", StringUtils.byteDesc(getCurrentSize()))<a name="line.726"></a>
+<span class="sourceLineNo">727</span>      .add("freeSize", StringUtils.byteDesc(getFreeSize()))<a name="line.727"></a>
+<span class="sourceLineNo">728</span>      .add("maxSize", StringUtils.byteDesc(getMaxSize()))<a name="line.728"></a>
+<span class="sourceLineNo">729</span>      .add("heapSize", StringUtils.byteDesc(heapSize()))<a name="line.729"></a>
+<span class="sourceLineNo">730</span>      .add("minSize", StringUtils.byteDesc(minSize()))<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      .add("minFactor", minFactor)<a name="line.731"></a>
+<span class="sourceLineNo">732</span>      .add("multiSize", StringUtils.byteDesc(multiSize()))<a name="line.732"></a>
+<span class="sourceLineNo">733</span>      .add("multiFactor", multiFactor)<a name="line.733"></a>
+<span class="sourceLineNo">734</span>      .add("singleSize", StringUtils.byteDesc(singleSize()))<a name="line.734"></a>
+<span class="sourceLineNo">735</span>      .add("singleFactor", singleFactor)<a name="line.735"></a>
+<span class="sourceLineNo">736</span>      .toString();<a name="line.736"></a>
+<span class="sourceLineNo">737</span>  }<a name="line.737"></a>
+<span class="sourceLineNo">738</span><a name="line.738"></a>
+<span class="sourceLineNo">739</span>  /**<a name="line.739"></a>
+<span class="sourceLineNo">740</span>   * Used to group blocks into priority buckets.  There will be a BlockBucket<a name="line.740"></a>
+<span class="sourceLineNo">741</span>   * for each priority (single, multi, memory).  Once bucketed, the eviction<a name="line.741"></a>
+<span class="sourceLineNo">742</span>   * algorithm takes the appropriate number of elements out of each according<a name="line.742"></a>
+<span class="sourceLineNo">743</span>   * to configuration parameters and their relatives sizes.<a name="line.743"></a>
+<span class="sourceLineNo">744</span>   */<a name="line.744"></a>
+<span class="sourceLineNo">745</span>  private class BlockBucket implements Comparable&lt;BlockBucket&gt; {<a name="line.745"></a>
+<span class="sourceLineNo">746</span><a name="line.746"></a>
+<span class="sourceLineNo">747</span>    private final String name;<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    private LruCachedBlockQueue queue;<a name="line.748"></a>
+<span class="sourceLineNo">749</span>    private long totalSize = 0;<a name="line.749"></a>
+<span class="sourceLineNo">750</span>    private long bucketSize;<a name="line.750"></a>
 <span class="sourceLineNo">751</span><a name="line.751"></a>
-<span class="sourceLineNo">752</span>  /**<a name="line.752"></a>
-<span class="sourceLineNo">753</span>   * Used to group blocks into priority buckets.  There will be a BlockBucket<a name="line.753"></a>
-<span class="sourceLineNo">754</span>   * for each priority (single, multi, memory).  Once bucketed, the eviction<a name="line.754"></a>
-<span class="sourceLineNo">755</span>   * algorithm takes the appropriate number of elements out of each according<a name="line.755"></a>
-<span class="sourceLineNo">756</span>   * to configuration parameters and their relatives sizes.<a name="line.756"></a>
-<span class="sourceLineNo">757</span>   */<a name="line.757"></a>
-<span class="sourceLineNo">758</span>  private class BlockBucket implements Comparable&lt;BlockBucket&gt; {<a name="line.758"></a>
-<span class="sourceLineNo">759</span><a name="line.759"></a>
-<span class="sourceLineNo">760</span>    private final String name;<a name="line.760"></a>
-<span class="sourceLineNo">761</span>    private LruCachedBlockQueue queue;<a name="line.761"></a>
-<span class="sourceLineNo">762</span>    private long totalSize = 0;<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    private long bucketSize;<a name="line.763"></a>
-<span class="sourceLineNo">764</span><a name="line.764"></a>
-<span class="sourceLineNo">765</span>    public BlockBucket(String name, long bytesToFree, long blockSize, long bucketSize) {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      this.name = name;<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      this.bucketSize = bucketSize;<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      queue = new LruCachedBlockQueue(bytesToFree, blockSize);<a name="line.768"></a>
-<span class="sourceLineNo">769</span>      totalSize = 0;<a name="line.769"></a>
-<span class="sourceLineNo">770</span>    }<a name="line.770"></a>
-<span class="sourceLineNo">771</span><a name="line.771"></a>
-<span class="sourceLineNo">772</span>    public void add(LruCachedBlock block) {<a name="line.772"></a>
-<span class="sourceLineNo">773</span>      totalSize += block.heapSize();<a name="line.773"></a>
-<span class="sourceLineNo">774</span>      queue.add(block);<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    }<a name="line.775"></a>
-<span class="sourceLineNo">776</span><a name="line.776"></a>
-<span class="sourceLineNo">777</span>    public long free(long toFree) {<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      if (LOG.isTraceEnabled()) {<a name="line.778"></a>
-<span class="sourceLineNo">779</span>        LOG.trace("freeing " + StringUtils.byteDesc(toFree) + " from " + this);<a name="line.779"></a>
-<span class="sourceLineNo">780</span>      }<a name="line.780"></a>
-<span class="sourceLineNo">781</span>      LruCachedBlock cb;<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      long freedBytes = 0;<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      while ((cb = queue.pollLast()) != null) {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>        freedBytes += evictBlock(cb, true);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>        if (freedBytes &gt;= toFree) {<a name="line.785"></a>
-<span class="sourceLineNo">786</span>          return freedBytes;<a name="line.786"></a>
-<span class="sourceLineNo">787</span>        }<a name="line.787"></a>
-<span class="sourceLineNo">788</span>      }<a name="line.788"></a>
-<span class="sourceLineNo">789</span>      if (LOG.isTraceEnabled()) {<a name="line.789"></a>
-<span class="sourceLineNo">790</span>        LOG.trace("freed " + StringUtils.byteDesc(freedBytes) + " from " + this);<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      }<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      return freedBytes;<a name="line.792"></a>
+<span class="sourceLineNo">752</span>    public BlockBucket(String name, long bytesToFree, long blockSize, long bucketSize) {<a name="line.752"></a>
+<span class="sourceLineNo">753</span>      this.name = name;<a name="line.753"></a>
+<span class="sourceLineNo">754</span>      this.bucketSize = bucketSize;<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      queue = new LruCachedBlockQueue(bytesToFree, blockSize);<a name="line.755"></a>
+<span class="sourceLineNo">756</span>      totalSize = 0;<a name="line.756"></a>
+<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
+<span class="sourceLineNo">758</span><a name="line.758"></a>
+<span class="sourceLineNo">759</span>    public void add(LruCachedBlock block) {<a name="line.759"></a>
+<span class="sourceLineNo">760</span>      totalSize += block.heapSize();<a name="line.760"></a>
+<span class="sourceLineNo">761</span>      queue.add(block);<a name="line.761"></a>
+<span class="sourceLineNo">762</span>    }<a name="line.762"></a>
+<span class="sourceLineNo">763</span><a name="line.763"></a>
+<span class="sourceLineNo">764</span>    public long free(long toFree) {<a name="line.764"></a>
+<span class="sourceLineNo">765</span>      if (LOG.isTraceEnabled()) {<a name="line.765"></a>
+<span class="sourceLineNo">766</span>        LOG.trace("freeing " + StringUtils.byteDesc(toFree) + " from " + this);<a name="line.766"></a>
+<span class="sourceLineNo">767</span>      }<a name="line.767"></a>
+<span class="sourceLineNo">768</span>      LruCachedBlock cb;<a name="line.768"></a>
+<span class="sourceLineNo">769</span>      long freedBytes = 0;<a name="line.769"></a>
+<span class="sourceLineNo">770</span>      while ((cb = queue.pollLast()) != null) {<a name="line.770"></a>
+<span class="sourceLineNo">771</span>        freedBytes += evictBlock(cb, true);<a name="line.771"></a>
+<span class="sourceLineNo">772</span>        if (freedBytes &gt;= toFree) {<a name="line.772"></a>
+<span class="sourceLineNo">773</span>          return freedBytes;<a name="line.773"></a>
+<span class="sourceLineNo">774</span>        }<a name="line.774"></a>
+<span class="sourceLineNo">775</span>      }<a name="line.775"></a>
+<span class="sourceLineNo">776</span>      if (LOG.isTraceEnabled()) {<a name="line.776"></a>
+<span class="sourceLineNo">777</span>        LOG.trace("freed " + StringUtils.byteDesc(freedBytes) + " from " + this);<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      }<a name="line.778"></a>
+<span class="sourceLineNo">779</span>      return freedBytes;<a name="line.779"></a>
+<span class="sourceLineNo">780</span>    }<a name="line.780"></a>
+<span class="sourceLineNo">781</span><a name="line.781"></a>
+<span class="sourceLineNo">782</span>    public long overflow() {<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      return totalSize - bucketSize;<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    }<a name="line.784"></a>
+<span class="sourceLineNo">785</span><a name="line.785"></a>
+<span class="sourceLineNo">786</span>    public long totalSize() {<a name="line.786"></a>
+<span class="sourceLineNo">787</span>      return totalSize;<a name="line.787"></a>
+<span class="sourceLineNo">788</span>    }<a name="line.788"></a>
+<span class="sourceLineNo">789</span><a name="line.789"></a>
+<span class="sourceLineNo">790</span>    @Override<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    public int compareTo(BlockBucket that) {<a name="line.791"></a>
+<span class="sourceLineNo">792</span>      return Long.compare(this.overflow(), that.overflow());<a name="line.792"></a>
 <span class="sourceLineNo">793</span>    }<a name="line.793"></a>
 <span class="sourceLineNo">794</span><a name="line.794"></a>
-<span class="sourceLineNo">795</span>    public long overflow() {<a name="line.795"></a>
-<span class="sourceLineNo">796</span>      return totalSize - bucketSize;<a name="line.796"></a>
-<span class="sourceLineNo">797</span>    }<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span>    public long totalSize() {<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      return totalSize;<a name="line.800"></a>
+<span class="sourceLineNo">795</span>    @Override<a name="line.795"></a>
+<span class="sourceLineNo">796</span>    public boolean equals(Object that) {<a name="line.796"></a>
+<span class="sourceLineNo">797</span>      if (that == null || !(that instanceof BlockBucket)) {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>        return false;<a name="line.798"></a>
+<span class="sourceLineNo">799</span>      }<a name="line.799"></a>
+<span class="sourceLineNo">800</span>      return compareTo((BlockBucket)that) == 0;<a name="line.800"></a>
 <span class="sourceLineNo">801</span>    }<a name="line.801"></a>
 <span class="sourceLineNo">802</span><a name="line.802"></a>
 <span class="sourceLineNo">803</span>    @Override<a name="line.803"></a>
-<span class="sourceLineNo">804</span>    public int compareTo(BlockBucket that) {<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      return Long.compare(this.overflow(), that.overflow());<a name="line.805"></a>
+<span class="sourceLineNo">804</span>    public int hashCode() {<a name="line.804"></a>
+<span class="sourceLineNo">805</span>      return Objects.hashCode(name, bucketSize, queue, totalSize);<a name="line.805"></a>
 <span class="sourceLineNo">806</span>    }<a name="line.806"></a>
 <span class="sourceLineNo">807</span><a name="line.807"></a>
 <span class="sourceLineNo">808</span>    @Override<a name="line.808"></a>
-<span class="sourceLineNo">809</span>    public boolean equals(Object that) {<a name="line.809"></a>
-<span class="sourceLineNo">810</span>      if (that == null || !(that instanceof BlockBucket)) {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>        return false;<a name="line.811"></a>
-<span class="sourceLineNo">812</span>      }<a name="line.812"></a>
-<span class="sourceLineNo">813</span>      return compareTo((BlockBucket)that) == 0;<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    }<a name="line.814"></a>
-<span class="sourceLineNo">815</span><a name="line.815"></a>
-<span class="sourceLineNo">816</span>    @Override<a name="line.816"></a>
-<span class="sourceLineNo">817</span>    public int hashCode() {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      return Objects.hashCode(name, bucketSize, queue, totalSize);<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    }<a name="line.819"></a>
-<span class="sourceLineNo">820</span><a name="line.820"></a>
-<span class="sourceLineNo">821</span>    @Override<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    public String toString() {<a name="line.822"></a>
-<span class="sourceLineNo">823</span>      return MoreObjects.toStringHelper(this)<a name="line.823"></a>
-<span class="sourceLineNo">824</span>        .add("name", name)<a name="line.824"></a>
-<span class="sourceLineNo">825</span>        .add("totalSize", StringUtils.byteDesc(totalSize))<a name="line.825"></a>
-<span class="sourceLineNo">826</span>        .add("bucketSize", StringUtils.byteDesc(bucketSize))<a name="line.826"></a>
-<span class="sourceLineNo">827</span>        .toString();<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    }<a name="line.828"></a>
-<span class="sourceLineNo">829</span>  }<a name="line.829"></a>
-<span class="sourceLineNo">830</span><a name="line.830"></a>
-<span class="sourceLineNo">831</span>  /**<a name="line.831"></a>
-<span class="sourceLineNo">832</span>   * Get the maximum size of this cache.<a name="line.832"></a>
-<span class="sourceLineNo">833</span>   *<a name="line.833"></a>
-<span class="sourceLineNo">834</span>   * @return max size in bytes<a name="line.834"></a>
-<span class="sourceLineNo">835</span>   */<a name="line.835"></a>
-<span class="sourceLineNo">836</span><a name="line.836"></a>
-<span class="sourceLineNo">837</span>  @Override<a name="line.837"></a>
-<span class="sourceLineNo">838</span>  public long getMaxSize() {<a name="line.838"></a>
-<span class="sourceLineNo">839</span>    return this.maxSize;<a name="line.839"></a>
-<span class="sourceLineNo">840</span>  }<a name="line.840"></a>
-<span class="sourceLineNo">841</span><a name="line.841"></a>
-<span class="sourceLineNo">842</span>  @Override<a name="line.842"></a>
-<span class="sourceLineNo">843</span>  public long getCurrentSize() {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>    return this.size.get();<a name="line.844"></a>
-<span class="sourceLineNo">845</span>  }<a name="line.845"></a>
-<span class="sourceLineNo">846</span><a name="line.846"></a>
-<span class="sourceLineNo">847</span>  @Override<a name="line.847"></a>
-<span class="sourceLineNo">848</span>  public long getCurrentDataSize() {<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    return this.dataBlockSize.sum();<a name="line.849"></a>
-<span class="sourceLineNo">850</span>  }<a name="line.850"></a>
-<span class="sourceLineNo">851</span><a name="line.851"></a>
-<span class="sourceLineNo">852</span>  @Override<a name="line.852"></a>
-<span class="sourceLineNo">853</span>  public long getFreeSize() {<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    return getMaxSize() - getCurrentSize();<a name="line.854"></a>
-<span class="sourceLineNo">855</span>  }<a name="line.855"></a>
-<span class="sourceLineNo">856</span><a name="line.856"></a>
-<span class="sourceLineNo">857</span>  @Override<a name="line.857"></a>
-<span class="sourceLineNo">858</span>  public long size() {<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    return getMaxSize();<a name="line.859"></a>
-<span class="sourceLineNo">860</span>  }<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>  @Override<a name="line.862"></a>
-<span class="sourceLineNo">863</span>  public long getBlockCount() {<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    return this.elements.get();<a name="line.864"></a>
-<span class="sourceLineNo">865</span>  }<a name="line.865"></a>
-<span class="sourceLineNo">866</span><a name="line.866"></a>
-<span class="sourceLineNo">867</span>  @Override<a name="line.867"></a>
-<span class="sourceLineNo">868</span>  public long getDataBlockCount() {<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    return this.dataBlockElements.sum();<a name="line.869"></a>
-<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
-<span class="sourceLineNo">871</span><a name="line.871"></a>
-<span class="sourceLineNo">872</span>  EvictionThread getEvictionThread() {<a name="line.872"></a>
-<span class="sourceLineNo">873</span>    return this.evictionThread;<a name="line.873"></a>
-<span class="sourceLineNo">874</span>  }<a name="line.874"></a>
+<span class="sourceLineNo">809</span>    public String toString() {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>      return MoreObjects.toStringHelper(this)<a name="line.810"></a>
+<span class="sourceLineNo">811</span>        .add("name", name)<a name="line.811"></a>
+<span class="sourceLineNo">812</span>        .add("totalSize", StringUtils.byteDesc(totalSize))<a name="line.812"></a>
+<span class="sourceLineNo">813</span>        .add("bucketSize", StringUtils.byteDesc(bucketSize))<a name="line.813"></a>
+<span class="sourceLineNo">814</span>        .toString();<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    }<a name="line.815"></a>
+<span class="sourceLineNo">816</span>  }<a name="line.816"></a>
+<span class="sourceLineNo">817</span><a name="line.817"></a>
+<span class="sourceLineNo">818</span>  /**<a name="line.818"></a>
+<span class="sourceLineNo">819</span>   * Get the maximum size of this cache.<a name="line.819"></a>
+<span class="sourceLineNo">820</span>   *<a name="line.820"></a>
+<span class="sourceLineNo">821</span>   * @return max size in bytes<a name="line.821"></a>
+<span class="sourceLineNo">822</span>   */<a name="line.822"></a>
+<span class="sourceLineNo">823</span><a name="line.823"></a>
+<span class="sourceLineNo">824</span>  @Override<a name="line.824"></a>
+<span class="sourceLineNo">825</span>  public long getMaxSize() {<a name="line.825"></a>
+<span class="sourceLineNo">826</span>    return this.maxSize;<a name="line.826"></a>
+<span class="sourceLineNo">827</span>  }<a name="line.827"></a>
+<span class="sourceLineNo">828</span><a name="line.828"></a>
+<span class="sourceLineNo">829</span>  @Override<a name="line.829"></a>
+<span class="sourceLineNo">830</span>  public long getCurrentSize() {<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    return this.size.get();<a name="line.831"></a>
+<span class="sourceLineNo">832</span>  }<a name="line.832"></a>
+<span class="sourceLineNo">833</span><a name="line.833"></a>
+<span class="sourceLineNo">834</span>  @Override<a name="line.834"></a>
+<span class="sourceLineNo">835</span>  public long getCurrentDataSize() {<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    return this.dataBlockSize.sum();<a name="line.836"></a>
+<span class="sourceLineNo">837</span>  }<a name="line.837"></a>
+<span class="sourceLineNo">838</span><a name="line.838"></a>
+<span class="sourceLineNo">839</span>  @Override<a name="line.839"></a>
+<span class="sourceLineNo">840</span>  public long getFreeSize() {<a name="line.840"></a>
+<span class="sourceLineNo">841</span>    return getMaxSize() - getCurrentSize();<a name="line.841"></a>
+<span class="sourceLineNo">842</span>  }<a name="line.842"></a>
+<span class="sourceLineNo">843</span><a name="line.843"></a>
+<span clas

<TRUNCATED>

[23/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html
index 432cba4..8851d0f 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.80">ReplicationSource</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.84">ReplicationSource</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceInterface</a></pre>
 <div class="block">Class that handles the source of a replication stream.
@@ -369,55 +369,65 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 </td>
 </tr>
 <tr id="i9" class="rowColor">
+<td class="colFirst"><code>private long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getFileSize-org.apache.hadoop.fs.Path-">getFileSize</a></span>(org.apache.hadoop.fs.Path&nbsp;currentPath)</code>&nbsp;</td>
+</tr>
+<tr id="i10" class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeer</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getPeer--">getPeer</a></span>()</code>
 <div class="block">Get the replication peer instance.</div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getQueueId--">getQueueId</a></span>()</code>
 <div class="block">Get the queue id that the source is replicating to</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueueStorage</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getQueueStorage--">getQueueStorage</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getReplicationEndpoint--">getReplicationEndpoint</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getServer--">getServer</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getServerWALsBelongTo--">getServerWALsBelongTo</a></span>()</code>
 <div class="block">The queue of WALs only belong to one region server.</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getSourceManager--">getSourceManager</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsSource</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getSourceMetrics--">getSourceMetrics</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getStats--">getStats</a></span>()</code>
 <div class="block">Get a string representation of the current statistics
  for this source</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALFileLengthProvider.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">WALFileLengthProvider</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getWALFileLengthProvider--">getWALFileLengthProvider</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
+<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getWalGroupStatus--">getWalGroupStatus</a></span>()</code>
+<div class="block">get the stat of replication for each wal group.</div>
+</td>
+</tr>
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#init-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceManager-org.apache.hadoop.hbase.replication.ReplicationQueueStorage-org.apache.hadoop.hbase.replication.ReplicationPeer-org.apache.hadoop.hbase.Server-java.lang.String-java.util.UUID-org.apache.hadoop.hbase.replication.regionserver.WALFileLengthProvider-org.apache.hadoop.hbase.replication.regionserver.MetricsSource-">init</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
     org.apache.hadoop.fs.FileSystem&nbsp;fs,
@@ -432,77 +442,77 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <div class="block">Instantiation method used by region servers</div>
 </td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#initAndStartReplicationEndpoint-org.apache.hadoop.hbase.replication.ReplicationEndpoint-">initAndStartReplicationEndpoint</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a>&nbsp;replicationEndpoint)</code>&nbsp;</td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#initialize--">initialize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#initializeWALEntryFilter-java.util.UUID-">initializeWALEntryFilter</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html?is-external=true" title="class or interface in java.util">UUID</a>&nbsp;peerClusterId)</code>&nbsp;</td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#isSourceActive--">isSourceActive</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#postShipEdits-java.util.List-int-">postShipEdits</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&gt;&nbsp;entries,
              int&nbsp;batchSize)</code>
 <div class="block">Call this after the shipper thread ship some entries to peer cluster.</div>
 </td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#removeWorker-org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceShipper-">removeWorker</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceShipper</a>&nbsp;worker)</code>&nbsp;</td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#sleepForRetries-java.lang.String-int-">sleepForRetries</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg,
                int&nbsp;sleepMultiplier)</code>
 <div class="block">Do the sleeping logic</div>
 </td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#startup--">startup</a></span>()</code>
 <div class="block">Start the replication</div>
 </td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#terminate-java.lang.String-">terminate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;reason)</code>
 <div class="block">End the replication</div>
 </td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#terminate-java.lang.String-java.lang.Exception-">terminate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;reason,
          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;cause)</code>
 <div class="block">End the replication</div>
 </td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i32" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#terminate-java.lang.String-java.lang.Exception-boolean-">terminate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;reason,
          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;cause,
          boolean&nbsp;join)</code>&nbsp;</td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#tryStartNewShipper-java.lang.String-java.util.concurrent.PriorityBlockingQueue-">tryStartNewShipper</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroupId,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/PriorityBlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">PriorityBlockingQueue</a>&lt;org.apache.hadoop.fs.Path&gt;&nbsp;queue)</code>&nbsp;</td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#tryThrottle-int-">tryThrottle</a></span>(int&nbsp;batchSize)</code>
 <div class="block">Try to throttle when the peer config with a bandwidth</div>
 </td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#uncaughtException-java.lang.Thread-java.lang.Throwable-">uncaughtException</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a>&nbsp;t,
                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;e)</code>&nbsp;</td>
@@ -542,7 +552,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.82">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.86">LOG</a></pre>
 </li>
 </ul>
 <a name="queues">
@@ -551,7 +561,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>queues</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/PriorityBlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">PriorityBlockingQueue</a>&lt;org.apache.hadoop.fs.Path&gt;&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.85">queues</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/PriorityBlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">PriorityBlockingQueue</a>&lt;org.apache.hadoop.fs.Path&gt;&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.89">queues</a></pre>
 </li>
 </ul>
 <a name="queueSizePerGroup">
@@ -560,7 +570,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>queueSizePerGroup</h4>
-<pre>protected&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.87">queueSizePerGroup</a></pre>
+<pre>protected&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.91">queueSizePerGroup</a></pre>
 </li>
 </ul>
 <a name="queueStorage">
@@ -569,7 +579,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>queueStorage</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueueStorage</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.88">queueStorage</a></pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueueStorage</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.92">queueStorage</a></pre>
 </li>
 </ul>
 <a name="replicationPeer">
@@ -578,7 +588,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>replicationPeer</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeer</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.89">replicationPeer</a></pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeer</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.93">replicationPeer</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -587,7 +597,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>protected&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.91">conf</a></pre>
+<pre>protected&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.95">conf</a></pre>
 </li>
 </ul>
 <a name="replicationQueueInfo">
@@ -596,7 +606,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>replicationQueueInfo</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html" title="class in org.apache.hadoop.hbase.replication">ReplicationQueueInfo</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.92">replicationQueueInfo</a></pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueInfo.html" title="class in org.apache.hadoop.hbase.replication">ReplicationQueueInfo</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.96">replicationQueueInfo</a></pre>
 </li>
 </ul>
 <a name="manager">
@@ -605,7 +615,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>manager</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.95">manager</a></pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.99">manager</a></pre>
 </li>
 </ul>
 <a name="server">
@@ -614,7 +624,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>server</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.97">server</a></pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.101">server</a></pre>
 </li>
 </ul>
 <a name="sleepForRetries">
@@ -623,7 +633,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>sleepForRetries</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.99">sleepForRetries</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.103">sleepForRetries</a></pre>
 </li>
 </ul>
 <a name="fs">
@@ -632,7 +642,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>fs</h4>
-<pre>protected&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.100">fs</a></pre>
+<pre>protected&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.104">fs</a></pre>
 </li>
 </ul>
 <a name="clusterId">
@@ -641,7 +651,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>clusterId</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html?is-external=true" title="class or interface in java.util">UUID</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.102">clusterId</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html?is-external=true" title="class or interface in java.util">UUID</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.106">clusterId</a></pre>
 </li>
 </ul>
 <a name="totalReplicatedEdits">
@@ -650,7 +660,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>totalReplicatedEdits</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.104">totalReplicatedEdits</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.108">totalReplicatedEdits</a></pre>
 </li>
 </ul>
 <a name="queueId">
@@ -659,7 +669,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>queueId</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.106">queueId</a></pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.110">queueId</a></pre>
 </li>
 </ul>
 <a name="maxRetriesMultiplier">
@@ -668,7 +678,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>maxRetriesMultiplier</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.108">maxRetriesMultiplier</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.112">maxRetriesMultiplier</a></pre>
 </li>
 </ul>
 <a name="sourceRunning">
@@ -677,7 +687,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>sourceRunning</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.110">sourceRunning</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.114">sourceRunning</a></pre>
 </li>
 </ul>
 <a name="metrics">
@@ -686,7 +696,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>metrics</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsSource</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.112">metrics</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsSource</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.116">metrics</a></pre>
 </li>
 </ul>
 <a name="logQueueWarnThreshold">
@@ -695,7 +705,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>logQueueWarnThreshold</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.114">logQueueWarnThreshold</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.118">logQueueWarnThreshold</a></pre>
 </li>
 </ul>
 <a name="replicationEndpoint">
@@ -704,7 +714,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>replicationEndpoint</h4>
-<pre>private volatile&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.116">replicationEndpoint</a></pre>
+<pre>private volatile&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.120">replicationEndpoint</a></pre>
 </li>
 </ul>
 <a name="walEntryFilter">
@@ -713,7 +723,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>walEntryFilter</h4>
-<pre>protected volatile&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/WALEntryFilter.html" title="interface in org.apache.hadoop.hbase.replication">WALEntryFilter</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.118">walEntryFilter</a></pre>
+<pre>protected volatile&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/WALEntryFilter.html" title="interface in org.apache.hadoop.hbase.replication">WALEntryFilter</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.122">walEntryFilter</a></pre>
 </li>
 </ul>
 <a name="throttler">
@@ -722,7 +732,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>throttler</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationThrottler.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationThrottler</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.120">throttler</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationThrottler.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationThrottler</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.124">throttler</a></pre>
 </li>
 </ul>
 <a name="defaultBandwidth">
@@ -731,7 +741,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>defaultBandwidth</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.121">defaultBandwidth</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.125">defaultBandwidth</a></pre>
 </li>
 </ul>
 <a name="currentBandwidth">
@@ -740,7 +750,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>currentBandwidth</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.122">currentBandwidth</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.126">currentBandwidth</a></pre>
 </li>
 </ul>
 <a name="walFileLengthProvider">
@@ -749,7 +759,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>walFileLengthProvider</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALFileLengthProvider.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">WALFileLengthProvider</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.123">walFileLengthProvider</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALFileLengthProvider.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">WALFileLengthProvider</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.127">walFileLengthProvider</a></pre>
 </li>
 </ul>
 <a name="workerThreads">
@@ -758,7 +768,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>workerThreads</h4>
-<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentHashMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentHashMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceShipper</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.125">workerThreads</a></pre>
+<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentHashMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentHashMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceShipper</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.129">workerThreads</a></pre>
 </li>
 </ul>
 <a name="totalBufferUsed">
@@ -767,7 +777,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>totalBufferUsed</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.128">totalBufferUsed</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.132">totalBufferUsed</a></pre>
 </li>
 </ul>
 <a name="WAIT_ON_ENDPOINT_SECONDS">
@@ -776,7 +786,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>WAIT_ON_ENDPOINT_SECONDS</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.130">WAIT_ON_ENDPOINT_SECONDS</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.134">WAIT_ON_ENDPOINT_SECONDS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.replication.regionserver.ReplicationSource.WAIT_ON_ENDPOINT_SECONDS">Constant Field Values</a></dd>
@@ -789,7 +799,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_WAIT_ON_ENDPOINT_SECONDS</h4>
-<pre>public static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.132">DEFAULT_WAIT_ON_ENDPOINT_SECONDS</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.136">DEFAULT_WAIT_ON_ENDPOINT_SECONDS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.replication.regionserver.ReplicationSource.DEFAULT_WAIT_ON_ENDPOINT_SECONDS">Constant Field Values</a></dd>
@@ -802,7 +812,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>waitOnEndpointSeconds</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.133">waitOnEndpointSeconds</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.137">waitOnEndpointSeconds</a></pre>
 </li>
 </ul>
 <a name="initThread">
@@ -811,7 +821,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockListLast">
 <li class="blockList">
 <h4>initThread</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.135">initThread</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.139">initThread</a></pre>
 </li>
 </ul>
 </li>
@@ -828,7 +838,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ReplicationSource</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.80">ReplicationSource</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.84">ReplicationSource</a>()</pre>
 </li>
 </ul>
 </li>
@@ -845,7 +855,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>init</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.148">init</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.152">init</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                  org.apache.hadoop.fs.FileSystem&nbsp;fs,
                  <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceManager</a>&nbsp;manager,
                  <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueueStorage</a>&nbsp;queueStorage,
@@ -879,7 +889,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>decorateConf</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.182">decorateConf</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.186">decorateConf</a>()</pre>
 </li>
 </ul>
 <a name="enqueueLog-org.apache.hadoop.fs.Path-">
@@ -888,7 +898,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>enqueueLog</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.190">enqueueLog</a>(org.apache.hadoop.fs.Path&nbsp;log)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.194">enqueueLog</a>(org.apache.hadoop.fs.Path&nbsp;log)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#enqueueLog-org.apache.hadoop.fs.Path-">ReplicationSourceInterface</a></code></span></div>
 <div class="block">Add a log to the list of logs to replicate</div>
 <dl>
@@ -905,7 +915,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>addHFileRefs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.219">addHFileRefs</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.223">addHFileRefs</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                          byte[]&nbsp;family,
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path&gt;&gt;&nbsp;pairs)
                   throws <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
@@ -930,7 +940,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>createReplicationEndpoint</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.241">createReplicationEndpoint</a>()
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.245">createReplicationEndpoint</a>()
                                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InstantiationException.html?is-external=true" title="class or interface in java.lang">InstantiationException</a>,
                                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalAccessException.html?is-external=true" title="class or interface in java.lang">IllegalAccessException</a>,
                                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a>,
@@ -950,7 +960,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>initAndStartReplicationEndpoint</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.274">initAndStartReplicationEndpoint</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a>&nbsp;replicationEndpoint)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.278">initAndStartReplicationEndpoint</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a>&nbsp;replicationEndpoint)
                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                              <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeoutException.html?is-external=true" title="class or interface in java.util.concurrent">TimeoutException</a></pre>
 <dl>
@@ -966,7 +976,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>initializeWALEntryFilter</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.287">initializeWALEntryFilter</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html?is-external=true" title="class or interface in java.util">UUID</a>&nbsp;peerClusterId)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.291">initializeWALEntryFilter</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html?is-external=true" title="class or interface in java.util">UUID</a>&nbsp;peerClusterId)</pre>
 </li>
 </ul>
 <a name="tryStartNewShipper-java.lang.String-java.util.concurrent.PriorityBlockingQueue-">
@@ -975,17 +985,48 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>tryStartNewShipper</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.299">tryStartNewShipper</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroupId,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.303">tryStartNewShipper</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroupId,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/PriorityBlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">PriorityBlockingQueue</a>&lt;org.apache.hadoop.fs.Path&gt;&nbsp;queue)</pre>
 </li>
 </ul>
+<a name="getWalGroupStatus--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getWalGroupStatus</h4>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.320">getWalGroupStatus</a>()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#getWalGroupStatus--">ReplicationSourceInterface</a></code></span></div>
+<div class="block">get the stat of replication for each wal group.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#getWalGroupStatus--">getWalGroupStatus</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceInterface</a></code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>stat of replication</dd>
+</dl>
+</li>
+</ul>
+<a name="getFileSize-org.apache.hadoop.fs.Path-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getFileSize</h4>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.352">getFileSize</a>(org.apache.hadoop.fs.Path&nbsp;currentPath)
+                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="createNewShipper-java.lang.String-java.util.concurrent.PriorityBlockingQueue-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>createNewShipper</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceShipper</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.315">createNewShipper</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroupId,
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceShipper</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.363">createNewShipper</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroupId,
                                                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/PriorityBlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">PriorityBlockingQueue</a>&lt;org.apache.hadoop.fs.Path&gt;&nbsp;queue)</pre>
 </li>
 </ul>
@@ -995,7 +1036,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>createNewWALReader</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceWALReader</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.320">createNewWALReader</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroupId,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceWALReader</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.368">createNewWALReader</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroupId,
                                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/PriorityBlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">PriorityBlockingQueue</a>&lt;org.apache.hadoop.fs.Path&gt;&nbsp;queue,
                                                       long&nbsp;startPosition)</pre>
 </li>
@@ -1006,7 +1047,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>uncaughtException</h4>
-<pre>protected final&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.327">uncaughtException</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a>&nbsp;t,
+<pre>protected final&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.375">uncaughtException</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a>&nbsp;t,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;e)</pre>
 </li>
 </ul>
@@ -1016,7 +1057,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationEndpoint</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.334">getReplicationEndpoint</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.382">getReplicationEndpoint</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#getReplicationEndpoint--">getReplicationEndpoint</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceInterface</a></code></dd>
@@ -1031,7 +1072,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getSourceManager</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.339">getSourceManager</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.387">getSourceManager</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#getSourceManager--">getSourceManager</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceInterface</a></code></dd>
@@ -1046,7 +1087,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>tryThrottle</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.344">tryThrottle</a>(int&nbsp;batchSize)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.392">tryThrottle</a>(int&nbsp;batchSize)
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#tryThrottle-int-">ReplicationSourceInterface</a></code></span></div>
 <div class="block">Try to throttle when the peer config with a bandwidth</div>
@@ -1066,7 +1107,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>checkBandwidthChangeAndResetThrottler</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.359">checkBandwidthChangeAndResetThrottler</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.407">checkBandwidthChangeAndResetThrottler</a>()</pre>
 </li>
 </ul>
 <a name="getCurrentBandwidth--">
@@ -1075,7 +1116,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentBandwidth</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.369">getCurrentBandwidth</a>()</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.417">getCurrentBandwidth</a>()</pre>
 </li>
 </ul>
 <a name="sleepForRetries-java.lang.String-int-">
@@ -1084,7 +1125,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>sleepForRetries</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.381">sleepForRetries</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.429">sleepForRetries</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg,
                                   int&nbsp;sleepMultiplier)</pre>
 <div class="block">Do the sleeping logic</div>
 <dl>
@@ -1102,7 +1143,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>initialize</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.394">initialize</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.442">initialize</a>()</pre>
 </li>
 </ul>
 <a name="startup--">
@@ -1111,7 +1152,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>startup</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.460">startup</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.508">startup</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#startup--">ReplicationSourceInterface</a></code></span></div>
 <div class="block">Start the replication</div>
 <dl>
@@ -1126,7 +1167,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>terminate</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.470">terminate</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;reason)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.518">terminate</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;reason)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#terminate-java.lang.String-">ReplicationSourceInterface</a></code></span></div>
 <div class="block">End the replication</div>
 <dl>
@@ -1143,7 +1184,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>terminate</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.475">terminate</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;reason,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.523">terminate</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;reason,
                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;cause)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#terminate-java.lang.String-java.lang.Exception-">ReplicationSourceInterface</a></code></span></div>
 <div class="block">End the replication</div>
@@ -1162,7 +1203,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>terminate</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.479">terminate</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;reason,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.527">terminate</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;reason,
                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;cause,
                       boolean&nbsp;join)</pre>
 </li>
@@ -1173,7 +1214,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getQueueId</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.543">getQueueId</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.591">getQueueId</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#getQueueId--">ReplicationSourceInterface</a></code></span></div>
 <div class="block">Get the queue id that the source is replicating to</div>
 <dl>
@@ -1190,7 +1231,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentPath</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.548">getCurrentPath</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.596">getCurrentPath</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#getCurrentPath--">ReplicationSourceInterface</a></code></span></div>
 <div class="block">Get the current log that's replicated</div>
 <dl>
@@ -1207,7 +1248,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>isSourceActive</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.559">isSourceActive</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.607">isSourceActive</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#isSourceActive--">isSourceActive</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceInterface</a></code></dd>
@@ -1222,7 +1263,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getStats</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.589">getStats</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.637">getStats</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#getStats--">ReplicationSourceInterface</a></code></span></div>
 <div class="block">Get a string representation of the current statistics
  for this source</div>
@@ -1240,7 +1281,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getSourceMetrics</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsSource</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.610">getSourceMetrics</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsSource</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.658">getSourceMetrics</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#getSourceMetrics--">getSourceMetrics</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceInterface</a></code></dd>
@@ -1255,7 +1296,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>postShipEdits</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.616">postShipEdits</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&gt;&nbsp;entries,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.664">postShipEdits</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&gt;&nbsp;entries,
                           int&nbsp;batchSize)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#postShipEdits-java.util.List-int-">ReplicationSourceInterface</a></code></span></div>
 <div class="block">Call this after the shipper thread ship some entries to peer cluster.</div>
@@ -1274,7 +1315,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getWALFileLengthProvider</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALFileLengthProvider.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">WALFileLengthProvider</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.625">getWALFileLengthProvider</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALFileLengthProvider.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">WALFileLengthProvider</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.673">getWALFileLengthProvider</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#getWALFileLengthProvider--">getWALFileLengthProvider</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceInterface</a></code></dd>
@@ -1289,7 +1330,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerWALsBelongTo</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.630">getServerWALsBelongTo</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.678">getServerWALsBelongTo</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#getServerWALsBelongTo--">ReplicationSourceInterface</a></code></span></div>
 <div class="block">The queue of WALs only belong to one region server. This will return the server name which all
  WALs belong to.</div>
@@ -1307,7 +1348,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getPeer</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeer</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.635">getPeer</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeer</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.683">getPeer</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#getPeer--">ReplicationSourceInterface</a></code></span></div>
 <div class="block">Get the replication peer instance.</div>
 <dl>
@@ -1324,7 +1365,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getServer</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.639">getServer</a>()</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.687">getServer</a>()</pre>
 </li>
 </ul>
 <a name="getQueueStorage--">
@@ -1333,7 +1374,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getQueueStorage</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueueStorage</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.643">getQueueStorage</a>()</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueueStorage</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.691">getQueueStorage</a>()</pre>
 </li>
 </ul>
 <a name="removeWorker-org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceShipper-">
@@ -1342,7 +1383,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/replication/region
 <ul class="blockListLast">
 <li class="blockList">
 <h4>removeWorker</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.647">removeWorker</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceShipper</a>&nbsp;worker)</pre>
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.695">removeWorker</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceShipper</a>&nbsp;worker)</pre>
 </li>
 </ul>
 </li>


[14/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html
index 05e032c..40ef9f4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html
@@ -25,767 +25,805 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.io.asyncfs;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.21"></a>
 <span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import com.google.protobuf.CodedOutputStream;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.io.IOException;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.lang.reflect.Field;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.lang.reflect.InvocationTargetException;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.lang.reflect.Method;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.net.InetAddress;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import java.net.InetSocketAddress;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import java.nio.ByteBuffer;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import java.security.GeneralSecurityException;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import java.util.Arrays;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import java.util.Collections;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import java.util.List;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import java.util.Map;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import java.util.Set;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import java.util.concurrent.TimeUnit;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>import javax.security.auth.callback.Callback;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import javax.security.auth.callback.CallbackHandler;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import javax.security.auth.callback.NameCallback;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import javax.security.auth.callback.PasswordCallback;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import javax.security.sasl.RealmCallback;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import javax.security.sasl.Sasl;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import javax.security.sasl.SaslClient;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import javax.security.sasl.SaslException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.commons.codec.binary.Base64;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.commons.lang3.StringUtils;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.conf.Configuration;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.slf4j.Logger;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.slf4j.LoggerFactory;<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>import com.google.protobuf.ByteString;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.security.token.Token;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>/**<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> */<a name="line.108"></a>
-<span class="sourceLineNo">109</span>@InterfaceAudience.Private<a name="line.109"></a>
-<span class="sourceLineNo">110</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private static final Logger LOG =<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.112"></a>
+<span class="sourceLineNo">023</span>import com.google.protobuf.ByteString;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import com.google.protobuf.CodedOutputStream;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.lang.reflect.Field;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.lang.reflect.InvocationTargetException;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.lang.reflect.Method;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.InetAddress;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.net.InetSocketAddress;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.nio.ByteBuffer;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.security.GeneralSecurityException;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Arrays;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Collections;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.List;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Map;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Set;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.concurrent.TimeUnit;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import javax.security.auth.callback.Callback;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import javax.security.auth.callback.CallbackHandler;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import javax.security.auth.callback.NameCallback;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import javax.security.auth.callback.PasswordCallback;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import javax.security.sasl.RealmCallback;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import javax.security.sasl.Sasl;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import javax.security.sasl.SaslClient;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import javax.security.sasl.SaslException;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.commons.codec.binary.Base64;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.commons.lang3.StringUtils;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.crypto.key.KeyProvider;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.security.token.Token;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.slf4j.Logger;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.LoggerFactory;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>/**<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.104"></a>
+<span class="sourceLineNo">105</span> */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>@InterfaceAudience.Private<a name="line.106"></a>
+<span class="sourceLineNo">107</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private static final Logger LOG =<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private static final String SERVER_NAME = "0";<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  private static final String PROTOCOL = "hdfs";<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  private static final String NAME_DELIMITER = " ";<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  private interface SaslAdaptor {<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.127"></a>
+<span class="sourceLineNo">114</span>  private static final String SERVER_NAME = "0";<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final String PROTOCOL = "hdfs";<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private static final String NAME_DELIMITER = " ";<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  private interface SaslAdaptor {<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
 <span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.132"></a>
+<span class="sourceLineNo">129</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  // helper class for convert protos.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private interface PBHelper {<a name="line.132"></a>
 <span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  // helper class for convert protos.<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  private interface PBHelper {<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.137"></a>
+<span class="sourceLineNo">134</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
 <span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final PBHelper PB_HELPER;<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private interface TransparentCryptoHelper {<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        throws IOException;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    Field saslPropsResolverField =<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    saslPropsResolverField.setAccessible(true);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    Field trustedChannelResolverField =<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    trustedChannelResolverField.setAccessible(true);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Field fallbackToSimpleAuthField =<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return new SaslAdaptor() {<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>      @Override<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        try {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        } catch (IllegalAccessException e) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>          throw new RuntimeException(e);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        }<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        try {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        } catch (IllegalAccessException e) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          throw new RuntimeException(e);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      }<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>      @Override<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        try {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (IllegalAccessException e) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          throw new RuntimeException(e);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    };<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    Class&lt;?&gt; helperClass;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    try {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } catch (ClassNotFoundException e) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    Method convertCipherOptionProtosMethod =<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    return new PBHelper() {<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>      @SuppressWarnings("unchecked")<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      @Override<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        try {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          throw new RuntimeException(e);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>      @SuppressWarnings("unchecked")<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      @Override<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        try {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>          throw new RuntimeException(e);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      }<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    };<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      throws NoSuchMethodException {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    return new TransparentCryptoHelper() {<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>      @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          DFSClient client) throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        try {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          KeyVersion decryptedKey =<a name="line.240"></a>
-<span class="sourceLineNo">241</span>              (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          return encryptor;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        } catch (InvocationTargetException e) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          throw new RuntimeException(e.getTargetException());<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        } catch (GeneralSecurityException e) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          throw new IOException(e);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        } catch (IllegalAccessException e) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          throw new RuntimeException(e);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      }<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    };<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  static {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    try {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      PB_HELPER = createPBHelper();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    } catch (Exception e) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          + "HBASE-16110 for more information.";<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      LOG.error(msg, e);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      throw new Error(msg, e);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>  /**<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    private final char[] password;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    private final String userName;<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>     * Creates a new SaslClientCallbackHandler.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>     * @param userName SASL user name<a name="line.282"></a>
-<span class="sourceLineNo">283</span>     * @Param password SASL password<a name="line.283"></a>
-<span class="sourceLineNo">284</span>     */<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      this.password = password;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      this.userName = userName;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    @Override<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      NameCallback nc = null;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      PasswordCallback pc = null;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      RealmCallback rc = null;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      for (Callback callback : callbacks) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          continue;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        } else if (callback instanceof NameCallback) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          nc = (NameCallback) callback;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        } else if (callback instanceof PasswordCallback) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>          pc = (PasswordCallback) callback;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        } else if (callback instanceof RealmCallback) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          rc = (RealmCallback) callback;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        } else {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      if (nc != null) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        nc.setName(userName);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      if (pc != null) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        pc.setPassword(password);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      if (rc != null) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        rc.setText(rc.getDefaultText());<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private final Configuration conf;<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    private final SaslClient saslClient;<a name="line.326"></a>
+<span class="sourceLineNo">139</span>  private static final PBHelper PB_HELPER;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  private interface TransparentCryptoHelper {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        throws IOException;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    Field saslPropsResolverField =<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    saslPropsResolverField.setAccessible(true);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    Field trustedChannelResolverField =<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    trustedChannelResolverField.setAccessible(true);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Field fallbackToSimpleAuthField =<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return new SaslAdaptor() {<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>      @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        try {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        } catch (IllegalAccessException e) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          throw new RuntimeException(e);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>      @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        try {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        } catch (IllegalAccessException e) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          throw new RuntimeException(e);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      }<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>      @Override<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        } catch (IllegalAccessException e) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          throw new RuntimeException(e);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    Class&lt;?&gt; helperClass;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    try {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    } catch (ClassNotFoundException e) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Method convertCipherOptionProtosMethod =<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    return new PBHelper() {<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>      @SuppressWarnings("unchecked")<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      @Override<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        try {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          throw new RuntimeException(e);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        }<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      }<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>      @SuppressWarnings("unchecked")<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          throw new RuntimeException(e);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    };<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  private static TransparentCryptoHelper createTransparentCryptoHelper27()<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      throws NoSuchMethodException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    return new TransparentCryptoHelper() {<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          DFSClient client) throws IOException {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          KeyVersion decryptedKey =<a name="line.237"></a>
+<span class="sourceLineNo">238</span>            (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          return encryptor;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        } catch (InvocationTargetException e) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          throw new RuntimeException(e.getTargetException());<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        } catch (GeneralSecurityException e) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          throw new IOException(e);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        } catch (IllegalAccessException e) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          throw new RuntimeException(e);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    };<a name="line.252"></a>
+<span class="sourceLineNo">253</span>  }<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>  private static TransparentCryptoHelper createTransparentCryptoHelper28()<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      throws ClassNotFoundException, NoSuchMethodException {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Class&lt;?&gt; hdfsKMSUtilCls = Class.forName("org.apache.hadoop.hdfs.HdfsKMSUtil");<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Method decryptEncryptedDataEncryptionKeyMethod = hdfsKMSUtilCls.getDeclaredMethod(<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      "decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class, KeyProvider.class);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    return new TransparentCryptoHelper() {<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>      @Override<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          DFSClient client) throws IOException {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        try {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          KeyVersion decryptedKey = (KeyVersion) decryptEncryptedDataEncryptionKeyMethod<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            .invoke(null, feInfo, client.getKeyProvider());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          return encryptor;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        } catch (InvocationTargetException e) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          throw new RuntimeException(e.getTargetException());<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        } catch (GeneralSecurityException e) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          throw new IOException(e);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        } catch (IllegalAccessException e) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>          throw new RuntimeException(e);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    };<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      throws NoSuchMethodException, ClassNotFoundException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      return createTransparentCryptoHelper27();<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    } catch (NoSuchMethodException e) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      LOG.debug("No decryptEncryptedDataEncryptionKey method in DFSClient, should be hadoop 2.8+",<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        e);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    return createTransparentCryptoHelper28();<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  static {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    try {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      PB_HELPER = createPBHelper();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    } catch (Exception e) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          + "HBASE-16110 for more information.";<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      LOG.error(msg, e);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      throw new Error(msg, e);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  }<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /**<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   */<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    private final char[] password;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    private final String userName;<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>    /**<a name="line.318"></a>
+<span class="sourceLineNo">319</span>     * Creates a new SaslClientCallbackHandler.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>     * @param userName SASL user name<a name="line.320"></a>
+<span class="sourceLineNo">321</span>     * @Param password SASL password<a name="line.321"></a>
+<span class="sourceLineNo">322</span>     */<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      this.password = password;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      this.userName = userName;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>    private final int timeoutMs;<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    private final Promise&lt;Void&gt; promise;<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>    private int step = 0;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      this.conf = conf;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      this.saslProps = saslProps;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      this.timeoutMs = timeoutMs;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      this.promise = promise;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    }<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      sendSaslMessage(ctx, payload, null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      // values for future expansion.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        return null;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    }<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      if (payload != null) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        // and we want to keep that out of hbase-server.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      }<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (options != null) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      int size = proto.getSerializedSize();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      ctx.write(buf);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>    @Override<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      ctx.flush();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      step++;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    }<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      saslClient.dispose();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        throw new IOException(proto.getMessage());<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    private String getNegotiatedQop() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>    private boolean isNegotiatedQopPrivacy() {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      String qop = getNegotiatedQop();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      return qop != null &amp;&amp; "auth-conf".equalsIgnoreCase(qop);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>    private boolean requestedQopContainsPrivacy() {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      Set&lt;String&gt; requestedQop =<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      return requestedQop.contains("auth-conf");<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>    private void checkSaslComplete() throws IOException {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      if (!saslClient.isComplete()) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        throw new IOException("Failed to complete SASL handshake");<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      Set&lt;String&gt; requestedQop =<a name="line.424"></a>
-<span class="sourceLineNo">425</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      String negotiatedQop = getNegotiatedQop();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      LOG.debug(<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        "Verifying QOP, requested QOP = " + requestedQop + ", negotiated QOP = " + negotiatedQop);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (!requestedQop.contains(negotiatedQop)) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        throw new IOException(String.format("SASL handshake completed, but "<a name="line.430"></a>
-<span class="sourceLineNo">431</span>            + "channel does not have acceptable quality of protection, "<a name="line.431"></a>
-<span class="sourceLineNo">432</span>            + "requested = %s, negotiated = %s",<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          requestedQop, negotiatedQop));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>    private boolean useWrap() {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      String qop = (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      return qop != null &amp;&amp; !"auth".equalsIgnoreCase(qop);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    private CipherOption unwrap(CipherOption option, SaslClient saslClient) throws IOException {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      byte[] inKey = option.getInKey();<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      if (inKey != null) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        inKey = saslClient.unwrap(inKey, 0, inKey.length);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      byte[] outKey = option.getOutKey();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      if (outKey != null) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        outKey = saslClient.unwrap(outKey, 0, outKey.length);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      }<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return new CipherOption(option.getCipherSuite(), inKey, option.getInIv(), outKey,<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          option.getOutIv());<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    }<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    private CipherOption getCipherOption(DataTransferEncryptorMessageProto proto,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        boolean isNegotiatedQopPrivacy, SaslClient saslClient) throws IOException {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      List&lt;CipherOption&gt; cipherOptions =<a name="line.457"></a>
-<span class="sourceLineNo">458</span>          PB_HELPER.convertCipherOptionProtos(proto.getCipherOptionList());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      if (cipherOptions == null || cipherOptions.isEmpty()) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        return null;<a name="line.460"></a>
+<span class="sourceLineNo">328</span>    @Override<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      NameCallback nc = null;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      PasswordCallback pc = null;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      RealmCallback rc = null;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      for (Callback callback : callbacks) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>          continue;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        } else if (callback instanceof NameCallback) {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          nc = (NameCallback) callback;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        } else if (callback instanceof PasswordCallback) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>          pc = (PasswordCallback) callback;<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        } else if (callback instanceof RealmCallback) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          rc = (RealmCallback) callback;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        } else {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      if (nc != null) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        nc.setName(userName);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      if (pc != null) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        pc.setPassword(password);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      if (rc != null) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        rc.setText(rc.getDefaultText());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>    private final Configuration conf;<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>    private final SaslClient saslClient;<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    private final int timeoutMs;<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>    private final Promise&lt;Void&gt; promise;<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>    private int step = 0;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      this.conf = conf;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      this.saslProps = saslProps;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      this.timeoutMs = timeoutMs;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      this.promise = promise;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      sendSaslMessage(ctx, payload, null);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      // values for future expansion.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        return null;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.395"></a>
+<span class="sourceLineNo">396</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      if (payload != null) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        // and we want to keep that out of hbase-server.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      if (options != null) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      int size = proto.getSerializedSize();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      ctx.write(buf);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>    @Override<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      ctx.flush();<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      step++;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    @Override<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      saslClient.dispose();<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        throw new IOException(proto.getMessage());<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    private String getNegotiatedQop() {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>    private boolean isNegotiatedQopPrivacy() {<a name="line.447"></a>
+<sp

<TRUNCATED>

[27/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html
index e23e8f7..cf50fff 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -186,37 +186,29 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
                long&nbsp;offHeapSizeDelta)</code>&nbsp;</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/regionserver/RegionServicesForStores.html#blockUpdates--">blockUpdates</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i2" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#getInMemoryCompactionPool--">getInMemoryCompactionPool</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i2" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#getMemStoreFlushSize--">getMemStoreFlushSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>(package private) long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#getMemStoreSize--">getMemStoreSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#getNumStores--">getNumStores</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#getRegionInfo--">getRegionInfo</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#getWAL--">getWAL</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#unblockUpdates--">unblockUpdates</a></span>()</code>&nbsp;</td>
-</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -295,31 +287,13 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="blockUpdates--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>blockUpdates</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#line.60">blockUpdates</a>()</pre>
-</li>
-</ul>
-<a name="unblockUpdates--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>unblockUpdates</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#line.64">unblockUpdates</a>()</pre>
-</li>
-</ul>
 <a name="addMemStoreSize-long-long-long-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>addMemStoreSize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#line.68">addMemStoreSize</a>(long&nbsp;dataSizeDelta,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#line.60">addMemStoreSize</a>(long&nbsp;dataSizeDelta,
                             long&nbsp;heapSizeDelta,
                             long&nbsp;offHeapSizeDelta)</pre>
 </li>
@@ -330,7 +304,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionInfo</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#line.72">getRegionInfo</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#line.64">getRegionInfo</a>()</pre>
 </li>
 </ul>
 <a name="getWAL--">
@@ -339,7 +313,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getWAL</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#line.76">getWAL</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#line.68">getWAL</a>()</pre>
 </li>
 </ul>
 <a name="getInMemoryCompactionPool--">
@@ -348,7 +322,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getInMemoryCompactionPool</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#line.80">getInMemoryCompactionPool</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#line.72">getInMemoryCompactionPool</a>()</pre>
 </li>
 </ul>
 <a name="getMemStoreFlushSize--">
@@ -357,7 +331,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getMemStoreFlushSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#line.82">getMemStoreFlushSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#line.74">getMemStoreFlushSize</a>()</pre>
 </li>
 </ul>
 <a name="getNumStores--">
@@ -366,7 +340,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumStores</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#line.86">getNumStores</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#line.78">getNumStores</a>()</pre>
 </li>
 </ul>
 <a name="getMemStoreSize--">
@@ -375,7 +349,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getMemStoreSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#line.91">getMemStoreSize</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#line.83">getMemStoreSize</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html b/devapidocs/org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html
index 84a1668..5d9b1ff 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":6,"i1":6,"i2":6};
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html#line.30">ReplicationSourceService</a>
+public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html#line.31">ReplicationSourceService</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ReplicationService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationService</a></pre>
 <div class="block">A source for a replication stream has to expose this service. This service allows an application
  to hook into the regionserver and watch for new transactions.</div>
@@ -139,12 +139,18 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Replication
 </td>
 </tr>
 <tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceManager</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html#getReplicationManager--">getReplicationManager</a></span>()</code>
+<div class="block">Returns the replication manager</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeers</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html#getReplicationPeers--">getReplicationPeers</a></span>()</code>
 <div class="block">Return the replication peers.</div>
 </td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/replication/regionserver/SyncReplicationPeerInfoProvider.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">SyncReplicationPeerInfoProvider</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html#getSyncReplicationPeerInfoProvider--">getSyncReplicationPeerInfoProvider</a></span>()</code>
 <div class="block">Returns an info provider for sync replication peer.</div>
@@ -178,7 +184,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Replication
 <ul class="blockList">
 <li class="blockList">
 <h4>getSyncReplicationPeerInfoProvider</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/replication/regionserver/SyncReplicationPeerInfoProvider.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">SyncReplicationPeerInfoProvider</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html#line.35">getSyncReplicationPeerInfoProvider</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/replication/regionserver/SyncReplicationPeerInfoProvider.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">SyncReplicationPeerInfoProvider</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html#line.36">getSyncReplicationPeerInfoProvider</a>()</pre>
 <div class="block">Returns an info provider for sync replication peer.</div>
 </li>
 </ul>
@@ -188,20 +194,30 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Replication
 <ul class="blockList">
 <li class="blockList">
 <h4>getPeerProcedureHandler</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/replication/regionserver/PeerProcedureHandler.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">PeerProcedureHandler</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html#line.40">getPeerProcedureHandler</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/replication/regionserver/PeerProcedureHandler.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">PeerProcedureHandler</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html#line.41">getPeerProcedureHandler</a>()</pre>
 <div class="block">Returns a Handler to handle peer procedures.</div>
 </li>
 </ul>
 <a name="getReplicationPeers--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>getReplicationPeers</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeers</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html#line.45">getReplicationPeers</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeers.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeers</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html#line.46">getReplicationPeers</a>()</pre>
 <div class="block">Return the replication peers.</div>
 </li>
 </ul>
+<a name="getReplicationManager--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getReplicationManager</h4>
+<pre><a href="../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceManager</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html#line.51">getReplicationManager</a>()</pre>
+<div class="block">Returns the replication manager</div>
+</li>
+</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/Segment.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/Segment.html b/devapidocs/org/apache/hadoop/hbase/regionserver/Segment.html
index 8d6eb3c..cb39bb0 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/Segment.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/Segment.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":9,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":6,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":9,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":6,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.48">Segment</a>
+public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.50">Segment</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a></pre>
 <div class="block">This is an abstraction of a segment maintained in a memstore, e.g., the active
@@ -180,6 +180,10 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#timeRangeTracker">timeRangeTracker</a></span></code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantReadWriteLock</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updatesLock">updatesLock</a></span></code>&nbsp;</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.regionserver.MemStoreSizing">
@@ -251,132 +255,142 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
        <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</code>&nbsp;</td>
 </tr>
 <tr id="i2" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareAndSetDataSize-long-long-">compareAndSetDataSize</a></span>(long&nbsp;expected,
+                     long&nbsp;updated)</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareRows-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareRows</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
            <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#decScannerCount--">decScannerCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#dump-org.slf4j.Logger-">dump</a></span>(org.slf4j.Logger&nbsp;log)</code>
 <div class="block">Dumps all cells of the segment into the given log</div>
 </td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>(package private) static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellLength-org.apache.hadoop.hbase.Cell-">getCellLength</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
 <div class="block">Get cell length after serialized in <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase"><code>KeyValue</code></a></div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellsCount--">getCellsCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellSet--">getCellSet</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getComparator--">getComparator</a></span>()</code>
 <div class="block">Returns the Cell comparator used by this segment</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getDataSize--">getDataSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getHeapSize--">getHeapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreLAB--">getMemStoreLAB</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreSize--">getMemStoreSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMinSequenceId--">getMinSequenceId</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getOffHeapSize--">getOffHeapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanner-long-">getScanner</a></span>(long&nbsp;readPoint)</code>
 <div class="block">Creates the scanner for the given read point</div>
 </td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanners-long-">getScanners</a></span>(long&nbsp;readPoint)</code>&nbsp;</td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getTimeRangeTracker--">getTimeRangeTracker</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
+<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantReadWriteLock</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getUpdatesLock--">getUpdatesLock</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i20" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#headSet-org.apache.hadoop.hbase.Cell-">headSet</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;firstKeyOnRow)</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>protected long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#heapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">heapSizeChange</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
-              boolean&nbsp;succ)</code>&nbsp;</td>
+              boolean&nbsp;allocated)</code>&nbsp;</td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incMemStoreSize-long-long-long-">incMemStoreSize</a></span>(long&nbsp;delta,
                long&nbsp;heapOverhead,
                long&nbsp;offHeapOverhead)</code>&nbsp;</td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incScannerCount--">incScannerCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>protected long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOffHeapSize-boolean-">indexEntryOffHeapSize</a></span>(boolean&nbsp;offHeap)</code>&nbsp;</td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>protected long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOnHeapSize-boolean-">indexEntryOnHeapSize</a></span>(boolean&nbsp;onHeap)</code>&nbsp;</td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code>protected abstract long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntrySize--">indexEntrySize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">internalAdd</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
            boolean&nbsp;mslabUsed,
-           <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+           <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+           boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isEmpty--">isEmpty</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isTagsPresent--">isTagsPresent</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#iterator--">iterator</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#last--">last</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i32" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                        boolean&nbsp;forceCloneOfBigCell)</code>
@@ -386,12 +400,12 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
  When a cell's size is too big (bigger than maxAlloc), it is not allocated on MSLAB.</div>
 </td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code>protected long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#offHeapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">offHeapSizeChange</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
-                 boolean&nbsp;succ)</code>&nbsp;</td>
+                 boolean&nbsp;allocated)</code>&nbsp;</td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#setCellSet-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.CellSet-">setCellSet</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSetOld,
           <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSetNew)</code>
@@ -399,34 +413,47 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
  immutable CellSet after its creation in immutable segment constructor</div>
 </td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i35" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#sharedLock--">sharedLock</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i36" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#sharedUnlock--">sharedUnlock</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i37" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#shouldSeek-org.apache.hadoop.hbase.io.TimeRange-long-">shouldSeek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a>&nbsp;tr,
           long&nbsp;oldestUnexpiredTS)</code>&nbsp;</td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i38" class="altColor">
 <td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#tailSet-org.apache.hadoop.hbase.Cell-">tailSet</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;firstCell)</code>
 <div class="block">Returns a subset of the segment cell set, which starts with the given cell</div>
 </td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i39" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#toString--">toString</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i36" class="altColor">
+<tr id="i40" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">updateMetaInfo</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
               boolean&nbsp;succ,
               boolean&nbsp;mslabUsed,
-              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+              boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
-<tr id="i37" class="rowColor">
+<tr id="i41" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
               boolean&nbsp;succ,
               <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
+<tr id="i42" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#waitForUpdates--">waitForUpdates</a></span>()</code>&nbsp;</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -462,7 +489,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>FIXED_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.50">FIXED_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.52">FIXED_OVERHEAD</a></pre>
 </li>
 </ul>
 <a name="DEEP_OVERHEAD">
@@ -471,7 +498,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>DEEP_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.55">DEEP_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.57">DEEP_OVERHEAD</a></pre>
 </li>
 </ul>
 <a name="cellSet">
@@ -480,7 +507,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>cellSet</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicReference.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicReference</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.58">cellSet</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicReference.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicReference</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.61">cellSet</a></pre>
 </li>
 </ul>
 <a name="comparator">
@@ -489,7 +516,16 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>comparator</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.59">comparator</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.62">comparator</a></pre>
+</li>
+</ul>
+<a name="updatesLock">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>updatesLock</h4>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantReadWriteLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.63">updatesLock</a></pre>
 </li>
 </ul>
 <a name="minSequenceId">
@@ -498,7 +534,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>minSequenceId</h4>
-<pre>protected&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.60">minSequenceId</a></pre>
+<pre>protected&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.64">minSequenceId</a></pre>
 </li>
 </ul>
 <a name="memStoreLAB">
@@ -507,7 +543,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>memStoreLAB</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.61">memStoreLAB</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.65">memStoreLAB</a></pre>
 </li>
 </ul>
 <a name="memStoreSizing">
@@ -516,7 +552,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>memStoreSizing</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.64">memStoreSizing</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.68">memStoreSizing</a></pre>
 </li>
 </ul>
 <a name="timeRangeTracker">
@@ -525,7 +561,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>timeRangeTracker</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.65">timeRangeTracker</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.69">timeRangeTracker</a></pre>
 </li>
 </ul>
 <a name="tagsPresent">
@@ -534,7 +570,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockListLast">
 <li class="blockList">
 <h4>tagsPresent</h4>
-<pre>protected volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.66">tagsPresent</a></pre>
+<pre>protected volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.70">tagsPresent</a></pre>
 </li>
 </ul>
 </li>
@@ -551,7 +587,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>Segment</h4>
-<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.70">Segment</a>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
+<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.74">Segment</a>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a>&nbsp;trt)</pre>
 </li>
 </ul>
@@ -561,7 +597,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>Segment</h4>
-<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.78">Segment</a>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
+<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.82">Segment</a>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt;&nbsp;segments,
                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a>&nbsp;trt)</pre>
 </li>
@@ -572,7 +608,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>Segment</h4>
-<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.97">Segment</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSet,
+<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.102">Segment</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSet,
                   <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB,
                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a>&nbsp;trt)</pre>
@@ -584,7 +620,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockListLast">
 <li class="blockList">
 <h4>Segment</h4>
-<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.109">Segment</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;segment)</pre>
+<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.115">Segment</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;segment)</pre>
 </li>
 </ul>
 </li>
@@ -601,7 +637,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanner</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.123">getScanner</a>(long&nbsp;readPoint)</pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.130">getScanner</a>(long&nbsp;readPoint)</pre>
 <div class="block">Creates the scanner for the given read point</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -615,7 +651,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanners</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.127">getScanners</a>(long&nbsp;readPoint)</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.134">getScanners</a>(long&nbsp;readPoint)</pre>
 </li>
 </ul>
 <a name="isEmpty--">
@@ -624,7 +660,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>isEmpty</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.134">isEmpty</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.141">isEmpty</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>whether the segment has any cells</dd>
@@ -637,7 +673,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getCellsCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.141">getCellsCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.148">getCellsCount</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>number of cells in segment</dd>
@@ -650,7 +686,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.148">close</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.155">close</a>()</pre>
 <div class="block">Closing a segment before it is being discarded</div>
 </li>
 </ul>
@@ -660,7 +696,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>maybeCloneWithAllocator</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.167">maybeCloneWithAllocator</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.174">maybeCloneWithAllocator</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                                     boolean&nbsp;forceCloneOfBigCell)</pre>
 <div class="block">If the segment has a memory allocator the cell is being cloned to this space, and returned;
  otherwise the given cell is returned
@@ -681,7 +717,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getCellLength</h4>
-<pre>static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.185">getCellLength</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<pre>static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.192">getCellLength</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
 <div class="block">Get cell length after serialized in <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase"><code>KeyValue</code></a></div>
 </li>
 </ul>
@@ -691,7 +727,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldSeek</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.189">shouldSeek</a>(<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a>&nbsp;tr,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.197">shouldSeek</a>(<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a>&nbsp;tr,
                           long&nbsp;oldestUnexpiredTS)</pre>
 </li>
 </ul>
@@ -701,7 +737,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>isTagsPresent</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.195">isTagsPresent</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.203">isTagsPresent</a>()</pre>
 </li>
 </ul>
 <a name="incScannerCount--">
@@ -710,7 +746,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>incScannerCount</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.199">incScannerCount</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.207">incScannerCount</a>()</pre>
 </li>
 </ul>
 <a name="decScannerCount--">
@@ -719,7 +755,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>decScannerCount</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.205">decScannerCount</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.213">decScannerCount</a>()</pre>
 </li>
 </ul>
 <a name="setCellSet-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.CellSet-">
@@ -728,7 +764,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>setCellSet</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.217">setCellSet</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSetOld,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.225">setCellSet</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSetOld,
                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSetNew)</pre>
 <div class="block">Setting the CellSet of the segment - used only for flat immutable segment for setting
  immutable CellSet after its creation in immutable segment constructor</div>
@@ -744,7 +780,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getMemStoreSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.223">getMemStoreSize</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.231">getMemStoreSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#getMemStoreSize--">getMemStoreSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a></code></dd>
@@ -760,7 +796,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.228">getDataSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.236">getDataSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#getDataSize--">getDataSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a></code></dd>
@@ -773,7 +809,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getHeapSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.233">getHeapSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.241">getHeapSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#getHeapSize--">getHeapSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a></code></dd>
@@ -786,7 +822,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getOffHeapSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.238">getOffHeapSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.246">getOffHeapSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#getOffHeapSize--">getOffHeapSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a></code></dd>
@@ -799,7 +835,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>incMemStoreSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.243">incMemStoreSize</a>(long&nbsp;delta,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.251">incMemStoreSize</a>(long&nbsp;delta,
                             long&nbsp;heapOverhead,
                             long&nbsp;offHeapOverhead)</pre>
 <dl>
@@ -810,13 +846,54 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 </dl>
 </li>
 </ul>
+<a name="sharedLock--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>sharedLock</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.255">sharedLock</a>()</pre>
+</li>
+</ul>
+<a name="sharedUnlock--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>sharedUnlock</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.259">sharedUnlock</a>()</pre>
+</li>
+</ul>
+<a name="waitForUpdates--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>waitForUpdates</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.263">waitForUpdates</a>()</pre>
+</li>
+</ul>
+<a name="compareAndSetDataSize-long-long-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>compareAndSetDataSize</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.270">compareAndSetDataSize</a>(long&nbsp;expected,
+                                     long&nbsp;updated)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#compareAndSetDataSize-long-long-">compareAndSetDataSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="getMinSequenceId--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getMinSequenceId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.247">getMinSequenceId</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.274">getMinSequenceId</a>()</pre>
 </li>
 </ul>
 <a name="getTimeRangeTracker--">
@@ -825,7 +902,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getTimeRangeTracker</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.251">getTimeRangeTracker</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.278">getTimeRangeTracker</a>()</pre>
 </li>
 </ul>
 <a name="last--">
@@ -834,7 +911,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>last</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.256">last</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.283">last</a>()</pre>
 </li>
 </ul>
 <a name="iterator--">
@@ -843,7 +920,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>iterator</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.260">iterator</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.287">iterator</a>()</pre>
 </li>
 </ul>
 <a name="headSet-org.apache.hadoop.hbase.Cell-">
@@ -852,7 +929,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>headSet</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.264">headSet</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;firstKeyOnRow)</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.291">headSet</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;firstKeyOnRow)</pre>
 </li>
 </ul>
 <a name="compare-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">
@@ -861,7 +938,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.268">compare</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.295">compare</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
                    <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</pre>
 </li>
 </ul>
@@ -871,7 +948,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>compareRows</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.272">compareRows</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.299">compareRows</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
                        <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</pre>
 </li>
 </ul>
@@ -881,7 +958,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getCellSet</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.279">getCellSet</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.306">getCellSet</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>a set of all cells in the segment</dd>
@@ -894,7 +971,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getComparator</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.287">getComparator</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.314">getComparator</a>()</pre>
 <div class="block">Returns the Cell comparator used by this segment</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -902,27 +979,29 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 </dl>
 </li>
 </ul>
-<a name="internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
+<a name="internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>internalAdd</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.291">internalAdd</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.318">internalAdd</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                            boolean&nbsp;mslabUsed,
-                           <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
+                           <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+                           boolean&nbsp;sizeAddedPreOperation)</pre>
 </li>
 </ul>
-<a name="updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
+<a name="updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>updateMetaInfo</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.296">updateMetaInfo</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.324">updateMetaInfo</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
                               boolean&nbsp;succ,
                               boolean&nbsp;mslabUsed,
-                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
+                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+                              boolean&nbsp;sizeAddedPreOperation)</pre>
 </li>
 </ul>
 <a name="updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
@@ -931,7 +1010,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>updateMetaInfo</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.322">updateMetaInfo</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.354">updateMetaInfo</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
                               boolean&nbsp;succ,
                               <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 </li>
@@ -942,8 +1021,8 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>heapSizeChange</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.330">heapSizeChange</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
-                              boolean&nbsp;succ)</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.362">heapSizeChange</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+                              boolean&nbsp;allocated)</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The increase in heap size because of this cell addition. This includes this cell POJO's
@@ -957,8 +1036,8 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>offHeapSizeChange</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.347">offHeapSizeChange</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
-                                 boolean&nbsp;succ)</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.379">offHeapSizeChange</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+                                 boolean&nbsp;allocated)</pre>
 </li>
 </ul>
 <a name="indexEntryOnHeapSize-boolean-">
@@ -967,7 +1046,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>indexEntryOnHeapSize</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.364">indexEntryOnHeapSize</a>(boolean&nbsp;onHeap)</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.396">indexEntryOnHeapSize</a>(boolean&nbsp;onHeap)</pre>
 </li>
 </ul>
 <a name="indexEntryOffHeapSize-boolean-">
@@ -976,7 +1055,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>indexEntryOffHeapSize</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.370">indexEntryOffHeapSize</a>(boolean&nbsp;offHeap)</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.402">indexEntryOffHeapSize</a>(boolean&nbsp;offHeap)</pre>
 </li>
 </ul>
 <a name="indexEntrySize--">
@@ -985,7 +1064,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>indexEntrySize</h4>
-<pre>protected abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.376">indexEntrySize</a>()</pre>
+<pre>protected abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.408">indexEntrySize</a>()</pre>
 </li>
 </ul>
 <a name="tailSet-org.apache.hadoop.hbase.Cell-">
@@ -994,7 +1073,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>tailSet</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.383">tailSet</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;firstCell)</pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.415">tailSet</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;firstCell)</pre>
 <div class="block">Returns a subset of the segment cell set, which starts with the given cell</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1010,7 +1089,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getMemStoreLAB</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.388">getMemStoreLAB</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.420">getMemStoreLAB</a>()</pre>
 </li>
 </ul>
 <a name="dump-org.slf4j.Logger-">
@@ -1019,23 +1098,32 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>dump</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.396">dump</a>(org.slf4j.Logger&nbsp;log)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.428">dump</a>(org.slf4j.Logger&nbsp;log)</pre>
 <div class="block">Dumps all cells of the segment into the given log</div>
 </li>
 </ul>
 <a name="toString--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.403">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.435">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
 </dl>
 </li>
 </ul>
+<a name="getUpdatesLock--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getUpdatesLock</h4>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantReadWriteLock</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Segment.html#line.446">getUpdatesLock</a>()</pre>
+</li>
+</ul>
 </li>
 </ul>
 </li>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/Cacheable.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/Cacheable.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/Cacheable.html
index deef407..4a3c74b 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/Cacheable.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/Cacheable.html
@@ -329,6 +329,15 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">BlockCacheUtil.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#shouldReplaceExistingCacheBlock-org.apache.hadoop.hbase.io.hfile.BlockCache-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.Cacheable-">shouldReplaceExistingCacheBlock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a>&nbsp;blockCache,
+                               <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
+                               <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;newBlock)</code>
+<div class="block">Because of the region splitting, it's possible that the split key locate in the middle of a
+ block.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><span class="typeNameLabel">BlockCacheUtil.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#validateBlockAddition-org.apache.hadoop.hbase.io.hfile.Cacheable-org.apache.hadoop.hbase.io.hfile.Cacheable-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-">validateBlockAddition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;existing,
                      <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;newBlock,
@@ -478,7 +487,7 @@
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">BucketCache.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#cacheBlockWithWait-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.Cacheable-boolean-boolean-">cacheBlockWithWait</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
                   <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;cachedItem,
                   boolean&nbsp;inMemory,
@@ -487,6 +496,13 @@
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">BucketCache.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#cacheBlockWithWaitInternal-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.Cacheable-boolean-boolean-">cacheBlockWithWaitInternal</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
+                          <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;cachedItem,
+                          boolean&nbsp;inMemory,
+                          boolean&nbsp;wait)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">BucketCache.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#returnBlock-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.Cacheable-">returnBlock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
            <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;block)</code>&nbsp;</td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
index f742eab..4864878 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -273,12 +273,12 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">HFileBlock.Writer.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.BlockCategory.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType.BlockCategory</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">CacheConfig.ExternalBlockCaches</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/ipc/RpcServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/RpcServer.html b/devapidocs/org/apache/hadoop/hbase/ipc/RpcServer.html
index 8411756..e0d6d30 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/RpcServer.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/RpcServer.html
@@ -1192,7 +1192,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockListLast">
 <li class="blockList">
 <h4>NIO_BUFFER_LIMIT</h4>
-<pre>protected static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.562">NIO_BUFFER_LIMIT</a></pre>
+<pre>protected static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.569">NIO_BUFFER_LIMIT</a></pre>
 <div class="block">When the read or write buffer size is larger than this limit, i/o will be
  done in chunks of this size. Most RPC requests and responses would be
  be smaller.</div>
@@ -1407,7 +1407,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>setErrorHandler</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.518">setErrorHandler</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRPCErrorHandler.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRPCErrorHandler</a>&nbsp;handler)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.525">setErrorHandler</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRPCErrorHandler.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRPCErrorHandler</a>&nbsp;handler)</pre>
 <div class="block">Set the handler for calling out of RPC for error conditions.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1423,7 +1423,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getErrorHandler</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRPCErrorHandler.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRPCErrorHandler</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.523">getErrorHandler</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRPCErrorHandler.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRPCErrorHandler</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.530">getErrorHandler</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterface.html#getErrorHandler--">getErrorHandler</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterface.html" title="interface in org.apache.hadoop.hbase.ipc">RpcServerInterface</a></code></dd>
@@ -1436,7 +1436,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetrics</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServer.html" title="class in org.apache.hadoop.hbase.ipc">MetricsHBaseServer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.531">getMetrics</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServer.html" title="class in org.apache.hadoop.hbase.ipc">MetricsHBaseServer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.538">getMetrics</a>()</pre>
 <div class="block">Returns the metrics instance for reporting RPC call statistics</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1450,7 +1450,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>addCallSize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.536">addCallSize</a>(long&nbsp;diff)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.543">addCallSize</a>(long&nbsp;diff)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterface.html#addCallSize-long-">RpcServerInterface</a></code></span></div>
 <div class="block">Add/subtract from the current size of all outstanding calls.  Called on setup of a call to add
  call total size and then again at end of a call to remove the call size.</div>
@@ -1468,7 +1468,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>authorize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.547">authorize</a>(org.apache.hadoop.security.UserGroupInformation&nbsp;user,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.554">authorize</a>(org.apache.hadoop.security.UserGroupInformation&nbsp;user,
                       org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.ConnectionHeader&nbsp;connection,
                       <a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</a>&nbsp;addr)
                throws org.apache.hadoop.security.authorize.AuthorizationException</pre>
@@ -1489,7 +1489,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>channelRead</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.576">channelRead</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/channels/ReadableByteChannel.html?is-external=true" title="class or interface in java.nio.channels">ReadableByteChannel</a>&nbsp;channel,
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.583">channelRead</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/channels/ReadableByteChannel.html?is-external=true" title="class or interface in java.nio.channels">ReadableByteChannel</a>&nbsp;channel,
                           <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buffer)
                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">This is a wrapper around <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/channels/ReadableByteChannel.html?is-external=true#read-java.nio.ByteBuffer-" title="class or interface in java.nio.channels"><code>ReadableByteChannel.read(java.nio.ByteBuffer)</code></a>.
@@ -1515,7 +1515,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>channelIO</h4>
-<pre>private static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.598">channelIO</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/channels/ReadableByteChannel.html?is-external=true" title="class or interface in java.nio.channels">ReadableByteChannel</a>&nbsp;readCh,
+<pre>private static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.605">channelIO</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/channels/ReadableByteChannel.html?is-external=true" title="class or interface in java.nio.channels">ReadableByteChannel</a>&nbsp;readCh,
                              <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/channels/WritableByteChannel.html?is-external=true" title="class or interface in java.nio.channels">WritableByteChannel</a>&nbsp;writeCh,
                              <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1541,7 +1541,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>allocateByteBuffToReadInto</h4>
-<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>,<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.CallCleanup.html" title="interface in org.apache.hadoop.hbase.ipc">RpcServer.CallCleanup</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.636">allocateByteBuffToReadInto</a>(<a href="../../../../../org/apache/hadoop/hbase/io/ByteBufferPool.html" title="class in org.apache.hadoop.hbase.io">ByteBufferPool</a>&nbsp;pool,
+<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>,<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.CallCleanup.html" title="interface in org.apache.hadoop.hbase.ipc">RpcServer.CallCleanup</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.643">allocateByteBuffToReadInto</a>(<a href="../../../../../org/apache/hadoop/hbase/io/ByteBufferPool.html" title="class in org.apache.hadoop.hbase.io">ByteBufferPool</a>&nbsp;pool,
                                                                        int&nbsp;minSizeForPoolUse,
                                                                        int&nbsp;reqLen)</pre>
 <div class="block">This is extracted to a static method for better unit testing. We try to get buffer(s) from pool
@@ -1561,7 +1561,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentCall</h4>
-<pre>public static&nbsp;<a href="https://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/ipc/RpcCall.html" title="interface in org.apache.hadoop.hbase.ipc">RpcCall</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.681">getCurrentCall</a>()</pre>
+<pre>public static&nbsp;<a href="https://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/ipc/RpcCall.html" title="interface in org.apache.hadoop.hbase.ipc">RpcCall</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.688">getCurrentCall</a>()</pre>
 <div class="block">Needed for features such as delayed calls.  We need to be able to store the current call
  so that we can complete it later or ask questions of what is supported by the current ongoing
  call.</div>
@@ -1577,7 +1577,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>isInRpcCallContext</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.685">isInRpcCallContext</a>()</pre>
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.692">isInRpcCallContext</a>()</pre>
 </li>
 </ul>
 <a name="getRequestUser--">
@@ -1586,7 +1586,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getRequestUser</h4>
-<pre>public static&nbsp;<a href="https://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/ipc/RpcServer.html#line.694">getRequestUser</a>()</pre>
+<pre>public static&nbsp;<a href="https://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/ipc/RpcServer.html#line.701">getRequestUser</a>()</pre>
 <div class="block">Returns the user credentials associated with the current RPC request or not present if no
  credentials were provided.</div>
 <dl>
@@ -1601,7 +1601,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumOpenConnections</h4>
-<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.703">getNumOpenConnections</a>()</pre>
+<pre>public abstract&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.710">getNumOpenConnections</a>()</pre>
 <div class="block">The number of open RPC conections</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1615,7 +1615,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getRequestUserName</h4>
-<pre>public static&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.709">getRequestUserName</a>()</pre>
+<pre>public static&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.716">getRequestUserName</a>()</pre>
 <div class="block">Returns the username for any user associated with the current RPC
  request or not present if no user is set.</div>
 </li>
@@ -1626,7 +1626,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getRemoteAddress</h4>
-<pre>public static&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.716">getRemoteAddress</a>()</pre>
+<pre>public static&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.723">getRemoteAddress</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Address of remote client if a request is ongoing, else null</dd>
@@ -1639,7 +1639,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getServiceAndInterface</h4>
-<pre>protected static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.BlockingServiceAndInterface.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.BlockingServiceAndInterface</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.725">getServiceAndInterface</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.BlockingServiceAndInterface.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.BlockingServiceAndInterface</a>&gt;&nbsp;services,
+<pre>protected static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.BlockingServiceAndInterface.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.BlockingServiceAndInterface</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.732">getServiceAndInterface</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.BlockingServiceAndInterface.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.BlockingServiceAndInterface</a>&gt;&nbsp;services,
                                                                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;serviceName)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1656,7 +1656,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getServiceInterface</h4>
-<pre>protected static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.740">getServiceInterface</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.BlockingServiceAndInterface.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.BlockingServiceAndInterface</a>&gt;&nbsp;services,
+<pre>protected static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.747">getServiceInterface</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.BlockingServiceAndInterface.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.BlockingServiceAndInterface</a>&gt;&nbsp;services,
                                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;serviceName)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1673,7 +1673,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getService</h4>
-<pre>protected static&nbsp;org.apache.hbase.thirdparty.com.google.protobuf.BlockingService&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.753">getService</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.BlockingServiceAndInterface.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.BlockingServiceAndInterface</a>&gt;&nbsp;services,
+<pre>protected static&nbsp;org.apache.hbase.thirdparty.com.google.protobuf.BlockingService&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.760">getService</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.BlockingServiceAndInterface.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.BlockingServiceAndInterface</a>&gt;&nbsp;services,
                                                                                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;serviceName)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1690,7 +1690,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getStatus</h4>
-<pre>protected static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredRPCHandler.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredRPCHandler</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.761">getStatus</a>()</pre>
+<pre>protected static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredRPCHandler.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredRPCHandler</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.768">getStatus</a>()</pre>
 </li>
 </ul>
 <a name="getRemoteIp--">
@@ -1699,7 +1699,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getRemoteIp</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.777">getRemoteIp</a>()</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html?is-external=true" title="class or interface in java.net">InetAddress</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.784">getRemoteIp</a>()</pre>
 <div class="block">Returns the remote side ip address when invoked inside an RPC
   Returns null incase of an error.</div>
 <dl>
@@ -1714,7 +1714,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockList">
 <li class="blockList">
 <h4>getScheduler</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc">RpcScheduler</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.786">getScheduler</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc">RpcScheduler</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.793">getScheduler</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterface.html#getScheduler--">getScheduler</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterface.html" title="interface in org.apache.hadoop.hbase.ipc">RpcServerInterface</a></code></dd>
@@ -1727,7 +1727,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterfac
 <ul class="blockListLast">
 <li class="blockList">
 <h4>setRsRpcServices</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.791">setRsRpcServices</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RSRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">RSRpcServices</a>&nbsp;rsRpcServices)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/RpcServer.html#line.798">setRsRpcServices</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RSRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">RSRpcServices</a>&nbsp;rsRpcServices)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterface.html#setRsRpcServices-org.apache.hadoop.hbase.regionserver.RSRpcServices-">setRsRpcServices</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServerInterface.html" title="interface in org.apache.hadoop.hbase.ipc">RpcServerInterface</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
index 29a79fd..1f90dde 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
@@ -349,9 +349,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallAction.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BufferCallBeforeInitHandler.BufferCallAction</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/CallEvent.Type.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">CallEvent.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceFactoryImpl.SourceStorage.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">MetricsHBaseServerSourceFactoryImpl.SourceStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallAction.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BufferCallBeforeInitHandler.BufferCallAction</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
index bb1360e..e510000 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
@@ -1444,7 +1444,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#abort-java.lang.String-">abort</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#addRegion-org.apache.hadoop.hbase.regionserver.HRegion-">addRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#addToMovedRegions-java.lang.String-org.apache.hadoop.hbase.ServerName-long-">addToMovedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#checkFileSystem--">checkFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#cleanMovedRegions--">cleanMovedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#clearRegionBlockCache-org.apache.hadoop.hbase.regionserver.Region-">clearRegionBlockCache</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeAllRegions-boolean-">closeAllRegions</a
 >, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeAndOfflineRegionForSplitOrMerge-java.util.List-">closeAndOfflineRegionForSplitOrMerge</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeRegion-java.lang.String-boolean-org.apache.hadoop.hbase.ServerName-">closeRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#constructRegionServer-java.lang.Class-org.apache.hadoop.conf.Configuration-">constructRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#convertThrowableToIOE-java.lang.Throwable-java.lang.String-">convertThrowableToIOE</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createClusterConnection--">createClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createConnection-org.apache.hadoop.conf.Configuration-">createConnection</a>, <
 a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionLoad-java.lang.String-">createRegionLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionServerStatusStub--">createRegionServerStatusStub</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionServerStatusStub-boolean-">createRegionServerStatusStub</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#execRegionServerService-org.apache.hbase.thirdparty.com.google.protobuf.RpcController-org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceRequest-">execRegionServerService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#executeProcedure-long-org.apache.hadoop.hbase.procedure2.RSProcedureCallable-">executeProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCacheConfig
 --">getCacheConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getChoreService--">getChoreService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getClusterConnection--">getClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getClusterId--">getClusterId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactionPressure--">getCompactionPressure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactionRequestor--">getCompactionRequestor</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactSplitThread--">getCompactSplitThread</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConfiguration--">getConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConfig
 urationManager--">getConfigurationManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConnection--">getConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCoordinatedStateManager--">getCoordinatedStateManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getEventLoopGroupConfig--">getEventLoopGroupConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getExecutorService--">getExecutorService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFavoredNodesForRegion-java.lang.String-">getFavoredNodesForRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFileSystem--">getFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFlushPressure--">getFlushPressure</a>, <a href="../../../../../org/apache/had
 oop/hbase/regionserver/HRegionServer.html#getFlushRequester--">getFlushRequester</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFlushThroughputController--">getFlushThroughputController</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFsTableDescriptors--">getFsTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getHeapMemoryManager--">getHeapMemoryManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getInfoServer--">getInfoServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getLastSequenceId-byte:A-">getLastSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getLeases--">getLeases</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMasterAddressTracker--">getMasterAddressTracker</a>, <a href="../.
 ./../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetaTableLocator--">getMetaTableLocator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetrics--">getMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMostLoadedRegions--">getMostLoadedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getNonceManager--">getNonceManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getNumberOfOnlineRegions--">getNumberOfOnlineRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineRegion-byte:A-">getOnlineRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineRegionsLocalContext--">getOnlineRegionsLocalContext</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineTables--">getOnlineTabl
 es</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegion-byte:A-">getRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegion-java.lang.String-">getRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionBlockLocations-java.lang.String-">getRegionBlockLocations</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionByEncodedName-byte:A-java.lang.String-">getRegionByEncodedName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionByEncodedName-java.lang.String-">getRegionByEncodedName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegions--">getRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegions-org.apache.hadoop.hbase.TableName-">getRegions</a>, <a href="../../../../../org/apache/hado
 op/hbase/regionserver/HRegionServer.html#getRegionServerAccounting--">getRegionServerAccounting</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerCoprocessorHost--">getRegionServerCoprocessorHost</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerCoprocessors--">getRegionServerCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerMetrics--">getRegionServerMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerRpcQuotaManager--">getRegionServerRpcQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerSpaceQuotaManager--">getRegionServerSpaceQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionsInTransitionInRS--">getRegionsInTransitionInRS</a>, <a href="../../../../.
 ./org/apache/hadoop/hbase/regionserver/HRegionServer.html#getReplicationSinkService--">getReplicationSinkService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getReplicationSourceService--">getReplicationSourceService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRootDir--">getRootDir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRpcServer--">getRpcServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRSRpcServices--">getRSRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getSecureBulkLoadManager--">getSecureBulkLoadManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getStartcode--">getStartcode</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getThreadWakeFrequency--">getThreadWakeFrequency</a>, <a 
 href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWAL-org.apache.hadoop.hbase.client.RegionInfo-">getWAL</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALFileSystem--">getWALFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWalRoller--">getWalRoller</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALRootDir--">getWALRootDir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALs--">getWALs</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#handleReportForDutyResponse-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse-">handleReportForDutyResponse</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#initializeMemStoreChunkCreator--">initializeMemStoreChunkCreator</a>, <a hr
 ef="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isAborted--">isAborted</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isClusterUp--">isClusterUp</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isOnline--">isOnline</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isShutDown--">isShutDown</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopped--">isStopped</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopping--">isStopping</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#kill--">kill</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#movedRegionCleanerPeriod--">movedRegionCleanerPeriod</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#onConfigurationChange-org.apache
 .hadoop.conf.Configuration-">onConfigurationChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#postOpenDeployTasks-org.apache.hadoop.hbase.regionserver.RegionServerServices.PostOpenDeployContext-">postOpenDeployTasks</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#regionLock-java.util.List-java.lang.String-org.apache.hadoop.hbase.Abortable-">regionLock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#remoteProcedureComplete-long-java.lang.Throwable-">remoteProcedureComplete</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#removeRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.ServerName-">removeRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportFileArchivalForQuotas-org.apache.hadoop.hbase.TableName-java.util.Collection-">reportFileArchivalForQuotas</a>, <a href=
 "../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportRegionSizesForQuotas-org.apache.hadoop.hbase.quotas.RegionSizeStore-">reportRegionSizesForQuotas</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportRegionStateTransition-org.apache.hadoop.hbase.regionserver.RegionServerServices.RegionStateTransitionContext-">reportRegionStateTransition</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#sendShutdownInterrupt--">sendShutdownInterrupt</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#setupClusterConnection--">setupClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#stop-java.lang.String-boolean-org.apache.hadoop.hbase.security.User-">stop</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#toString--">toString</a>, <a href="../../../../../org/apache/hadoop/hbase/regions
 erver/HRegionServer.html#tryRegionServerReport-long-long-">tryRegionServerReport</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#unassign-byte:A-">unassign</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#updateConfiguration--">updateConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#updateRegionFavoredNodesMapping-java.lang.String-java.util.List-">updateRegionFavoredNodesMapping</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#waitForServerOnline--">waitForServerOnline</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#walRollRequestFinished--">walRollRequestFinished</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#abort-java.lang.String-">abort</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#addRegion-org.apache.hadoop.hbase.regionserver.HRegion-">addRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#addToMovedRegions-java.lang.String-org.apache.hadoop.hbase.ServerName-long-">addToMovedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#checkFileSystem--">checkFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#cleanMovedRegions--">cleanMovedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#clearRegionBlockCache-org.apache.hadoop.hbase.regionserver.Region-">clearRegionBlockCache</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeAllRegions-boolean-">closeAllRegions</a
 >, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeAndOfflineRegionForSplitOrMerge-java.util.List-">closeAndOfflineRegionForSplitOrMerge</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeRegion-java.lang.String-boolean-org.apache.hadoop.hbase.ServerName-">closeRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#constructRegionServer-java.lang.Class-org.apache.hadoop.conf.Configuration-">constructRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#convertThrowableToIOE-java.lang.Throwable-java.lang.String-">convertThrowableToIOE</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createClusterConnection--">createClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createConnection-org.apache.hadoop.conf.Configuration-">createConnection</a>, <
 a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionLoad-java.lang.String-">createRegionLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionServerStatusStub--">createRegionServerStatusStub</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionServerStatusStub-boolean-">createRegionServerStatusStub</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#execRegionServerService-org.apache.hbase.thirdparty.com.google.protobuf.RpcController-org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceRequest-">execRegionServerService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#executeProcedure-long-org.apache.hadoop.hbase.procedure2.RSProcedureCallable-">executeProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCacheConfig
 --">getCacheConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getChoreService--">getChoreService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getClusterConnection--">getClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getClusterId--">getClusterId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactionPressure--">getCompactionPressure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactionRequestor--">getCompactionRequestor</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactSplitThread--">getCompactSplitThread</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConfiguration--">getConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConfig
 urationManager--">getConfigurationManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConnection--">getConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCoordinatedStateManager--">getCoordinatedStateManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getEventLoopGroupConfig--">getEventLoopGroupConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getExecutorService--">getExecutorService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFavoredNodesForRegion-java.lang.String-">getFavoredNodesForRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFileSystem--">getFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFlushPressure--">getFlushPressure</a>, <a href="../../../../../org/apache/had
 oop/hbase/regionserver/HRegionServer.html#getFlushRequester--">getFlushRequester</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFlushThroughputController--">getFlushThroughputController</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFsTableDescriptors--">getFsTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getHeapMemoryManager--">getHeapMemoryManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getInfoServer--">getInfoServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getLastSequenceId-byte:A-">getLastSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getLeases--">getLeases</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMasterAddressTracker--">getMasterAddressTracker</a>, <a href="../.
 ./../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetaTableLocator--">getMetaTableLocator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetrics--">getMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMostLoadedRegions--">getMostLoadedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getNonceManager--">getNonceManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getNumberOfOnlineRegions--">getNumberOfOnlineRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineRegion-byte:A-">getOnlineRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineRegionsLocalContext--">getOnlineRegionsLocalContext</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineTables--">getOnlineTabl
 es</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegion-byte:A-">getRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegion-java.lang.String-">getRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionBlockLocations-java.lang.String-">getRegionBlockLocations</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionByEncodedName-byte:A-java.lang.String-">getRegionByEncodedName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionByEncodedName-java.lang.String-">getRegionByEncodedName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegions--">getRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegions-org.apache.hadoop.hbase.TableName-">getRegions</a>, <a href="../../../../../org/apache/hado
 op/hbase/regionserver/HRegionServer.html#getRegionServerAccounting--">getRegionServerAccounting</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerCoprocessorHost--">getRegionServerCoprocessorHost</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerCoprocessors--">getRegionServerCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerMetrics--">getRegionServerMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerRpcQuotaManager--">getRegionServerRpcQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerSpaceQuotaManager--">getRegionServerSpaceQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionsInTransitionInRS--">getRegionsInTransitionInRS</a>, <a href="../../../../.
 ./org/apache/hadoop/hbase/regionserver/HRegionServer.html#getReplicationSinkService--">getReplicationSinkService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getReplicationSourceService--">getReplicationSourceService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRootDir--">getRootDir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRpcServer--">getRpcServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRSRpcServices--">getRSRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getSecureBulkLoadManager--">getSecureBulkLoadManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getStartcode--">getStartcode</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getThreadWakeFrequency--">getThreadWakeFrequency</a>, <a 
 href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWAL-org.apache.hadoop.hbase.client.RegionInfo-">getWAL</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALFileSystem--">getWALFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWalGroupsReplicationStatus--">getWalGroupsReplicationStatus</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWalRoller--">getWalRoller</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALRootDir--">getWALRootDir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALs--">getWALs</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#handleReportForDutyResponse-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse-">handleReportForDutyResponse</a>, <a href
 ="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#initializeMemStoreChunkCreator--">initializeMemStoreChunkCreator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isAborted--">isAborted</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isClusterUp--">isClusterUp</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isOnline--">isOnline</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isShutDown--">isShutDown</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopped--">isStopped</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopping--">isStopping</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#kill--">kill</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#movedRegionCleanerPeri
 od--">movedRegionCleanerPeriod</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#onConfigurationChange-org.apache.hadoop.conf.Configuration-">onConfigurationChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#postOpenDeployTasks-org.apache.hadoop.hbase.regionserver.RegionServerServices.PostOpenDeployContext-">postOpenDeployTasks</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#regionLock-java.util.List-java.lang.String-org.apache.hadoop.hbase.Abortable-">regionLock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#remoteProcedureComplete-long-java.lang.Throwable-">remoteProcedureComplete</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#removeRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.ServerName-">removeRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserv
 er/HRegionServer.html#reportFileArchivalForQuotas-org.apache.hadoop.hbase.TableName-java.util.Collection-">reportFileArchivalForQuotas</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportRegionSizesForQuotas-org.apache.hadoop.hbase.quotas.RegionSizeStore-">reportRegionSizesForQuotas</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportRegionStateTransition-org.apache.hadoop.hbase.regionserver.RegionServerServices.RegionStateTransitionContext-">reportRegionStateTransition</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#sendShutdownInterrupt--">sendShutdownInterrupt</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#setupClusterConnection--">setupClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#stop-java.lang.String-boolean-org.apache.hadoop.hbase.security.User-">stop</a>, <a href="../.
 ./../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#toString--">toString</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#tryRegionServerReport-long-long-">tryRegionServerReport</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#unassign-byte:A-">unassign</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#updateConfiguration--">updateConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#updateRegionFavoredNodesMapping-java.lang.String-java.util.List-">updateRegionFavoredNodesMapping</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#waitForServerOnline--">waitForServerOnline</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#walRollRequestFinished--">walRollRequestFinished</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">


[47/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index 2f39ae8..7d256c8 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -25,8 +25,8 @@ under the License.
     <language>en-us</language>
     <copyright>&#169;2007 - 2018 The Apache Software Foundation</copyright>
     <item>
-      <title>File: 3688,
-             Errors: 15817,
+      <title>File: 3690,
+             Errors: 15801,
              Warnings: 0,
              Infos: 0
       </title>
@@ -8838,6 +8838,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestReplicationMetricsforUI.java">org/apache/hadoop/hbase/replication/TestReplicationMetricsforUI.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.HBaseCluster.java">org/apache/hadoop/hbase/HBaseCluster.java</a>
                 </td>
                 <td>
@@ -8959,7 +8973,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  7
+                  6
                 </td>
               </tr>
                           <tr>
@@ -13103,7 +13117,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  38
+                  36
                 </td>
               </tr>
                           <tr>
@@ -14125,7 +14139,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  4
+                  3
                 </td>
               </tr>
                           <tr>
@@ -27341,7 +27355,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  4
+                  3
                 </td>
               </tr>
                           <tr>
@@ -28111,7 +28125,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  4
+                  0
                 </td>
               </tr>
                           <tr>
@@ -35545,7 +35559,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  8
+                  6
                 </td>
               </tr>
                           <tr>
@@ -36222,6 +36236,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.regionserver.ReplicationStatus.java">org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge.java">org/apache/hadoop/hbase/util/IncrementingEnvironmentEdge.java</a>
                 </td>
                 <td>
@@ -39157,7 +39185,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  39
+                  38
                 </td>
               </tr>
                           <tr>
@@ -48733,7 +48761,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  218
+                  214
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 422d15f..11da242 100644
--- a/coc.html
+++ b/coc.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="20180630" />
+    <meta name="Date-Revision-yyyymmdd" content="20180703" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -375,7 +375,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-30</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-07-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index fcdbf47..ead57dc 100644
--- a/dependencies.html
+++ b/dependencies.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="20180630" />
+    <meta name="Date-Revision-yyyymmdd" content="20180703" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -440,7 +440,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-30</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-07-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 77dccba..ba4c725 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.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="20180630" />
+    <meta name="Date-Revision-yyyymmdd" content="20180703" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -905,7 +905,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-30</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-07-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 02b2f38..5a88bbb 100644
--- a/dependency-info.html
+++ b/dependency-info.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="20180630" />
+    <meta name="Date-Revision-yyyymmdd" content="20180703" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -313,7 +313,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-30</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-07-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index d99af0b..1809da5 100644
--- a/dependency-management.html
+++ b/dependency-management.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="20180630" />
+    <meta name="Date-Revision-yyyymmdd" content="20180703" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -1011,7 +1011,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-30</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-07-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-frame.html b/devapidocs/allclasses-frame.html
index 00cea22..f1cf659 100644
--- a/devapidocs/allclasses-frame.html
+++ b/devapidocs/allclasses-frame.html
@@ -2191,6 +2191,12 @@
 <li><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.WorkerState.html" title="enum in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">ReplicationSourceShipper.WorkerState</a></li>
 <li><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALActionListener.html" title="class in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">ReplicationSourceWALActionListener</a></li>
 <li><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html" title="class in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">ReplicationSourceWALReader</a></li>
+<li><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">ReplicationStatus</a></li>
+<li><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">ReplicationStatus.ReplicationStatusBuilder</a></li>
+<li><a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame">ReplicationStatusTmpl</a></li>
+<li><a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame">ReplicationStatusTmpl.ImplData</a></li>
+<li><a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame"><span class="interfaceName">ReplicationStatusTmpl.Intf</span></a></li>
+<li><a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame">ReplicationStatusTmplImpl</a></li>
 <li><a href="org/apache/hadoop/hbase/replication/ReplicationStorageFactory.html" title="class in org.apache.hadoop.hbase.replication" target="classFrame">ReplicationStorageFactory</a></li>
 <li><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSyncUp.html" title="class in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">ReplicationSyncUp</a></li>
 <li><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationThrottler.html" title="class in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">ReplicationThrottler</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-noframe.html b/devapidocs/allclasses-noframe.html
index bf8703b..71ea0c1 100644
--- a/devapidocs/allclasses-noframe.html
+++ b/devapidocs/allclasses-noframe.html
@@ -2191,6 +2191,12 @@
 <li><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.WorkerState.html" title="enum in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceShipper.WorkerState</a></li>
 <li><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALActionListener.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceWALActionListener</a></li>
 <li><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceWALReader</a></li>
+<li><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></li>
+<li><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></li>
+<li><a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl</a></li>
+<li><a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a></li>
+<li><a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver"><span class="interfaceName">ReplicationStatusTmpl.Intf</span></a></li>
+<li><a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmplImpl</a></li>
 <li><a href="org/apache/hadoop/hbase/replication/ReplicationStorageFactory.html" title="class in org.apache.hadoop.hbase.replication">ReplicationStorageFactory</a></li>
 <li><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSyncUp.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSyncUp</a></li>
 <li><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationThrottler.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationThrottler</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 9370278..8d968cd 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3782,21 +3782,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Sat Jun 30 17:13:05 UTC 2018"</code></td>
+<td class="colLast"><code>"Tue Jul  3 19:56:40 UTC 2018"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#revision">revision</a></code></td>
-<td class="colLast"><code>"34e23fe425e62f240a65c435d41adfbbe211522d"</code></td>
+<td class="colLast"><code>"0f23784182ab88649de340d75804e0ff20dcd0fc"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#srcChecksum">srcChecksum</a></code></td>
-<td class="colLast"><code>"347800161f61d858e14faba963857be6"</code></td>
+<td class="colLast"><code>"2d59bf0d31a96d5e7e8ecd09c2fa180c"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">
@@ -17835,11 +17835,11 @@
 <td class="colLast"><code>"hbase.hregion.compacting.memstore.type"</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.CompactingMemStore.IN_MEMORY_FLUSH_THRESHOLD_FACTOR_DEFAULT">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.CompactingMemStore.IN_MEMORY_FLUSH_MULTIPLIER">
 <!--   -->
-</a><code>private&nbsp;static&nbsp;final&nbsp;double</code></td>
-<td><code><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#IN_MEMORY_FLUSH_THRESHOLD_FACTOR_DEFAULT">IN_MEMORY_FLUSH_THRESHOLD_FACTOR_DEFAULT</a></code></td>
-<td class="colLast"><code>0.014</code></td>
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#IN_MEMORY_FLUSH_MULTIPLIER">IN_MEMORY_FLUSH_MULTIPLIER</a></code></td>
+<td class="colLast"><code>1</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.CompactingMemStore.IN_MEMORY_FLUSH_THRESHOLD_FACTOR_KEY">
@@ -23773,6 +23773,25 @@
 </li>
 <li class="blockList">
 <table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceShipper</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceShipper.DEFAULT_TIMEOUT">
+<!--   -->
+</a><code>private&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#DEFAULT_TIMEOUT">DEFAULT_TIMEOUT</a></code></td>
+<td class="colLast"><code>20000</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
 <caption><span>org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSyncUp.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSyncUp</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>


[45/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index f7aa217..1e43e89 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -167,10 +167,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/class-use/Cell.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/Cell.html b/devapidocs/org/apache/hadoop/hbase/class-use/Cell.html
index 510c7b7..bd11d5f 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/Cell.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/Cell.html
@@ -5351,7 +5351,8 @@ service.</div>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
-<td class="colLast"><span class="typeNameLabel">CellChunkImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#copyCellIntoMSLAB-org.apache.hadoop.hbase.Cell-">copyCellIntoMSLAB</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">CellChunkImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#copyCellIntoMSLAB-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">copyCellIntoMSLAB</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
@@ -5531,21 +5532,22 @@ service.</div>
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
-<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
+<td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                        boolean&nbsp;forceCloneOfBigCell)</code>
 <div class="block">If the segment has a memory allocator the cell is being cloned to this space, and returned;
- Otherwise the given cell is returned
+ otherwise the given cell is returned
 
  When a cell's size is too big (bigger than maxAlloc), it is not allocated on MSLAB.</div>
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
-<td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+                       <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                        boolean&nbsp;forceCloneOfBigCell)</code>
 <div class="block">If the segment has a memory allocator the cell is being cloned to this space, and returned;
- otherwise the given cell is returned
+ Otherwise the given cell is returned
 
  When a cell's size is too big (bigger than maxAlloc), it is not allocated on MSLAB.</div>
 </td>
@@ -6043,9 +6045,10 @@ service.</div>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">MutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#add-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">add</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<td class="colLast"><span class="typeNameLabel">MutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#add-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">add</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
    boolean&nbsp;mslabUsed,
-   <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing)</code>
+   <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing,
+   boolean&nbsp;sizeAddedPreOperation)</code>
 <div class="block">Adds the given cell into the segment</div>
 </td>
 </tr>
@@ -6154,11 +6157,19 @@ service.</div>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">CompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#checkAndAddToActiveSize-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">checkAndAddToActiveSize</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive,
+                       <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+                       <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>
+<div class="block">Check whether anything need to be done based on the current active set size.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreFileReader.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#checkGeneralBloomFilter-byte:A-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.util.BloomFilter-">checkGeneralBloomFilter</a></span>(byte[]&nbsp;key,
                        <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kvKey,
                        <a href="../../../../../org/apache/hadoop/hbase/util/BloomFilter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilter</a>&nbsp;bloomFilter)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#checkScanOrder-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.CellComparator-">checkScanOrder</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;prevKV,
               <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv,
@@ -6166,70 +6177,71 @@ service.</div>
 <div class="block">Check whether scan as expected order</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">ReversedStoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#checkScanOrder-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.CellComparator-">checkScanOrder</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;prevKV,
               <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv,
               <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><span class="typeNameLabel">CompositeImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#compare-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compare</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
        <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><span class="typeNameLabel">KeyValueHeap.KVScannerComparator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.KVScannerComparator.html#compare-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compare</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
        <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</code>
 <div class="block">Compares two KeyValue</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compare-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compare</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
        <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><span class="typeNameLabel">CompositeImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#compareRows-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareRows</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
            <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><span class="typeNameLabel">ReversedKeyValueHeap.ReversedKVScannerComparator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedKeyValueHeap.ReversedKVScannerComparator.html#compareRows-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareRows</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
            <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</code>
 <div class="block">Compares rows of two KeyValue</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareRows-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareRows</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
            <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><span class="typeNameLabel">MemStoreLAB.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html#copyCellInto-org.apache.hadoop.hbase.Cell-">copyCellInto</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
 <div class="block">Allocates slice in this LAB and copy the passed Cell into this area.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><span class="typeNameLabel">ImmutableMemStoreLAB.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableMemStoreLAB.html#copyCellInto-org.apache.hadoop.hbase.Cell-">copyCellInto</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><span class="typeNameLabel">MemStoreLABImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#copyCellInto-org.apache.hadoop.hbase.Cell-">copyCellInto</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><span class="typeNameLabel">MemStoreLABImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#copyCellInto-org.apache.hadoop.hbase.Cell-int-">copyCellInto</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
             int&nbsp;maxAlloc)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
-<td class="colLast"><span class="typeNameLabel">CellChunkImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#copyCellIntoMSLAB-org.apache.hadoop.hbase.Cell-">copyCellIntoMSLAB</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">CellChunkImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#copyCellIntoMSLAB-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">copyCellIntoMSLAB</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><span class="typeNameLabel">MemStoreLABImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#copyToChunkCell-org.apache.hadoop.hbase.Cell-java.nio.ByteBuffer-int-int-">copyToChunkCell</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf,
@@ -6239,16 +6251,36 @@ service.</div>
  out of it</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#deepCopyIfNeeded-org.apache.hadoop.hbase.Cell-">deepCopyIfNeeded</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#doAdd-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">doAdd</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+     <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+     <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#doAddOrUpsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">doAddOrUpsert</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+             long&nbsp;readpoint,
+             <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+             boolean&nbsp;doAdd)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">NonLazyKeyValueScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyValueScanner.html#doRealSeek-org.apache.hadoop.hbase.regionserver.KeyValueScanner-org.apache.hadoop.hbase.Cell-boolean-">doRealSeek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&nbsp;scanner,
           <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv,
           boolean&nbsp;forward)</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#doUpsert-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">doUpsert</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+        <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+        long&nbsp;readpoint,
+        <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/filter/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter">Filter.ReturnCode</a></code></td>
 <td class="colLast"><span class="typeNameLabel">MobReferenceOnlyFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MobReferenceOnlyFilter.html#filterCell-org.apache.hadoop.hbase.Cell-">filterCell</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
@@ -6388,7 +6420,7 @@ service.</div>
 <tr class="rowColor">
 <td class="colFirst"><code>protected long</code></td>
 <td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#heapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">heapSizeChange</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
-              boolean&nbsp;succ)</code>&nbsp;</td>
+              boolean&nbsp;allocated)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
@@ -6410,19 +6442,22 @@ service.</div>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">CompositeImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<td class="colLast"><span class="typeNameLabel">CompositeImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">internalAdd</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
            boolean&nbsp;mslabUsed,
-           <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+           <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+           boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;toAdd,
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">internalAdd</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
            boolean&nbsp;mslabUsed,
-           <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+           <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+           boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#internalAdd-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+           <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;toAdd,
            boolean&nbsp;mslabUsed,
            <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
@@ -6459,21 +6494,22 @@ service.</div>
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
-<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
+<td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                        boolean&nbsp;forceCloneOfBigCell)</code>
 <div class="block">If the segment has a memory allocator the cell is being cloned to this space, and returned;
- Otherwise the given cell is returned
+ otherwise the given cell is returned
 
  When a cell's size is too big (bigger than maxAlloc), it is not allocated on MSLAB.</div>
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
-<td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+                       <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                        boolean&nbsp;forceCloneOfBigCell)</code>
 <div class="block">If the segment has a memory allocator the cell is being cloned to this space, and returned;
- otherwise the given cell is returned
+ Otherwise the given cell is returned
 
  When a cell's size is too big (bigger than maxAlloc), it is not allocated on MSLAB.</div>
 </td>
@@ -6504,7 +6540,7 @@ service.</div>
 <tr class="altColor">
 <td class="colFirst"><code>protected long</code></td>
 <td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#offHeapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">offHeapSizeChange</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
-                 boolean&nbsp;succ)</code>&nbsp;</td>
+                 boolean&nbsp;allocated)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
@@ -6561,11 +6597,35 @@ service.</div>
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>protected abstract boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">preUpdate</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+         <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>
+<div class="block">Issue any synchronization and test needed before applying the update</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">CompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">preUpdate</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+         <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>
+<div class="block">Issue any synchronization and test needed before applying the update
+ For compacting memstore this means checking the update can increase the size without
+ overflow</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">DefaultMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">preUpdate</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+         <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><span class="typeNameLabel">CellFlatMap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CellFlatMap.html#put-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">put</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;k,
    <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;v)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><span class="typeNameLabel">HMobStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HMobStore.html#readCell-java.util.List-java.lang.String-org.apache.hadoop.hbase.Cell-boolean-long-boolean-">readCell</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&nbsp;locations,
         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fileName,
@@ -6576,7 +6636,7 @@ service.</div>
 <div class="block">Reads the cell from a mob file.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><span class="typeNameLabel">HRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#reckonDelta-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-byte:A-long-org.apache.hadoop.hbase.client.Mutation-java.util.function.Function-">reckonDelta</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;delta,
            <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentCell,
@@ -6585,7 +6645,7 @@ service.</div>
            <a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation,
            <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>,byte[]&gt;&nbsp;supplier)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">KeyValueHeap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html#requestSeek-org.apache.hadoop.hbase.Cell-boolean-boolean-">requestSeek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key,
            boolean&nbsp;forward,
@@ -6595,13 +6655,13 @@ service.</div>
  row/column combination specified by the kv parameter.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">ReversedKeyValueHeap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedKeyValueHeap.html#requestSeek-org.apache.hadoop.hbase.Cell-boolean-boolean-">requestSeek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key,
            boolean&nbsp;forward,
            boolean&nbsp;useBloom)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">KeyValueScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#requestSeek-org.apache.hadoop.hbase.Cell-boolean-boolean-">requestSeek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv,
            boolean&nbsp;forward,
@@ -6611,19 +6671,19 @@ service.</div>
  row/column combination specified by the kv parameter.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">SegmentScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SegmentScanner.html#requestSeek-org.apache.hadoop.hbase.Cell-boolean-boolean-">requestSeek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;c,
            boolean&nbsp;forward,
            boolean&nbsp;useBloom)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">NonLazyKeyValueScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyValueScanner.html#requestSeek-org.apache.hadoop.hbase.Cell-boolean-boolean-">requestSeek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv,
            boolean&nbsp;forward,
            boolean&nbsp;useBloom)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreFileScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#requestSeek-org.apache.hadoop.hbase.Cell-boolean-boolean-">requestSeek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv,
            boolean&nbsp;forward,
@@ -6631,62 +6691,62 @@ service.</div>
 <div class="block">Pretend we have done a seek but don't do it yet, if possible.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">KeyValueHeap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html#reseek-org.apache.hadoop.hbase.Cell-">reseek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;seekKey)</code>
 <div class="block">This function is identical to the <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html#seek-org.apache.hadoop.hbase.Cell-"><code>KeyValueHeap.seek(Cell)</code></a> function except
  that scanner.seek(seekKey) is changed to scanner.reseek(seekKey).</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">ReversedKeyValueHeap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedKeyValueHeap.html#reseek-org.apache.hadoop.hbase.Cell-">reseek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;seekKey)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">KeyValueScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#reseek-org.apache.hadoop.hbase.Cell-">reseek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</code>
 <div class="block">Reseek the scanner at or after the specified KeyValue.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">SegmentScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SegmentScanner.html#reseek-org.apache.hadoop.hbase.Cell-">reseek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
 <div class="block">Reseek the scanner at or after the specified KeyValue.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#reseek-org.apache.hadoop.hbase.Cell-">reseek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreFileScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#reseek-org.apache.hadoop.hbase.Cell-">reseek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">SnapshotSegmentScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SnapshotSegmentScanner.html#reseek-org.apache.hadoop.hbase.Cell-">reseek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;seekCell)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">ReversedStoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#reseek-org.apache.hadoop.hbase.Cell-">reseek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) static boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreFileScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#reseekAtOrAfter-org.apache.hadoop.hbase.io.hfile.HFileScanner-org.apache.hadoop.hbase.Cell-">reseekAtOrAfter</a></span>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a>&nbsp;s,
                <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;k)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#resetQueryMatcher-org.apache.hadoop.hbase.Cell-">resetQueryMatcher</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;lastTopKey)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><span class="typeNameLabel">HMobStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HMobStore.html#resolve-org.apache.hadoop.hbase.Cell-boolean-">resolve</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;reference,
        boolean&nbsp;cacheBlocks)</code>
 <div class="block">Reads the cell from the mob file, and the read point does not count.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><span class="typeNameLabel">HMobStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HMobStore.html#resolve-org.apache.hadoop.hbase.Cell-boolean-long-boolean-">resolve</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;reference,
        boolean&nbsp;cacheBlocks,
@@ -6695,7 +6755,7 @@ service.</div>
 <div class="block">Reads the cell from the mob file.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">HRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#restoreEdit-org.apache.hadoop.hbase.regionserver.HStore-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">restoreEdit</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;s,
            <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
@@ -6703,84 +6763,84 @@ service.</div>
 <div class="block">Used by tests</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">StripeMultiFileWriter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.html#sanityCheckLeft-byte:A-org.apache.hadoop.hbase.Cell-">sanityCheckLeft</a></span>(byte[]&nbsp;left,
                <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
 <div class="block">Subclasses can call this method to make sure the first KV is within multi-writer range.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">StripeMultiFileWriter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.html#sanityCheckRight-byte:A-org.apache.hadoop.hbase.Cell-">sanityCheckRight</a></span>(byte[]&nbsp;right,
                 <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
 <div class="block">Subclasses can call this method to make sure the last KV is within multi-writer range.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">KeyValueHeap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html#seek-org.apache.hadoop.hbase.Cell-">seek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;seekKey)</code>
 <div class="block">Seeks all scanners at or below the specified seek key.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">ReversedKeyValueHeap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedKeyValueHeap.html#seek-org.apache.hadoop.hbase.Cell-">seek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;seekKey)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">KeyValueScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#seek-org.apache.hadoop.hbase.Cell-">seek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</code>
 <div class="block">Seek the scanner at or after the specified KeyValue.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">SegmentScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SegmentScanner.html#seek-org.apache.hadoop.hbase.Cell-">seek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
 <div class="block">Seek the scanner at or after the specified Cell.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seek-org.apache.hadoop.hbase.Cell-">seek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreFileScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#seek-org.apache.hadoop.hbase.Cell-">seek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">SnapshotSegmentScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SnapshotSegmentScanner.html#seek-org.apache.hadoop.hbase.Cell-">seek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;seekCell)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">ReversedStoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#seek-org.apache.hadoop.hbase.Cell-">seek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seekAsDirection-org.apache.hadoop.hbase.Cell-">seekAsDirection</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)</code>
 <div class="block">Do a reseek in a normal StoreScanner(scan forward)</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">ReversedStoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#seekAsDirection-org.apache.hadoop.hbase.Cell-">seekAsDirection</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)</code>
 <div class="block">Do a backwardSeek in a reversed StoreScanner(scan backward)</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreFileScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#seekAtOrAfter-org.apache.hadoop.hbase.io.hfile.HFileScanner-org.apache.hadoop.hbase.Cell-">seekAtOrAfter</a></span>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a>&nbsp;s,
              <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;k)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seekOrSkipToNextColumn-org.apache.hadoop.hbase.Cell-">seekOrSkipToNextColumn</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seekOrSkipToNextRow-org.apache.hadoop.hbase.Cell-">seekOrSkipToNextRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seekScanners-java.util.List-org.apache.hadoop.hbase.Cell-boolean-boolean-">seekScanners</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
             <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;seekKey,
@@ -6789,63 +6849,69 @@ service.</div>
 <div class="block">Seek the specified scanners with the given key</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">ReversedStoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#seekScanners-java.util.List-org.apache.hadoop.hbase.Cell-boolean-boolean-">seekScanners</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
             <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;seekKey,
             boolean&nbsp;isLazy,
             boolean&nbsp;isParallelSeek)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seekToNextRow-org.apache.hadoop.hbase.Cell-">seekToNextRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;c)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">ReversedStoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#seekToNextRow-org.apache.hadoop.hbase.Cell-">seekToNextRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">NonReversedNonLazyKeyValueScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/NonReversedNonLazyKeyValueScanner.html#seekToPreviousRow-org.apache.hadoop.hbase.Cell-">seekToPreviousRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">ReversedKeyValueHeap.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedKeyValueHeap.html#seekToPreviousRow-org.apache.hadoop.hbase.Cell-">seekToPreviousRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;seekKey)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">KeyValueScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#seekToPreviousRow-org.apache.hadoop.hbase.Cell-">seekToPreviousRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</code>
 <div class="block">Seek the scanner at the first Cell of the row which is the previous row
  of specified key</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">SegmentScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/SegmentScanner.html#seekToPreviousRow-org.apache.hadoop.hbase.Cell-">seekToPreviousRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
 <div class="block">Seek the scanner at the first Cell of the row which is the previous row
  of specified key</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreFileScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#seekToPreviousRow-org.apache.hadoop.hbase.Cell-">seekToPreviousRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;originalKey)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">ReversedStoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#seekToPreviousRow-org.apache.hadoop.hbase.Cell-">seekToPreviousRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreFileScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#setCurrentCell-org.apache.hadoop.hbase.Cell-">setCurrentCell</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;newVal)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><span class="typeNameLabel">ScannerContext.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html#setLastPeekedCell-org.apache.hadoop.hbase.Cell-">setLastPeekedCell</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;lastPeekedCell)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><span class="typeNameLabel">CellFlatMap.CellFlatMapEntry.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CellFlatMap.CellFlatMapEntry.html#setValue-org.apache.hadoop.hbase.Cell-">setValue</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;value)</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">CompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#shouldFlushInMemory-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">shouldFlushInMemory</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive,
+                   <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">HRegion.RegionScannerImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#shouldStop-org.apache.hadoop.hbase.Cell-">shouldStop</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)</code>&nbsp;</td>
@@ -6959,17 +7025,19 @@ service.</div>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">CompositeImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+<td class="colLast"><span class="typeNameLabel">CompositeImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">updateMetaInfo</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
               boolean&nbsp;succ,
               boolean&nbsp;mslabUsed,
-              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+              boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+<td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">updateMetaInfo</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
               boolean&nbsp;succ,
               boolean&nbsp;mslabUsed,
-              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+              boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
@@ -6985,9 +7053,10 @@ service.</div>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">MutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#upsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">upsert</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<td class="colLast"><span class="typeNameLabel">MutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#upsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">upsert</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
       long&nbsp;readpoint,
-      <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing)</code>&nbsp;</td>
+      <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing,
+      boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
 </tbody>
 </table>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
index cd300cc..cae92f5 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -552,24 +552,24 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcessTask.SubmittedRows.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncProcessTask.SubmittedRows</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MasterSwitchType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncRequestFutureImpl.Retry.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncRequestFutureImpl.Retry</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcessTask.SubmittedRows.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncProcessTask.SubmittedRows</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
index e67b778..329f62f 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
@@ -201,8 +201,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/MetaTableMetrics.MetaTableOps.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">MetaTableMetrics.MetaTableOps</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.MutationType.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">RegionObserver.MutationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/MetaTableMetrics.MetaTableOps.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">MetaTableMetrics.MetaTableOps</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
index ae0124e..ce950b0 100644
--- a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
@@ -104,8 +104,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">ExecutorType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">EventType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">ExecutorType</span></a></li>
 </ul>
 </li>
 </ul>


[24/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/RecoveredReplicationSource.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/RecoveredReplicationSource.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/RecoveredReplicationSource.html
index f836972..fd055a3 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/RecoveredReplicationSource.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/RecoveredReplicationSource.html
@@ -257,7 +257,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/regionser
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSource</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#addHFileRefs-org.apache.hadoop.hbase.TableName-byte:A-java.util.List-">addHFileRefs</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#enqueueLog-org.apache.hadoop.fs.Path-">enqueueLog</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getCurrentPath--">getCurrentPath</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getPeer--">getPeer</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getQueueId--">getQueueId</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getQueueStorage--">getQueueStorage</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getReplicationEndpoint
 --">getReplicationEndpoint</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getServer--">getServer</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getSourceManager--">getSourceManager</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getSourceMetrics--">getSourceMetrics</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getStats--">getStats</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getWALFileLengthProvider--">getWALFileLengthProvider</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#isSourceActive--">isSourceActive</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#postShipEdits-java.util.List-int-">pos
 tShipEdits</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#removeWorker-org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceShipper-">removeWorker</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#sleepForRetries-java.lang.String-int-">sleepForRetries</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#startup--">startup</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#terminate-java.lang.String-">terminate</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#terminate-java.lang.String-java.lang.Exception-">terminate</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#terminate-java.lang.String-java.lang.Exception-boolean-">terminate</a>, <a href="../../.
 ./../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#tryThrottle-int-">tryThrottle</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#uncaughtException-java.lang.Thread-java.lang.Throwable-">uncaughtException</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#addHFileRefs-org.apache.hadoop.hbase.TableName-byte:A-java.util.List-">addHFileRefs</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#enqueueLog-org.apache.hadoop.fs.Path-">enqueueLog</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getCurrentPath--">getCurrentPath</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getPeer--">getPeer</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getQueueId--">getQueueId</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getQueueStorage--">getQueueStorage</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getReplicationEndpoint
 --">getReplicationEndpoint</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getServer--">getServer</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getSourceManager--">getSourceManager</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getSourceMetrics--">getSourceMetrics</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getStats--">getStats</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getWALFileLengthProvider--">getWALFileLengthProvider</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getWalGroupStatus--">getWalGroupStatus</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#isSourceActive--">isSourceActive
 </a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#postShipEdits-java.util.List-int-">postShipEdits</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#removeWorker-org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceShipper-">removeWorker</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#sleepForRetries-java.lang.String-int-">sleepForRetries</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#startup--">startup</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#terminate-java.lang.String-">terminate</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#terminate-java.lang.String-java.lang.Exception-">terminate</a>, <a href="../../../../../../org/apache/hadoop
 /hbase/replication/regionserver/ReplicationSource.html#terminate-java.lang.String-java.lang.Exception-boolean-">terminate</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#tryThrottle-int-">tryThrottle</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#uncaughtException-java.lang.Thread-java.lang.Throwable-">uncaughtException</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/Replication.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/Replication.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/Replication.html
index ccbbd07..9d52369 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/Replication.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/Replication.html
@@ -624,6 +624,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Repli
 <pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/Replication.html#line.214">getReplicationManager</a>()</pre>
 <div class="block">Get the replication sources manager</div>
 <dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html#getReplicationManager--">getReplicationManager</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationSourceService</a></code></dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the manager if replication is enabled, else returns false</dd>
 </dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html
index fc44bfc..18cea15 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html
@@ -18,8 +18,8 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var methods = {"i0":10,"i1":9,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
 var tableTab = "tableTab";
@@ -180,7 +180,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </a>
 <h3>Method Summary</h3>
 <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
 <th class="colLast" scope="col">Method and Description</th>
@@ -193,26 +193,32 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </td>
 </tr>
 <tr id="i1" class="rowColor">
+<td class="colFirst"><code>(package private) static long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html#calculateReplicationDelay-long-long-int-">calculateReplicationDelay</a></span>(long&nbsp;ageOfLastShippedOp,
+                         long&nbsp;timeStampOfLastShippedOp,
+                         int&nbsp;sizeOfLogQueue)</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.ReplicationLoadSink</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html#getReplicationLoadSink--">getReplicationLoadSink</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.ReplicationLoadSource&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html#getReplicationLoadSourceList--">getReplicationLoadSourceList</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html#sinkToString--">sinkToString</a></span>()</code>
 <div class="block">sinkToString</div>
 </td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html#sourceToString--">sourceToString</a></span>()</code>
 <div class="block">sourceToString</div>
 </td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html#toString--">toString</a></span>()</code>&nbsp;</td>
 </tr>
@@ -325,13 +331,24 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="calculateReplicationDelay-long-long-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>calculateReplicationDelay</h4>
+<pre>static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html#line.106">calculateReplicationDelay</a>(long&nbsp;ageOfLastShippedOp,
+                                      long&nbsp;timeStampOfLastShippedOp,
+                                      int&nbsp;sizeOfLogQueue)</pre>
+</li>
+</ul>
 <a name="sourceToString--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>sourceToString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html#line.121">sourceToString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html#line.133">sourceToString</a>()</pre>
 <div class="block">sourceToString</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -345,7 +362,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>sinkToString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html#line.144">sinkToString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html#line.156">sinkToString</a>()</pre>
 <div class="block">sinkToString</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -359,7 +376,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationLoadSink</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.ReplicationLoadSink&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html#line.158">getReplicationLoadSink</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.ReplicationLoadSink&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html#line.170">getReplicationLoadSink</a>()</pre>
 </li>
 </ul>
 <a name="getReplicationLoadSourceList--">
@@ -368,7 +385,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationLoadSourceList</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.ReplicationLoadSource&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html#line.162">getReplicationLoadSourceList</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.ReplicationLoadSource&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html#line.174">getReplicationLoadSourceList</a>()</pre>
 </li>
 </ul>
 <a name="toString--">
@@ -377,7 +394,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html#line.170">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html#line.182">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.LogsComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.LogsComparator.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.LogsComparator.html
index b7bc40c..f40053c 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.LogsComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.LogsComparator.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.566">ReplicationSource.LogsComparator</a>
+<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#line.614">ReplicationSource.LogsComparator</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;org.apache.hadoop.fs.Path&gt;</pre>
 <div class="block">Comparator used to compare logs together based on their start time</div>
@@ -203,7 +203,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LogsComparator</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.LogsComparator.html#line.566">LogsComparator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.LogsComparator.html#line.614">LogsComparator</a>()</pre>
 </li>
 </ul>
 </li>
@@ -220,7 +220,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparat
 <ul class="blockList">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.LogsComparator.html#line.569">compare</a>(org.apache.hadoop.fs.Path&nbsp;o1,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.LogsComparator.html#line.617">compare</a>(org.apache.hadoop.fs.Path&nbsp;o1,
                    org.apache.hadoop.fs.Path&nbsp;o2)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -234,7 +234,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getTS</h4>
-<pre>private static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.LogsComparator.html#line.583">getTS</a>(org.apache.hadoop.fs.Path&nbsp;p)</pre>
+<pre>private static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.LogsComparator.html#line.631">getTS</a>(org.apache.hadoop.fs.Path&nbsp;p)</pre>
 <div class="block"><p>
  Split a path to get the start time
  </p>


[20/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationStatus.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationStatus.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationStatus.html
new file mode 100644
index 0000000..18dd8e4
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationStatus.html
@@ -0,0 +1,234 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.replication.regionserver.ReplicationStatus (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.replication.regionserver.ReplicationStatus (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationStatus.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatus.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.replication.regionserver.ReplicationStatus" class="title">Uses of Class<br>org.apache.hadoop.hbase.replication.regionserver.ReplicationStatus</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.replication.regionserver">org.apache.hadoop.hbase.replication.regionserver</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.tmpl.regionserver">org.apache.hadoop.hbase.tmpl.regionserver</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.regionserver">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a> in <a href="../../../../../../../org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></h3>
+<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/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a> that return types with arguments of type <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</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="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">HRegionServer.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWalGroupsReplicationStatus--">getWalGroupsReplicationStatus</a></span>()</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList"><a name="org.apache.hadoop.hbase.replication.regionserver">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a> in <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/package-summary.html">org.apache.hadoop.hbase.replication.regionserver</a></h3>
+<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/replication/regionserver/package-summary.html">org.apache.hadoop.hbase.replication.regionserver</a> that return <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</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="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatus.ReplicationStatusBuilder.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#build--">build</a></span>()</code>&nbsp;</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/replication/regionserver/package-summary.html">org.apache.hadoop.hbase.replication.regionserver</a> that return types with arguments of type <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</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>default <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationSourceInterface.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#getWalGroupStatus--">getWalGroupStatus</a></span>()</code>
+<div class="block">get the stat of replication for each wal group.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationSource.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getWalGroupStatus--">getWalGroupStatus</a></span>()</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList"><a name="org.apache.hadoop.hbase.tmpl.regionserver">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a> in <a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/package-summary.html">org.apache.hadoop.hbase.tmpl.regionserver</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Method parameters in <a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/package-summary.html">org.apache.hadoop.hbase.tmpl.regionserver</a> with type arguments of type <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</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>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatusTmplImpl.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#Z:Z__jamon_innerUnit__currentLog-java.io.Writer-java.util.Map-">__jamon_innerUnit__currentLog</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+                             <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a>&gt;&nbsp;metrics)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatusTmplImpl.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#Z:Z__jamon_innerUnit__replicationDelay-java.io.Writer-java.util.Map-">__jamon_innerUnit__replicationDelay</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a>&gt;&nbsp;metrics)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationStatus.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatus.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/class-use/WALEntryBatch.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/class-use/WALEntryBatch.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/class-use/WALEntryBatch.html
index 4bcc8df..bae9ef0 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/class-use/WALEntryBatch.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/class-use/WALEntryBatch.html
@@ -137,14 +137,18 @@
 <td class="colLast"><span class="typeNameLabel">WALEntryBatch.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html#endOfFile-org.apache.hadoop.fs.Path-">endOfFile</a></span>(org.apache.hadoop.fs.Path&nbsp;lastWalPath)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationSourceWALReader.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#poll-long-">poll</a></span>(long&nbsp;timeout)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a></code></td>
 <td class="colLast"><span class="typeNameLabel">SerialReplicationSourceWALReader.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.html#readWALEntries-org.apache.hadoop.hbase.replication.regionserver.WALEntryStream-">readWALEntries</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryStream</a>&nbsp;entryStream)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a></code></td>
 <td class="colLast"><span class="typeNameLabel">ReplicationSourceWALReader.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#readWALEntries-org.apache.hadoop.hbase.replication.regionserver.WALEntryStream-">readWALEntries</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryStream</a>&nbsp;entryStream)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a></code></td>
 <td class="colLast"><span class="typeNameLabel">ReplicationSourceWALReader.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#take--">take</a></span>()</code>
 <div class="block">Retrieves the next batch of WAL entries from the queue, waiting up to the specified time for a

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-frame.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-frame.html
index 90efa85..4913ff3 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-frame.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-frame.html
@@ -68,6 +68,8 @@
 <li><a href="ReplicationSourceShipper.html" title="class in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">ReplicationSourceShipper</a></li>
 <li><a href="ReplicationSourceWALActionListener.html" title="class in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">ReplicationSourceWALActionListener</a></li>
 <li><a href="ReplicationSourceWALReader.html" title="class in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">ReplicationSourceWALReader</a></li>
+<li><a href="ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">ReplicationStatus</a></li>
+<li><a href="ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">ReplicationStatus.ReplicationStatusBuilder</a></li>
 <li><a href="ReplicationSyncUp.html" title="class in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">ReplicationSyncUp</a></li>
 <li><a href="ReplicationThrottler.html" title="class in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">ReplicationThrottler</a></li>
 <li><a href="SerialReplicationChecker.html" title="class in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">SerialReplicationChecker</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-summary.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-summary.html
index 78a929e..707fafe 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-summary.html
@@ -390,6 +390,14 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSyncUp.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSyncUp</a></td>
 <td class="colLast">
 <div class="block">In a scenario of Replication based Disaster/Recovery, when hbase Master-Cluster crashes, this

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
index 3f7893b..30c4e73 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
@@ -145,6 +145,8 @@
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceFactory.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSourceFactory</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSourceManager</span></a> (implements org.apache.hadoop.hbase.replication.<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationListener.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationListener</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALActionListener.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSourceWALActionListener</span></a> (implements org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationStatus</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationStatus.ReplicationStatusBuilder</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSyncUp.DummyServer.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSyncUp.DummyServer</span></a> (implements org.apache.hadoop.hbase.<a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationThrottler.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationThrottler</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/SerialReplicationChecker.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">SerialReplicationChecker</span></a></li>
@@ -205,8 +207,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.WorkerState.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSourceShipper.WorkerState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceFactoryImpl.SourceHolder.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">MetricsReplicationSourceFactoryImpl.SourceHolder</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.WorkerState.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSourceShipper.WorkerState</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-use.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-use.html
index 80af381..d157e8d 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-use.html
@@ -101,6 +101,10 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.tmpl.regionserver">org.apache.hadoop.hbase.tmpl.regionserver</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.wal">org.apache.hadoop.hbase.wal</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
@@ -127,6 +131,14 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationSourceManager.html#org.apache.hadoop.hbase.regionserver">ReplicationSourceManager</a>
+<div class="block">This class is responsible to manage all the replication sources.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationStatus.html#org.apache.hadoop.hbase.regionserver">ReplicationStatus</a>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/class-use/SyncReplicationPeerInfoProvider.html#org.apache.hadoop.hbase.regionserver">SyncReplicationPeerInfoProvider</a>
 <div class="block">Get the information for a sync replication peer.</div>
 </td>
@@ -309,6 +321,12 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationStatus.html#org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationStatus.ReplicationStatusBuilder.html#org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationThrottler.html#org.apache.hadoop.hbase.replication.regionserver">ReplicationThrottler</a>
 <div class="block">Per-peer per-node throttling controller for replication: enabled if
  bandwidth &gt; 0, a cycle = 100ms, by throttling we guarantee data pushed
@@ -362,6 +380,21 @@
 </tbody>
 </table>
 </li>
+<li class="blockList"><a name="org.apache.hadoop.hbase.tmpl.regionserver">
+<!--   -->
+</a>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
+<caption><span>Classes in <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/package-summary.html">org.apache.hadoop.hbase.replication.regionserver</a> used by <a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/package-summary.html">org.apache.hadoop.hbase.tmpl.regionserver</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationStatus.html#org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatus</a>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
 <li class="blockList"><a name="org.apache.hadoop.hbase.wal">
 <!--   -->
 </a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
index 034077c..c20ff47 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
@@ -110,8 +110,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.FilterType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
index f594c43..8051208 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -142,9 +142,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessController.OpType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Action</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessControlFilter.Strategy.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessControlFilter.Strategy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessController.OpType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
index 03e1383..2cef8bd 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -199,9 +199,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics.ThriftServerType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.ImplType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics.ThriftServerType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
index b8763da..7c04571 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -531,7 +531,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmplImpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmplImpl.html
index 2cf7bba..ae4eaf9 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmplImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmplImpl.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmplImpl.html" target="_top">Frames</a></li>
@@ -415,7 +415,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmplImpl.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html
new file mode 100644
index 0000000..55d5536
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html
@@ -0,0 +1,330 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>ReplicationStatusTmpl.ImplData (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ReplicationStatusTmpl.ImplData (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ReplicationStatusTmpl.ImplData.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatusTmpl.ImplData.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.tmpl.regionserver</div>
+<h2 title="Class ReplicationStatusTmpl.ImplData" class="title">Class ReplicationStatusTmpl.ImplData</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.jamon.AbstractTemplateProxy.ImplData</li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl.ImplData</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#line.47">ReplicationStatusTmpl.ImplData</a>
+extends org.jamon.AbstractTemplateProxy.ImplData</pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html#m_regionServer">m_regionServer</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html#ImplData--">ImplData</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html#getRegionServer--">getRegionServer</a></span>()</code>&nbsp;</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/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html#setRegionServer-org.apache.hadoop.hbase.regionserver.HRegionServer-">setRegionServer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer)</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="m_regionServer">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>m_regionServer</h4>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html#line.60">m_regionServer</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="ImplData--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ImplData</h4>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html#line.47">ImplData</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="setRegionServer-org.apache.hadoop.hbase.regionserver.HRegionServer-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setRegionServer</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html#line.51">setRegionServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer)</pre>
+</li>
+</ul>
+<a name="getRegionServer--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getRegionServer</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html#line.56">getRegionServer</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ReplicationStatusTmpl.ImplData.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatusTmpl.ImplData.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html
new file mode 100644
index 0000000..96bb17f
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html
@@ -0,0 +1,240 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>ReplicationStatusTmpl.Intf (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ReplicationStatusTmpl.Intf (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ReplicationStatusTmpl.Intf.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatusTmpl.Intf.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.tmpl.regionserver</div>
+<h2 title="Interface ReplicationStatusTmpl.Intf" class="title">Interface ReplicationStatusTmpl.Intf</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Superinterfaces:</dt>
+<dd>org.jamon.AbstractTemplateProxy.Intf</dd>
+</dl>
+<dl>
+<dt>All Known Implementing Classes:</dt>
+<dd><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmplImpl</a></dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public static interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#line.40">ReplicationStatusTmpl.Intf</a>
+extends org.jamon.AbstractTemplateProxy.Intf</pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<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/tmpl/regionserver/ReplicationStatusTmpl.Intf.html#renderNoFlush-java.io.Writer-">renderNoFlush</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="renderNoFlush-java.io.Writer-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>renderNoFlush</h4>
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html#line.44">renderNoFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
+            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ReplicationStatusTmpl.Intf.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatusTmpl.Intf.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>


[42/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html
index 8d21f22..7268b5e 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html
@@ -1265,7 +1265,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CACHE_FIXED_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.985">CACHE_FIXED_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.972">CACHE_FIXED_OVERHEAD</a></pre>
 </li>
 </ul>
 </li>
@@ -1422,7 +1422,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>assertCounterSanity</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.434">assertCounterSanity</a>(long&nbsp;mapSize,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.421">assertCounterSanity</a>(long&nbsp;mapSize,
                                         long&nbsp;counterVal)</pre>
 <div class="block">Sanity-checking for parity between actual block cache content and metrics.
  Intended only for use with TRACE level logging and -ea JVM.</div>
@@ -1434,7 +1434,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheBlock</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.457">cacheBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.444">cacheBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
                        <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;buf)</pre>
 <div class="block">Cache the block with the specified name and buffer.
  <p></div>
@@ -1453,7 +1453,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>updateSizeMetrics</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.466">updateSizeMetrics</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruCachedBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">LruCachedBlock</a>&nbsp;cb,
+<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.453">updateSizeMetrics</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruCachedBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">LruCachedBlock</a>&nbsp;cb,
                                boolean&nbsp;evict)</pre>
 <div class="block">Helper function that updates the local size counter and also updates any
  per-cf or per-blocktype metrics it can discern from given
@@ -1466,7 +1466,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>getBlock</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.491">getBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.478">getBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
                           boolean&nbsp;caching,
                           boolean&nbsp;repeat,
                           boolean&nbsp;updateCacheMetrics)</pre>
@@ -1492,7 +1492,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>containsBlock</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.525">containsBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.512">containsBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</pre>
 <div class="block">Whether the cache contains block with specified cacheKey</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1506,7 +1506,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>evictBlock</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.530">evictBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.517">evictBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#evictBlock-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-">BlockCache</a></code></span></div>
 <div class="block">Evict block from cache.</div>
 <dl>
@@ -1525,7 +1525,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>evictBlocksByHfileName</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.546">evictBlocksByHfileName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;hfileName)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.533">evictBlocksByHfileName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;hfileName)</pre>
 <div class="block">Evicts all blocks for a specific HFile. This is an
  expensive operation implemented as a linear-time search through all blocks
  in the cache. Ideally this should be a search in a log-access-time map.
@@ -1546,7 +1546,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>evictBlock</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.568">evictBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruCachedBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">LruCachedBlock</a>&nbsp;block,
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.555">evictBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruCachedBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">LruCachedBlock</a>&nbsp;block,
                           boolean&nbsp;evictedByEvictionProcess)</pre>
 <div class="block">Evict the block, and it will be cached by the victim handler if exists &amp;&amp;
  block may be read again later</div>
@@ -1565,7 +1565,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>runEviction</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.596">runEviction</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.583">runEviction</a>()</pre>
 <div class="block">Multi-threaded call to run the eviction process.</div>
 </li>
 </ul>
@@ -1575,7 +1575,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>isEvictionInProgress</h4>
-<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.605">isEvictionInProgress</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.592">isEvictionInProgress</a>()</pre>
 </li>
 </ul>
 <a name="getOverhead--">
@@ -1584,7 +1584,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>getOverhead</h4>
-<pre>long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.610">getOverhead</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.597">getOverhead</a>()</pre>
 </li>
 </ul>
 <a name="evict--">
@@ -1593,7 +1593,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>evict</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.617">evict</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.604">evict</a>()</pre>
 <div class="block">Eviction method.</div>
 </li>
 </ul>
@@ -1603,7 +1603,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.736">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.723">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -1616,7 +1616,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.838">getMaxSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.825">getMaxSize</a>()</pre>
 <div class="block">Get the maximum size of this cache.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1632,7 +1632,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.843">getCurrentSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.830">getCurrentSize</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#getCurrentSize--">BlockCache</a></code></span></div>
 <div class="block">Returns the occupied size of the block cache, in bytes.</div>
 <dl>
@@ -1649,7 +1649,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentDataSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.848">getCurrentDataSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.835">getCurrentDataSize</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#getCurrentDataSize--">BlockCache</a></code></span></div>
 <div class="block">Returns the occupied size of data blocks, in bytes.</div>
 <dl>
@@ -1666,7 +1666,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>getFreeSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.853">getFreeSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.840">getFreeSize</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#getFreeSize--">BlockCache</a></code></span></div>
 <div class="block">Returns the free size of the block cache, in bytes.</div>
 <dl>
@@ -1683,7 +1683,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.858">size</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.845">size</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#size--">BlockCache</a></code></span></div>
 <div class="block">Returns the total size of the block cache, in bytes.</div>
 <dl>
@@ -1700,7 +1700,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>getBlockCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.863">getBlockCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.850">getBlockCount</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#getBlockCount--">BlockCache</a></code></span></div>
 <div class="block">Returns the number of blocks currently cached in the block cache.</div>
 <dl>
@@ -1717,7 +1717,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataBlockCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.868">getDataBlockCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.855">getDataBlockCount</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#getDataBlockCount--">BlockCache</a></code></span></div>
 <div class="block">Returns the number of data blocks currently cached in the block cache.</div>
 <dl>
@@ -1734,7 +1734,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>getEvictionThread</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache.EvictionThread</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.872">getEvictionThread</a>()</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache.EvictionThread</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.859">getEvictionThread</a>()</pre>
 </li>
 </ul>
 <a name="logStats--">
@@ -1743,7 +1743,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>logStats</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.953">logStats</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.940">logStats</a>()</pre>
 </li>
 </ul>
 <a name="getStats--">
@@ -1752,7 +1752,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>getStats</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheStats.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheStats</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.981">getStats</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheStats.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheStats</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.968">getStats</a>()</pre>
 <div class="block">Get counter statistics for this cache.
 
  <p>Includes: total accesses, hits, misses, evicted blocks, and runs
@@ -1771,7 +1771,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>heapSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.991">heapSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.978">heapSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/io/HeapSize.html#heapSize--">heapSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title="interface in org.apache.hadoop.hbase.io">HeapSize</a></code></dd>
@@ -1787,7 +1787,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>calculateOverhead</h4>
-<pre>private static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.995">calculateOverhead</a>(long&nbsp;maxSize,
+<pre>private static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.982">calculateOverhead</a>(long&nbsp;maxSize,
                                       long&nbsp;blockSize,
                                       int&nbsp;concurrency)</pre>
 </li>
@@ -1798,7 +1798,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>iterator</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1003">iterator</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.990">iterator</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#iterator--" title="class or interface in java.lang">iterator</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&gt;</code></dd>
@@ -1815,7 +1815,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>acceptableSize</h4>
-<pre>long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1091">acceptableSize</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1078">acceptableSize</a>()</pre>
 </li>
 </ul>
 <a name="minSize--">
@@ -1824,7 +1824,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>minSize</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1094">minSize</a>()</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1081">minSize</a>()</pre>
 </li>
 </ul>
 <a name="singleSize--">
@@ -1833,7 +1833,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>singleSize</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1097">singleSize</a>()</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1084">singleSize</a>()</pre>
 </li>
 </ul>
 <a name="multiSize--">
@@ -1842,7 +1842,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>multiSize</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1100">multiSize</a>()</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1087">multiSize</a>()</pre>
 </li>
 </ul>
 <a name="memorySize--">
@@ -1851,7 +1851,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>memorySize</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1103">memorySize</a>()</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1090">memorySize</a>()</pre>
 </li>
 </ul>
 <a name="shutdown--">
@@ -1860,7 +1860,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1108">shutdown</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1095">shutdown</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#shutdown--">BlockCache</a></code></span></div>
 <div class="block">Shutdown the cache.</div>
 <dl>
@@ -1875,7 +1875,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>clearCache</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1134">clearCache</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1121">clearCache</a>()</pre>
 <div class="block">Clears the cache. Used in tests.</div>
 </li>
 </ul>
@@ -1885,7 +1885,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>getCachedFileNamesForTest</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1145">getCachedFileNamesForTest</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1132">getCachedFileNamesForTest</a>()</pre>
 <div class="block">Used in testing. May be very inefficient.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1899,7 +1899,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>getBlockTypeCountsForTest</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1154">getBlockTypeCountsForTest</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1141">getBlockTypeCountsForTest</a>()</pre>
 </li>
 </ul>
 <a name="getEncodingCountsForTest--">
@@ -1908,7 +1908,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>getEncodingCountsForTest</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.html" title="enum in org.apache.hadoop.hbase.io.encoding">DataBlockEncoding</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1165">getEncodingCountsForTest</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.html" title="enum in org.apache.hadoop.hbase.io.encoding">DataBlockEncoding</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1152">getEncodingCountsForTest</a>()</pre>
 </li>
 </ul>
 <a name="setVictimCache-org.apache.hadoop.hbase.io.hfile.BlockCache-">
@@ -1917,7 +1917,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>setVictimCache</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1175">setVictimCache</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a>&nbsp;handler)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1162">setVictimCache</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a>&nbsp;handler)</pre>
 </li>
 </ul>
 <a name="getMapForTests--">
@@ -1926,7 +1926,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockList">
 <li class="blockList">
 <h4>getMapForTests</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>,<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruCachedBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">LruCachedBlock</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1181">getMapForTests</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>,<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruCachedBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">LruCachedBlock</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1168">getMapForTests</a>()</pre>
 </li>
 </ul>
 <a name="getBlockCaches--">
@@ -1935,7 +1935,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Resizable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getBlockCaches</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1187">getBlockCaches</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.1174">getBlockCaches</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#getBlockCaches--">getBlockCaches</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html
index 7e971fc..933760d 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html
@@ -121,7 +121,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1268">BucketCache.BucketEntry</a>
+<pre>static class <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1286">BucketCache.BucketEntry</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a></pre>
 <div class="block">Item in cache. We expect this to be where most memory goes. Java uses 8
@@ -304,7 +304,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>serialVersionUID</h4>
-<pre>private static final&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1269">serialVersionUID</a></pre>
+<pre>private static final&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1287">serialVersionUID</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.bucket.BucketCache.BucketEntry.serialVersionUID">Constant Field Values</a></dd>
@@ -317,7 +317,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>COMPARATOR</h4>
-<pre>static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.BucketEntry</a>&gt; <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1272">COMPARATOR</a></pre>
+<pre>static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.BucketEntry</a>&gt; <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1290">COMPARATOR</a></pre>
 </li>
 </ul>
 <a name="offsetBase">
@@ -326,7 +326,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>offsetBase</h4>
-<pre>private&nbsp;int <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1280">offsetBase</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1298">offsetBase</a></pre>
 </li>
 </ul>
 <a name="length">
@@ -335,7 +335,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>length</h4>
-<pre>private&nbsp;int <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1281">length</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1299">length</a></pre>
 </li>
 </ul>
 <a name="offset1">
@@ -344,7 +344,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>offset1</h4>
-<pre>private&nbsp;byte <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1282">offset1</a></pre>
+<pre>private&nbsp;byte <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1300">offset1</a></pre>
 </li>
 </ul>
 <a name="deserialiserIndex">
@@ -353,7 +353,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>deserialiserIndex</h4>
-<pre>byte <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1283">deserialiserIndex</a></pre>
+<pre>byte <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1301">deserialiserIndex</a></pre>
 </li>
 </ul>
 <a name="accessCounter">
@@ -362,7 +362,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>accessCounter</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1284">accessCounter</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1302">accessCounter</a></pre>
 </li>
 </ul>
 <a name="priority">
@@ -371,7 +371,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>priority</h4>
-<pre>private&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockPriority</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1285">priority</a></pre>
+<pre>private&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockPriority</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1303">priority</a></pre>
 </li>
 </ul>
 <a name="cachedTime">
@@ -380,7 +380,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockListLast">
 <li class="blockList">
 <h4>cachedTime</h4>
-<pre>private final&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1290">cachedTime</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1308">cachedTime</a></pre>
 <div class="block">Time this block was cached.  Presumes we are created just before we are added to the cache.</div>
 </li>
 </ul>
@@ -398,7 +398,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockListLast">
 <li class="blockList">
 <h4>BucketEntry</h4>
-<pre><a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1292">BucketEntry</a>(long&nbsp;offset,
+<pre><a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1310">BucketEntry</a>(long&nbsp;offset,
             int&nbsp;length,
             long&nbsp;accessCounter,
             boolean&nbsp;inMemory)</pre>
@@ -418,7 +418,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>offset</h4>
-<pre>long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1303">offset</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1321">offset</a>()</pre>
 </li>
 </ul>
 <a name="setOffset-long-">
@@ -427,7 +427,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>setOffset</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1309">setOffset</a>(long&nbsp;value)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1327">setOffset</a>(long&nbsp;value)</pre>
 </li>
 </ul>
 <a name="getLength--">
@@ -436,7 +436,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>getLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1316">getLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1334">getLength</a>()</pre>
 </li>
 </ul>
 <a name="deserializerReference-org.apache.hadoop.hbase.io.hfile.bucket.UniqueIndexMap-">
@@ -445,7 +445,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>deserializerReference</h4>
-<pre>protected&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/CacheableDeserializer.html" title="interface in org.apache.hadoop.hbase.io.hfile">CacheableDeserializer</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&gt;&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1320">deserializerReference</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/UniqueIndexMap.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">UniqueIndexMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;deserialiserMap)</pre>
+<pre>protected&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/CacheableDeserializer.html" title="interface in org.apache.hadoop.hbase.io.hfile">CacheableDeserializer</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&gt;&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1338">deserializerReference</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/UniqueIndexMap.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">UniqueIndexMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;deserialiserMap)</pre>
 </li>
 </ul>
 <a name="setDeserialiserReference-org.apache.hadoop.hbase.io.hfile.CacheableDeserializer-org.apache.hadoop.hbase.io.hfile.bucket.UniqueIndexMap-">
@@ -454,7 +454,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>setDeserialiserReference</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1326">setDeserialiserReference</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/CacheableDeserializer.html" title="interface in org.apache.hadoop.hbase.io.hfile">CacheableDeserializer</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&gt;&nbsp;deserializer,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1344">setDeserialiserReference</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/CacheableDeserializer.html" title="interface in org.apache.hadoop.hbase.io.hfile">CacheableDeserializer</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&gt;&nbsp;deserializer,
                                         <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/UniqueIndexMap.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">UniqueIndexMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;deserialiserMap)</pre>
 </li>
 </ul>
@@ -464,7 +464,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>access</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1336">access</a>(long&nbsp;accessCounter)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1354">access</a>(long&nbsp;accessCounter)</pre>
 <div class="block">Block has been accessed. Update its local access counter.</div>
 </li>
 </ul>
@@ -474,7 +474,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>getPriority</h4>
-<pre>public&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockPriority</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1343">getPriority</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockPriority</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1361">getPriority</a>()</pre>
 </li>
 </ul>
 <a name="getCachedTime--">
@@ -483,7 +483,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>getCachedTime</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1347">getCachedTime</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1365">getCachedTime</a>()</pre>
 </li>
 </ul>
 <a name="getRefCount--">
@@ -492,7 +492,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>getRefCount</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1351">getRefCount</a>()</pre>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1369">getRefCount</a>()</pre>
 </li>
 </ul>
 <a name="incrementRefCountAndGet--">
@@ -501,7 +501,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>incrementRefCountAndGet</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1355">incrementRefCountAndGet</a>()</pre>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1373">incrementRefCountAndGet</a>()</pre>
 </li>
 </ul>
 <a name="decrementRefCountAndGet--">
@@ -510,7 +510,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>decrementRefCountAndGet</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1359">decrementRefCountAndGet</a>()</pre>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1377">decrementRefCountAndGet</a>()</pre>
 </li>
 </ul>
 <a name="isMarkedForEvict--">
@@ -519,7 +519,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockList">
 <li class="blockList">
 <h4>isMarkedForEvict</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1363">isMarkedForEvict</a>()</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1381">isMarkedForEvict</a>()</pre>
 </li>
 </ul>
 <a name="markForEvict--">
@@ -528,7 +528,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializab
 <ul class="blockListLast">
 <li class="blockList">
 <h4>markForEvict</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1367">markForEvict</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#line.1385">markForEvict</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html
index ff22089..7122679 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private class <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1415">BucketCache.BucketEntryGroup</a>
+<pre>private class <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1433">BucketCache.BucketEntryGroup</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Used to group bucket entries into priority buckets. There will be a
  BucketEntryGroup for each priority (single, multi, memory). Once bucketed,
@@ -227,7 +227,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>queue</h4>
-<pre>private&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/CachedEntryQueue.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">CachedEntryQueue</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html#line.1417">queue</a></pre>
+<pre>private&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/CachedEntryQueue.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">CachedEntryQueue</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html#line.1435">queue</a></pre>
 </li>
 </ul>
 <a name="totalSize">
@@ -236,7 +236,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>totalSize</h4>
-<pre>private&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html#line.1418">totalSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html#line.1436">totalSize</a></pre>
 </li>
 </ul>
 <a name="bucketSize">
@@ -245,7 +245,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>bucketSize</h4>
-<pre>private&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html#line.1419">bucketSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html#line.1437">bucketSize</a></pre>
 </li>
 </ul>
 </li>
@@ -262,7 +262,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>BucketEntryGroup</h4>
-<pre>public&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html#line.1421">BucketEntryGroup</a>(long&nbsp;bytesToFree,
+<pre>public&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html#line.1439">BucketEntryGroup</a>(long&nbsp;bytesToFree,
                         long&nbsp;blockSize,
                         long&nbsp;bucketSize)</pre>
 </li>
@@ -281,7 +281,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html#line.1427">add</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>,<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.BucketEntry</a>&gt;&nbsp;block)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html#line.1445">add</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>,<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.BucketEntry</a>&gt;&nbsp;block)</pre>
 </li>
 </ul>
 <a name="free-long-">
@@ -290,7 +290,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>free</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html#line.1432">free</a>(long&nbsp;toFree)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html#line.1450">free</a>(long&nbsp;toFree)</pre>
 </li>
 </ul>
 <a name="overflow--">
@@ -299,7 +299,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>overflow</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html#line.1448">overflow</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html#line.1466">overflow</a>()</pre>
 </li>
 </ul>
 <a name="totalSize--">
@@ -308,7 +308,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>totalSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html#line.1452">totalSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntryGroup.html#line.1470">totalSize</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html
index f272ea1..7c7d1af 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1461">BucketCache.RAMQueueEntry</a>
+<pre>static class <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1479">BucketCache.RAMQueueEntry</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Block Entry stored in the memory with key,data and so on</div>
 </li>
@@ -232,7 +232,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>key</h4>
-<pre>private&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html#line.1462">key</a></pre>
+<pre>private&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html#line.1480">key</a></pre>
 </li>
 </ul>
 <a name="data">
@@ -241,7 +241,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>data</h4>
-<pre>private&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html#line.1463">data</a></pre>
+<pre>private&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html#line.1481">data</a></pre>
 </li>
 </ul>
 <a name="accessCounter">
@@ -250,7 +250,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>accessCounter</h4>
-<pre>private&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html#line.1464">accessCounter</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html#line.1482">accessCounter</a></pre>
 </li>
 </ul>
 <a name="inMemory">
@@ -259,7 +259,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>inMemory</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html#line.1465">inMemory</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html#line.1483">inMemory</a></pre>
 </li>
 </ul>
 </li>
@@ -276,7 +276,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RAMQueueEntry</h4>
-<pre>public&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html#line.1467">RAMQueueEntry</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;bck,
+<pre>public&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html#line.1485">RAMQueueEntry</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;bck,
                      <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;data,
                      long&nbsp;accessCounter,
                      boolean&nbsp;inMemory)</pre>
@@ -296,7 +296,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getData</h4>
-<pre>public&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html#line.1475">getData</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html#line.1493">getData</a>()</pre>
 </li>
 </ul>
 <a name="getKey--">
@@ -305,7 +305,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getKey</h4>
-<pre>public&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html#line.1479">getKey</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html#line.1497">getKey</a>()</pre>
 </li>
 </ul>
 <a name="access-long-">
@@ -314,7 +314,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>access</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html#line.1483">access</a>(long&nbsp;accessCounter)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html#line.1501">access</a>(long&nbsp;accessCounter)</pre>
 </li>
 </ul>
 <a name="writeToCache-org.apache.hadoop.hbase.io.hfile.bucket.IOEngine-org.apache.hadoop.hbase.io.hfile.bucket.BucketAllocator-org.apache.hadoop.hbase.io.hfile.bucket.UniqueIndexMap-java.util.concurrent.atomic.LongAdder-">
@@ -323,7 +323,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>writeToCache</h4>
-<pre>public&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.BucketEntry</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html#line.1487">writeToCache</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/IOEngine.html" title="interface in org.apache.hadoop.hbase.io.hfile.bucket">IOEngine</a>&nbsp;ioEngine,
+<pre>public&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.BucketEntry</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html#line.1505">writeToCache</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/IOEngine.html" title="interface in org.apache.hadoop.hbase.io.hfile.bucket">IOEngine</a>&nbsp;ioEngine,
                                             <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketAllocator.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketAllocator</a>&nbsp;bucketAllocator,
                                             <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/UniqueIndexMap.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">UniqueIndexMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;deserialiserMap,
                                             <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/LongAdder.html?is-external=true" title="class or interface in java.util.concurrent.atomic">LongAdder</a>&nbsp;realCacheSize)

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html
index 2e0f11c..1772d99 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1372">BucketCache.SharedMemoryBucketEntry</a>
+<pre>static class <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1390">BucketCache.SharedMemoryBucketEntry</a>
 extends <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.BucketEntry</a></pre>
 </li>
 </ul>
@@ -251,7 +251,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/Bu
 <ul class="blockList">
 <li class="blockList">
 <h4>serialVersionUID</h4>
-<pre>private static final&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html#line.1373">serialVersionUID</a></pre>
+<pre>private static final&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html#line.1391">serialVersionUID</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.bucket.BucketCache.SharedMemoryBucketEntry.serialVersionUID">Constant Field Values</a></dd>
@@ -264,7 +264,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/Bu
 <ul class="blockList">
 <li class="blockList">
 <h4>markedForEvict</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html#line.1376">markedForEvict</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html#line.1394">markedForEvict</a></pre>
 </li>
 </ul>
 <a name="refCount">
@@ -273,7 +273,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/Bu
 <ul class="blockListLast">
 <li class="blockList">
 <h4>refCount</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html#line.1377">refCount</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html#line.1395">refCount</a></pre>
 </li>
 </ul>
 </li>
@@ -290,7 +290,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/Bu
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SharedMemoryBucketEntry</h4>
-<pre><a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html#line.1379">SharedMemoryBucketEntry</a>(long&nbsp;offset,
+<pre><a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html#line.1397">SharedMemoryBucketEntry</a>(long&nbsp;offset,
                         int&nbsp;length,
                         long&nbsp;accessCounter,
                         boolean&nbsp;inMemory)</pre>
@@ -310,7 +310,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/Bu
 <ul class="blockList">
 <li class="blockList">
 <h4>getRefCount</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html#line.1384">getRefCount</a>()</pre>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html#line.1402">getRefCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#getRefCount--">getRefCount</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.BucketEntry</a></code></dd>
@@ -323,7 +323,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/Bu
 <ul class="blockList">
 <li class="blockList">
 <h4>incrementRefCountAndGet</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html#line.1389">incrementRefCountAndGet</a>()</pre>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html#line.1407">incrementRefCountAndGet</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#incrementRefCountAndGet--">incrementRefCountAndGet</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.BucketEntry</a></code></dd>
@@ -336,7 +336,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/Bu
 <ul class="blockList">
 <li class="blockList">
 <h4>decrementRefCountAndGet</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html#line.1394">decrementRefCountAndGet</a>()</pre>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html#line.1412">decrementRefCountAndGet</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#decrementRefCountAndGet--">decrementRefCountAndGet</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.BucketEntry</a></code></dd>
@@ -349,7 +349,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/Bu
 <ul class="blockList">
 <li class="blockList">
 <h4>isMarkedForEvict</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html#line.1399">isMarkedForEvict</a>()</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html#line.1417">isMarkedForEvict</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#isMarkedForEvict--">isMarkedForEvict</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.BucketEntry</a></code></dd>
@@ -362,7 +362,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/Bu
 <ul class="blockListLast">
 <li class="blockList">
 <h4>markForEvict</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html#line.1404">markForEvict</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.SharedMemoryBucketEntry.html#line.1422">markForEvict</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html#markForEvict--">markForEvict</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.BucketEntry</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.StatisticsThread.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.StatisticsThread.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.StatisticsThread.html
index c4d7746..896f6bb 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.StatisticsThread.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.StatisticsThread.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.654">BucketCache.StatisticsThread</a>
+<pre>private static class <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.647">BucketCache.StatisticsThread</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></pre>
 </li>
 </ul>
@@ -239,7 +239,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>bucketCache</h4>
-<pre>private final&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.StatisticsThread.html#line.655">bucketCache</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.StatisticsThread.html#line.648">bucketCache</a></pre>
 </li>
 </ul>
 </li>
@@ -256,7 +256,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>StatisticsThread</h4>
-<pre>public&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.StatisticsThread.html#line.657">StatisticsThread</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache</a>&nbsp;bucketCache)</pre>
+<pre>public&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.StatisticsThread.html#line.650">StatisticsThread</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache</a>&nbsp;bucketCache)</pre>
 </li>
 </ul>
 </li>
@@ -273,7 +273,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.StatisticsThread.html#line.664">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.StatisticsThread.html#line.657">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>


[12/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html
index 05e032c..40ef9f4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslNegotiateHandler.html
@@ -25,767 +25,805 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.io.asyncfs;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.21"></a>
 <span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import com.google.protobuf.CodedOutputStream;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.io.IOException;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.lang.reflect.Field;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.lang.reflect.InvocationTargetException;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.lang.reflect.Method;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.net.InetAddress;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import java.net.InetSocketAddress;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import java.nio.ByteBuffer;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import java.security.GeneralSecurityException;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import java.util.Arrays;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import java.util.Collections;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import java.util.List;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import java.util.Map;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import java.util.Set;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import java.util.concurrent.TimeUnit;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>import javax.security.auth.callback.Callback;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import javax.security.auth.callback.CallbackHandler;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import javax.security.auth.callback.NameCallback;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import javax.security.auth.callback.PasswordCallback;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import javax.security.sasl.RealmCallback;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import javax.security.sasl.Sasl;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import javax.security.sasl.SaslClient;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import javax.security.sasl.SaslException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.commons.codec.binary.Base64;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.commons.lang3.StringUtils;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.conf.Configuration;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.slf4j.Logger;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.slf4j.LoggerFactory;<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>import com.google.protobuf.ByteString;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.security.token.Token;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>/**<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> */<a name="line.108"></a>
-<span class="sourceLineNo">109</span>@InterfaceAudience.Private<a name="line.109"></a>
-<span class="sourceLineNo">110</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private static final Logger LOG =<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.112"></a>
+<span class="sourceLineNo">023</span>import com.google.protobuf.ByteString;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import com.google.protobuf.CodedOutputStream;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.lang.reflect.Field;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.lang.reflect.InvocationTargetException;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.lang.reflect.Method;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.InetAddress;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.net.InetSocketAddress;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.nio.ByteBuffer;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.security.GeneralSecurityException;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Arrays;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Collections;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.List;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Map;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Set;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.concurrent.TimeUnit;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import javax.security.auth.callback.Callback;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import javax.security.auth.callback.CallbackHandler;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import javax.security.auth.callback.NameCallback;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import javax.security.auth.callback.PasswordCallback;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import javax.security.sasl.RealmCallback;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import javax.security.sasl.Sasl;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import javax.security.sasl.SaslClient;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import javax.security.sasl.SaslException;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.commons.codec.binary.Base64;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.commons.lang3.StringUtils;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.crypto.key.KeyProvider;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.security.token.Token;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.slf4j.Logger;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.LoggerFactory;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>/**<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.104"></a>
+<span class="sourceLineNo">105</span> */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>@InterfaceAudience.Private<a name="line.106"></a>
+<span class="sourceLineNo">107</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private static final Logger LOG =<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private static final String SERVER_NAME = "0";<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  private static final String PROTOCOL = "hdfs";<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  private static final String NAME_DELIMITER = " ";<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  private interface SaslAdaptor {<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.127"></a>
+<span class="sourceLineNo">114</span>  private static final String SERVER_NAME = "0";<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final String PROTOCOL = "hdfs";<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private static final String NAME_DELIMITER = " ";<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  private interface SaslAdaptor {<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
 <span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.132"></a>
+<span class="sourceLineNo">129</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  // helper class for convert protos.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private interface PBHelper {<a name="line.132"></a>
 <span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  // helper class for convert protos.<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  private interface PBHelper {<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.137"></a>
+<span class="sourceLineNo">134</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
 <span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final PBHelper PB_HELPER;<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private interface TransparentCryptoHelper {<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        throws IOException;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    Field saslPropsResolverField =<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    saslPropsResolverField.setAccessible(true);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    Field trustedChannelResolverField =<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    trustedChannelResolverField.setAccessible(true);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Field fallbackToSimpleAuthField =<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return new SaslAdaptor() {<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>      @Override<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        try {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        } catch (IllegalAccessException e) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>          throw new RuntimeException(e);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        }<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        try {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        } catch (IllegalAccessException e) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          throw new RuntimeException(e);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      }<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>      @Override<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        try {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (IllegalAccessException e) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          throw new RuntimeException(e);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    };<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    Class&lt;?&gt; helperClass;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    try {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } catch (ClassNotFoundException e) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    Method convertCipherOptionProtosMethod =<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    return new PBHelper() {<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>      @SuppressWarnings("unchecked")<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      @Override<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        try {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          throw new RuntimeException(e);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>      @SuppressWarnings("unchecked")<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      @Override<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        try {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>          throw new RuntimeException(e);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      }<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    };<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      throws NoSuchMethodException {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    return new TransparentCryptoHelper() {<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>      @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          DFSClient client) throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        try {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          KeyVersion decryptedKey =<a name="line.240"></a>
-<span class="sourceLineNo">241</span>              (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          return encryptor;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        } catch (InvocationTargetException e) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          throw new RuntimeException(e.getTargetException());<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        } catch (GeneralSecurityException e) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          throw new IOException(e);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        } catch (IllegalAccessException e) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          throw new RuntimeException(e);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      }<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    };<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  static {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    try {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      PB_HELPER = createPBHelper();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    } catch (Exception e) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          + "HBASE-16110 for more information.";<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      LOG.error(msg, e);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      throw new Error(msg, e);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>  /**<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    private final char[] password;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    private final String userName;<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>     * Creates a new SaslClientCallbackHandler.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>     * @param userName SASL user name<a name="line.282"></a>
-<span class="sourceLineNo">283</span>     * @Param password SASL password<a name="line.283"></a>
-<span class="sourceLineNo">284</span>     */<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      this.password = password;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      this.userName = userName;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    @Override<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      NameCallback nc = null;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      PasswordCallback pc = null;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      RealmCallback rc = null;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      for (Callback callback : callbacks) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          continue;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        } else if (callback instanceof NameCallback) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          nc = (NameCallback) callback;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        } else if (callback instanceof PasswordCallback) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>          pc = (PasswordCallback) callback;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        } else if (callback instanceof RealmCallback) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          rc = (RealmCallback) callback;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        } else {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      if (nc != null) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        nc.setName(userName);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      if (pc != null) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        pc.setPassword(password);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      if (rc != null) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        rc.setText(rc.getDefaultText());<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private final Configuration conf;<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    private final SaslClient saslClient;<a name="line.326"></a>
+<span class="sourceLineNo">139</span>  private static final PBHelper PB_HELPER;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  private interface TransparentCryptoHelper {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        throws IOException;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    Field saslPropsResolverField =<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    saslPropsResolverField.setAccessible(true);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    Field trustedChannelResolverField =<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    trustedChannelResolverField.setAccessible(true);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Field fallbackToSimpleAuthField =<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return new SaslAdaptor() {<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>      @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        try {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        } catch (IllegalAccessException e) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          throw new RuntimeException(e);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>      @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        try {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        } catch (IllegalAccessException e) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          throw new RuntimeException(e);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      }<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>      @Override<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        } catch (IllegalAccessException e) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          throw new RuntimeException(e);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    Class&lt;?&gt; helperClass;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    try {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    } catch (ClassNotFoundException e) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Method convertCipherOptionProtosMethod =<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    return new PBHelper() {<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>      @SuppressWarnings("unchecked")<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      @Override<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        try {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          throw new RuntimeException(e);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        }<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      }<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>      @SuppressWarnings("unchecked")<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          throw new RuntimeException(e);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    };<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  private static TransparentCryptoHelper createTransparentCryptoHelper27()<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      throws NoSuchMethodException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    return new TransparentCryptoHelper() {<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          DFSClient client) throws IOException {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          KeyVersion decryptedKey =<a name="line.237"></a>
+<span class="sourceLineNo">238</span>            (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          return encryptor;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        } catch (InvocationTargetException e) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          throw new RuntimeException(e.getTargetException());<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        } catch (GeneralSecurityException e) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          throw new IOException(e);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        } catch (IllegalAccessException e) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          throw new RuntimeException(e);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    };<a name="line.252"></a>
+<span class="sourceLineNo">253</span>  }<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>  private static TransparentCryptoHelper createTransparentCryptoHelper28()<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      throws ClassNotFoundException, NoSuchMethodException {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Class&lt;?&gt; hdfsKMSUtilCls = Class.forName("org.apache.hadoop.hdfs.HdfsKMSUtil");<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Method decryptEncryptedDataEncryptionKeyMethod = hdfsKMSUtilCls.getDeclaredMethod(<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      "decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class, KeyProvider.class);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    return new TransparentCryptoHelper() {<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>      @Override<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          DFSClient client) throws IOException {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        try {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          KeyVersion decryptedKey = (KeyVersion) decryptEncryptedDataEncryptionKeyMethod<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            .invoke(null, feInfo, client.getKeyProvider());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          return encryptor;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        } catch (InvocationTargetException e) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          throw new RuntimeException(e.getTargetException());<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        } catch (GeneralSecurityException e) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          throw new IOException(e);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        } catch (IllegalAccessException e) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>          throw new RuntimeException(e);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    };<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      throws NoSuchMethodException, ClassNotFoundException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      return createTransparentCryptoHelper27();<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    } catch (NoSuchMethodException e) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      LOG.debug("No decryptEncryptedDataEncryptionKey method in DFSClient, should be hadoop 2.8+",<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        e);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    return createTransparentCryptoHelper28();<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  static {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    try {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      PB_HELPER = createPBHelper();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    } catch (Exception e) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          + "HBASE-16110 for more information.";<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      LOG.error(msg, e);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      throw new Error(msg, e);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  }<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /**<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   */<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    private final char[] password;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    private final String userName;<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>    /**<a name="line.318"></a>
+<span class="sourceLineNo">319</span>     * Creates a new SaslClientCallbackHandler.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>     * @param userName SASL user name<a name="line.320"></a>
+<span class="sourceLineNo">321</span>     * @Param password SASL password<a name="line.321"></a>
+<span class="sourceLineNo">322</span>     */<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      this.password = password;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      this.userName = userName;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>    private final int timeoutMs;<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    private final Promise&lt;Void&gt; promise;<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>    private int step = 0;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      this.conf = conf;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      this.saslProps = saslProps;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      this.timeoutMs = timeoutMs;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      this.promise = promise;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    }<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      sendSaslMessage(ctx, payload, null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      // values for future expansion.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        return null;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    }<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      if (payload != null) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        // and we want to keep that out of hbase-server.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      }<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (options != null) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      int size = proto.getSerializedSize();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      ctx.write(buf);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>    @Override<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      ctx.flush();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      step++;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    }<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      saslClient.dispose();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        throw new IOException(proto.getMessage());<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    private String getNegotiatedQop() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>    private boolean isNegotiatedQopPrivacy() {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      String qop = getNegotiatedQop();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      return qop != null &amp;&amp; "auth-conf".equalsIgnoreCase(qop);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>    private boolean requestedQopContainsPrivacy() {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      Set&lt;String&gt; requestedQop =<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      return requestedQop.contains("auth-conf");<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>    private void checkSaslComplete() throws IOException {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      if (!saslClient.isComplete()) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        throw new IOException("Failed to complete SASL handshake");<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      Set&lt;String&gt; requestedQop =<a name="line.424"></a>
-<span class="sourceLineNo">425</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      String negotiatedQop = getNegotiatedQop();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      LOG.debug(<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        "Verifying QOP, requested QOP = " + requestedQop + ", negotiated QOP = " + negotiatedQop);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (!requestedQop.contains(negotiatedQop)) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        throw new IOException(String.format("SASL handshake completed, but "<a name="line.430"></a>
-<span class="sourceLineNo">431</span>            + "channel does not have acceptable quality of protection, "<a name="line.431"></a>
-<span class="sourceLineNo">432</span>            + "requested = %s, negotiated = %s",<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          requestedQop, negotiatedQop));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>    private boolean useWrap() {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      String qop = (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      return qop != null &amp;&amp; !"auth".equalsIgnoreCase(qop);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    private CipherOption unwrap(CipherOption option, SaslClient saslClient) throws IOException {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      byte[] inKey = option.getInKey();<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      if (inKey != null) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        inKey = saslClient.unwrap(inKey, 0, inKey.length);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      byte[] outKey = option.getOutKey();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      if (outKey != null) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        outKey = saslClient.unwrap(outKey, 0, outKey.length);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      }<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return new CipherOption(option.getCipherSuite(), inKey, option.getInIv(), outKey,<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          option.getOutIv());<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    }<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    private CipherOption getCipherOption(DataTransferEncryptorMessageProto proto,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        boolean isNegotiatedQopPrivacy, SaslClient saslClient) throws IOException {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      List&lt;CipherOption&gt; cipherOptions =<a name="line.457"></a>
-<span class="sourceLineNo">458</span>          PB_HELPER.convertCipherOptionProtos(proto.getCipherOptionList());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      if (cipherOptions == null || cipherOptions.isEmpty()) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        return null;<a name="line.460"></a>
+<span class="sourceLineNo">328</span>    @Override<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      NameCallback nc = null;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      PasswordCallback pc = null;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      RealmCallback rc = null;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      for (Callback callback : callbacks) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>          continue;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        } else if (callback instanceof NameCallback) {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          nc = (NameCallback) callback;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        } else if (callback instanceof PasswordCallback) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>          pc = (PasswordCallback) callback;<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        } else if (callback instanceof RealmCallback) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          rc = (RealmCallback) callback;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        } else {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      if (nc != null) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        nc.setName(userName);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      if (pc != null) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        pc.setPassword(password);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      if (rc != null) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        rc.setText(rc.getDefaultText());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>    private final Configuration conf;<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>    private final SaslClient saslClient;<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    private final int timeoutMs;<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>    private final Promise&lt;Void&gt; promise;<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>    private int step = 0;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      this.conf = conf;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      this.saslProps = saslProps;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      this.timeoutMs = timeoutMs;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      this.promise = promise;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      sendSaslMessage(ctx, payload, null);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      // values for future expansion.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        return null;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.395"></a>
+<span class="sourceLineNo">396</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      if (payload != null) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        // and we want to keep that out of hbase-server.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      if (options != null) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      int size = proto.getSerializedSize();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      ctx.write(buf);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>    @Override<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      ctx.flush();<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      step++;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    @Override<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      saslClient.dispose();<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        throw new IOException(proto.getMessage());<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    private String getNegotiatedQop() {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>    private boolean isNegotia

<TRUNCATED>

[34/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html b/devapidocs/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html
index 8377595..f705e22 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactionTool.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.57">CompactionPipeline</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.56">CompactionPipeline</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">The compaction pipeline of a <a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver"><code>CompactingMemStore</code></a>, is a FIFO queue of segments.
  It supports pushing a segment at the head of the pipeline and removing a segment from the
@@ -328,7 +328,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.58">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.57">LOG</a></pre>
 </li>
 </ul>
 <a name="FIXED_OVERHEAD">
@@ -337,7 +337,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>FIXED_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.60">FIXED_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.59">FIXED_OVERHEAD</a></pre>
 </li>
 </ul>
 <a name="DEEP_OVERHEAD">
@@ -346,7 +346,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEEP_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.62">DEEP_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.61">DEEP_OVERHEAD</a></pre>
 </li>
 </ul>
 <a name="region">
@@ -355,7 +355,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.64">region</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.63">region</a></pre>
 </li>
 </ul>
 <a name="pipeline">
@@ -364,7 +364,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>pipeline</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html?is-external=true" title="class or interface in java.util">LinkedList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.65">pipeline</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html?is-external=true" title="class or interface in java.util">LinkedList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.64">pipeline</a></pre>
 </li>
 </ul>
 <a name="readOnlyCopy">
@@ -373,7 +373,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>readOnlyCopy</h4>
-<pre>private volatile&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html?is-external=true" title="class or interface in java.util">LinkedList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.67">readOnlyCopy</a></pre>
+<pre>private volatile&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html?is-external=true" title="class or interface in java.util">LinkedList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.66">readOnlyCopy</a></pre>
 </li>
 </ul>
 <a name="version">
@@ -382,7 +382,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>version</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.69">version</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.68">version</a></pre>
 </li>
 </ul>
 </li>
@@ -399,7 +399,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CompactionPipeline</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.71">CompactionPipeline</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;region)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.70">CompactionPipeline</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;region)</pre>
 </li>
 </ul>
 </li>
@@ -416,7 +416,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>pushHead</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.75">pushHead</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;segment)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.74">pushHead</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;segment)</pre>
 </li>
 </ul>
 <a name="getVersionedList--">
@@ -425,7 +425,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getVersionedList</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.85">getVersionedList</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.84">getVersionedList</a>()</pre>
 </li>
 </ul>
 <a name="getVersionedTail--">
@@ -434,7 +434,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getVersionedTail</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.91">getVersionedTail</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.90">getVersionedTail</a>()</pre>
 </li>
 </ul>
 <a name="swap-org.apache.hadoop.hbase.regionserver.VersionedSegmentsList-org.apache.hadoop.hbase.regionserver.ImmutableSegment-boolean-boolean-">
@@ -443,7 +443,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>swap</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.118">swap</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;versionedList,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.117">swap</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;versionedList,
                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;segment,
                     boolean&nbsp;closeSuffix,
                     boolean&nbsp;updateRegionSize)</pre>
@@ -472,7 +472,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSegmentsHeapSize</h4>
-<pre>private static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.167">getSegmentsHeapSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;list)</pre>
+<pre>private static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.161">getSegmentsHeapSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;list)</pre>
 </li>
 </ul>
 <a name="getSegmentsOffHeapSize-java.util.List-">
@@ -481,7 +481,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSegmentsOffHeapSize</h4>
-<pre>private static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.175">getSegmentsOffHeapSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;list)</pre>
+<pre>private static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.169">getSegmentsOffHeapSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;list)</pre>
 </li>
 </ul>
 <a name="getSegmentsKeySize-java.util.List-">
@@ -490,7 +490,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSegmentsKeySize</h4>
-<pre>private static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.183">getSegmentsKeySize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;list)</pre>
+<pre>private static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.177">getSegmentsKeySize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;list)</pre>
 </li>
 </ul>
 <a name="flattenOneSegment-long-org.apache.hadoop.hbase.regionserver.CompactingMemStore.IndexType-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">
@@ -499,7 +499,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>flattenOneSegment</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.199">flattenOneSegment</a>(long&nbsp;requesterVersion,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.193">flattenOneSegment</a>(long&nbsp;requesterVersion,
                                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a>&nbsp;idxType,
                                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</pre>
 <div class="block">If the caller holds the current version, go over the the pipeline and try to flatten each
@@ -518,7 +518,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isEmpty</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.241">isEmpty</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.235">isEmpty</a>()</pre>
 </li>
 </ul>
 <a name="getSegments--">
@@ -527,7 +527,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSegments</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.245">getSegments</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.239">getSegments</a>()</pre>
 </li>
 </ul>
 <a name="size--">
@@ -536,7 +536,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.249">size</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.243">size</a>()</pre>
 </li>
 </ul>
 <a name="getMinSequenceId--">
@@ -545,7 +545,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getMinSequenceId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.253">getMinSequenceId</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.247">getMinSequenceId</a>()</pre>
 </li>
 </ul>
 <a name="getTailSize--">
@@ -554,7 +554,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTailSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.262">getTailSize</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.256">getTailSize</a>()</pre>
 </li>
 </ul>
 <a name="getPipelineSize--">
@@ -563,7 +563,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getPipelineSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.267">getPipelineSize</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.261">getPipelineSize</a>()</pre>
 </li>
 </ul>
 <a name="swapSuffix-java.util.List-org.apache.hadoop.hbase.regionserver.ImmutableSegment-boolean-">
@@ -572,7 +572,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>swapSuffix</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.276">swapSuffix</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;suffix,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.270">swapSuffix</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;suffix,
                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;segment,
                         boolean&nbsp;closeSegmentsInSuffix)</pre>
 </li>
@@ -583,7 +583,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>replaceAtIndex</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.297">replaceAtIndex</a>(int&nbsp;idx,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.291">replaceAtIndex</a>(int&nbsp;idx,
                             <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;newSegment)</pre>
 </li>
 </ul>
@@ -593,7 +593,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTail</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.307">getTail</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.301">getTail</a>()</pre>
 </li>
 </ul>
 <a name="addFirst-org.apache.hadoop.hbase.regionserver.ImmutableSegment-">
@@ -602,7 +602,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addFirst</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.315">addFirst</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;segment)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.309">addFirst</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;segment)</pre>
 </li>
 </ul>
 <a name="validateSuffixList-java.util.LinkedList-">
@@ -611,7 +611,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>validateSuffixList</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.321">validateSuffixList</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html?is-external=true" title="class or interface in java.util">LinkedList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt;&nbsp;suffix)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#line.315">validateSuffixList</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html?is-external=true" title="class or interface in java.util">LinkedList</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt;&nbsp;suffix)</pre>
 </li>
 </ul>
 </li>
@@ -642,7 +642,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactionTool.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html b/devapidocs/org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html
index f09c4bb..5556638 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html
@@ -308,9 +308,10 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 </tr>
 <tr id="i21" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">internalAdd</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
            boolean&nbsp;mslabUsed,
-           <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+           <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+           boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
 <tr id="i22" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
@@ -361,10 +362,11 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 </tr>
 <tr id="i31" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">updateMetaInfo</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
               boolean&nbsp;succ,
               boolean&nbsp;mslabUsed,
-              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+              boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
 </table>
 <ul class="blockList">
@@ -379,7 +381,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellLength-org.apache.hadoop.hbase.Cell-">getCellLength</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreLAB--">getMemStoreLAB</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreSize--">getMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getOffHeapSize--">getOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#heapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">heapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOffHeapSize-boolean-">indexEntryOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOnHeapSize-boolean-">indexEntryOnHeapSiz
 e</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#offHeapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">offHeapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareAndSetDataSize-long-long-">compareAndSetDataSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellLength-org.apache.hadoop.hbase.Cell-">getCellLength</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreLAB--">getMemStoreLAB</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreSize--">getMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getOffHeapSize--">getOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#heapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">heapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOffHeapSize-boolean-">indexEntryOffHea
 pSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOnHeapSize-boolean-">indexEntryOnHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#offHeapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">offHeapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#sharedLock--">sharedLock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#sharedUnlock--">sharedUnlock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#waitForUpdates--">waitForUpdates</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -829,7 +831,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 </dl>
 </li>
 </ul>
-<a name="internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
+<a name="internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">
 <!--   -->
 </a>
 <ul class="blockList">
@@ -837,26 +839,28 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <h4>internalAdd</h4>
 <pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#line.242">internalAdd</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                            boolean&nbsp;mslabUsed,
-                           <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
+                           <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+                           boolean&nbsp;sizeAddedPreOperation)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></code></dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">internalAdd</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></code></dd>
 </dl>
 </li>
 </ul>
-<a name="updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
+<a name="updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>updateMetaInfo</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#line.247">updateMetaInfo</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#line.248">updateMetaInfo</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
                               boolean&nbsp;succ,
                               boolean&nbsp;mslabUsed,
-                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
+                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+                              boolean&nbsp;sizeAddedPreOperation)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></code></dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">updateMetaInfo</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></code></dd>
 </dl>
 </li>
 </ul>
@@ -866,7 +870,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockList">
 <li class="blockList">
 <h4>tailSet</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#line.258">tailSet</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;firstCell)</pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#line.259">tailSet</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;firstCell)</pre>
 <div class="block">Returns a subset of the segment cell set, which starts with the given cell</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -884,7 +888,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockList">
 <li class="blockList">
 <h4>dump</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#line.267">dump</a>(org.slf4j.Logger&nbsp;log)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#line.268">dump</a>(org.slf4j.Logger&nbsp;log)</pre>
 <div class="block">Dumps all cells of the segment into the given log</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -898,7 +902,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#line.274">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#line.275">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html#toString--">toString</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></dd>
@@ -911,7 +915,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getSnapshotScanners</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#line.284">getSnapshotScanners</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#line.285">getSnapshotScanners</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html#getSnapshotScanners--">getSnapshotScanners</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html b/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
index 22f5cc8..76cea24 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":9,"i9":10,"i10":10,"i11":10,"i12":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":9,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -171,7 +171,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#active">active</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#snapshot">snapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#snapshotId">snapshotId</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#snapshot">snapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#snapshotId">snapshotId</a></code></li>
 </ul>
 </li>
 </ul>
@@ -213,50 +213,49 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr id="i0" class="altColor">
-<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#checkActiveSize--">checkActiveSize</a></span>()</code>
-<div class="block">Check whether anything need to be done based on the current active set size
- Nothing need to be done for the DefaultMemStore</div>
-</td>
-</tr>
-<tr id="i1" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#getFlushableSize--">getFlushableSize</a></span>()</code>
 <div class="block">Flush will first clear out the data in snapshot if any (It will take a second flush
  invocation to clear the current Cell set).</div>
 </td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i1" class="rowColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#getNextRow-org.apache.hadoop.hbase.Cell-">getNextRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i2" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#getScanners-long-">getScanners</a></span>(long&nbsp;readPt)</code>&nbsp;</td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#getSegments--">getSegments</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>protected long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#heapSize--">heapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
+<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/regionserver/DefaultMemStore.html#isSloppy--">isSloppy</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>protected long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#keySize--">keySize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#main-java.lang.String:A-">main</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</code>
 <div class="block">Code to help figure if our approximation of object heap sizes is close
  enough.</div>
 </td>
 </tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#postUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-">postUpdate</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive)</code>
+<div class="block">Issue any post update synchronization and tests</div>
+</td>
+</tr>
 <tr id="i9" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#preFlushSeqIDEstimation--">preFlushSeqIDEstimation</a></span>()</code>
@@ -264,16 +263,28 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 </td>
 </tr>
 <tr id="i10" class="altColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">preUpdate</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+         <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>
+<div class="block">Issue any synchronization and test needed before applying the update</div>
+</td>
+</tr>
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#size--">size</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#sizeAddedPreOperation--">sizeAddedPreOperation</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#snapshot--">snapshot</a></span>()</code>
 <div class="block">Creates a snapshot of the current memstore.</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#updateLowestUnflushedSequenceIdInWAL-boolean-">updateLowestUnflushedSequenceIdInWAL</a></span>(boolean&nbsp;onlyIfMoreRecent)</code>
 <div class="block">Updates the wal with the lowest sequence id (oldest entry) that is still in memory</div>
@@ -515,34 +526,72 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 </dl>
 </li>
 </ul>
-<a name="size--">
+<a name="preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>size</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.150">size</a>()</pre>
+<h4>preUpdate</h4>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.149">preUpdate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+                            <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+                            <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">AbstractMemStore</a></code></span></div>
+<div class="block">Issue any synchronization and test needed before applying the update</div>
 <dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">preUpdate</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>currentActive</code> - the segment to be updated</dd>
+<dd><code>cell</code> - the cell to be added</dd>
+<dd><code>memstoreSizing</code> - object to accumulate region size changes</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>Total memory occupied by this MemStore. This won't include any size occupied by the
-         snapshot. We assume the snapshot will get cleared soon. This is not thread safe and
-         the memstore may be changed while computing its size. It is the responsibility of the
-         caller to make sure this doesn't happen.</dd>
+<dd>true iff can proceed with applying the update</dd>
+</dl>
+</li>
+</ul>
+<a name="postUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>postUpdate</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.154">postUpdate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#postUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-">AbstractMemStore</a></code></span></div>
+<div class="block">Issue any post update synchronization and tests</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#postUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-">postUpdate</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>currentActive</code> - updated segment</dd>
 </dl>
 </li>
 </ul>
-<a name="checkActiveSize--">
+<a name="sizeAddedPreOperation--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>checkActiveSize</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.159">checkActiveSize</a>()</pre>
-<div class="block">Check whether anything need to be done based on the current active set size
- Nothing need to be done for the DefaultMemStore</div>
+<h4>sizeAddedPreOperation</h4>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.158">sizeAddedPreOperation</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#checkActiveSize--">checkActiveSize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#sizeAddedPreOperation--">sizeAddedPreOperation</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="size--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>size</h4>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.163">size</a>()</pre>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>Total memory occupied by this MemStore. This won't include any size occupied by the
+         snapshot. We assume the snapshot will get cleared soon. This is not thread safe and
+         the memstore may be changed while computing its size. It is the responsibility of the
+         caller to make sure this doesn't happen.</dd>
 </dl>
 </li>
 </ul>
@@ -552,7 +601,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>preFlushSeqIDEstimation</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.164">preFlushSeqIDEstimation</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.168">preFlushSeqIDEstimation</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#preFlushSeqIDEstimation--">MemStore</a></code></span></div>
 <div class="block">This method is called before the flush is executed.</div>
 <dl>
@@ -568,7 +617,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>isSloppy</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.168">isSloppy</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.172">isSloppy</a>()</pre>
 </li>
 </ul>
 <a name="main-java.lang.String:A-">
@@ -577,7 +626,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockListLast">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.179">main</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.183">main</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
 <div class="block">Code to help figure if our approximation of object heap sizes is close
  enough.  See hbase-900.  Fills memstores then waits so user can heap
  dump and bring up resultant hprof in something like jprofiler which

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
index 779b1fd..b5220bc 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html?is-external=true" title="class or interface in java.lang">@FunctionalInterface</a>
-public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3045">HRegion.BatchOperation.Visitor</a></pre>
+public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3051">HRegion.BatchOperation.Visitor</a></pre>
 <div class="block">Visitor interface for batch operations</div>
 </li>
 </ul>
@@ -155,7 +155,7 @@ public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase
 <ul class="blockListLast">
 <li class="blockList">
 <h4>visit</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html#line.3050">visit</a>(int&nbsp;index)
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html#line.3056">visit</a>(int&nbsp;index)
        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>


[46/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index da7f29b7..b1e8f2b 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -1167,7 +1167,7 @@
 <dd>
 <div class="block">Write the updates</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MutableSegment.html#add-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">add(Cell, boolean, MemStoreSizing)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MutableSegment.html#add-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">add(Cell, boolean, MemStoreSizing, boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></dt>
 <dd>
 <div class="block">Adds the given cell into the segment</div>
 </dd>
@@ -2801,6 +2801,12 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationLoadSink.html#ageOfLastAppliedOp">ageOfLastAppliedOp</a></span> - Variable in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationLoadSink.html" title="class in org.apache.hadoop.hbase.replication">ReplicationLoadSink</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#ageOfLastShippedOp">ageOfLastShippedOp</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsSource</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#ageOfLastShippedOp">ageOfLastShippedOp</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#ageOfLastShippedOp">ageOfLastShippedOp</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationLoadSource.html#ageOfLastShippedOp">ageOfLastShippedOp</a></span> - Variable in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationLoadSource.html" title="class in org.apache.hadoop.hbase.replication">ReplicationLoadSource</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationGlobalSourceSource.html#ageOfLastShippedOpHist">ageOfLastShippedOpHist</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationGlobalSourceSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationGlobalSourceSource</a></dt>
@@ -6543,8 +6549,6 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.html#blockUpdates--">blockUpdates()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#blockUpdates--">blockUpdates()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a></dt>
-<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/io/hfile/BlockWithScanInfo.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockWithScanInfo</span></a> - Class in <a href="org/apache/hadoop/hbase/io/hfile/package-summary.html">org.apache.hadoop.hbase.io.hfile</a></dt>
 <dd>
 <div class="block">BlockWithScanInfo is wrapper class for HFileBlock with other attributes.</div>
@@ -7138,6 +7142,8 @@
 <dd>
 <div class="block">Create a store file writer.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#build--">build()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.ReplicationPeerConfigBuilderImpl.html#build--">build()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.ReplicationPeerConfigBuilderImpl.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig.ReplicationPeerConfigBuilderImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.html#build--">build()</a></span> - Method in interface org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeerConfigBuilder</a></dt>
@@ -8046,6 +8052,8 @@
 <dd>
 <div class="block">Cache the block to ramCache</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#cacheBlockWithWaitInternal-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.Cacheable-boolean-boolean-">cacheBlockWithWaitInternal(BlockCacheKey, Cacheable, boolean, boolean)</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.bucket.<a href="org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/CacheConfig.html#cacheBloomsOnWrite">cacheBloomsOnWrite</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a></dt>
 <dd>
 <div class="block">Whether compound bloom filter blocks should be cached on write</div>
@@ -8370,6 +8378,8 @@
 <dd>
 <div class="block">Calculate size for cleaner pool.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html#calculateReplicationDelay-long-long-int-">calculateReplicationDelay(long, long, int)</a></span> - Static method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationLoad</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/QuotaUtil.html#calculateResultSize-org.apache.hadoop.hbase.client.Result-">calculateResultSize(Result)</a></span> - Static method in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/QuotaUtil.html" title="class in org.apache.hadoop.hbase.quotas">QuotaUtil</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/QuotaUtil.html#calculateResultSize-java.util.List-">calculateResultSize(List&lt;Result&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/QuotaUtil.html" title="class in org.apache.hadoop.hbase.quotas">QuotaUtil</a></dt>
@@ -10008,21 +10018,12 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#checkACLForSuperUsers-java.lang.String:A-java.util.List-">checkACLForSuperUsers(String[], List&lt;ACL&gt;)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#checkActiveSize--">checkActiveSize()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></dt>
-<dd>
-<div class="block">Check whether anything need to be done based on the current active set size</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#checkActiveSize--">checkActiveSize()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html#checkAllBytesParsed--">checkAllBytesParsed()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryStream</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#checkAndAddToActiveSize-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">checkAndAddToActiveSize(MutableSegment, Cell, MemStoreSizing)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a></dt>
 <dd>
 <div class="block">Check whether anything need to be done based on the current active set size.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#checkActiveSize--">checkActiveSize()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/DefaultMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">DefaultMemStore</a></dt>
-<dd>
-<div class="block">Check whether anything need to be done based on the current active set size
- Nothing need to be done for the DefaultMemStore</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html#checkAllBytesParsed--">checkAllBytesParsed()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryStream</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/ImmutableMemStoreLAB.html#checkAndCloseMSLABs-int-">checkAndCloseMSLABs(int)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ImmutableMemStoreLAB.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableMemStoreLAB</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/util/RestoreTool.html#checkAndCreateTable-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.TableName-java.util.ArrayList-org.apache.hadoop.hbase.client.TableDescriptor-boolean-">checkAndCreateTable(Connection, Path, TableName, TableName, ArrayList&lt;Path&gt;, TableDescriptor, boolean)</a></span> - Method in class org.apache.hadoop.hbase.backup.util.<a href="org/apache/hadoop/hbase/backup/util/RestoreTool.html" title="class in org.apache.hadoop.hbase.backup.util">RestoreTool</a></dt>
@@ -14265,7 +14266,7 @@
 <div class="block">Types of indexes (part of immutable segments) to be used after flattening,
  compaction, or merge are applied.</div>
 </dd>
-<dt><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.InMemoryFlushRunnable</span></a> - Class in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
+<dt><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.InMemoryCompactionRunnable</span></a> - Class in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
 <dd>
 <div class="block">The in-memory-flusher thread performs the flush asynchronously.</div>
 </dd>
@@ -14916,6 +14917,14 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html#compare-byte:A-int-int-byte:A-int-int-">compare(byte[], int, int, byte[], int, int)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html" title="class in org.apache.hadoop.hbase.util">Bytes.RowEndKeyComparator</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#compareAndSetDataSize-long-long-">compareAndSetDataSize(long, long)</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html#compareAndSetDataSize-long-long-">compareAndSetDataSize(long, long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html" title="class in org.apache.hadoop.hbase.regionserver">NonThreadSafeMemStoreSizing</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/Segment.html#compareAndSetDataSize-long-long-">compareAndSetDataSize(long, long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html#compareAndSetDataSize-long-long-">compareAndSetDataSize(long, long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html" title="class in org.apache.hadoop.hbase.regionserver">ThreadSafeMemStoreSizing</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html#compareAndSetMax-long-long-">compareAndSetMax(long, long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TimeRangeTracker.NonSyncTimeRangeTracker.html#compareAndSetMax-long-long-">compareAndSetMax(long, long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TimeRangeTracker.NonSyncTimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker.NonSyncTimeRangeTracker</a></dt>
@@ -17136,6 +17145,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.html#constructImpl--">constructImpl()</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RegionListTmpl</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#constructImpl-java.lang.Class-">constructImpl(Class&lt;? extends AbstractTemplateImpl&gt;)</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#constructImpl--">constructImpl()</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#constructImpl-java.lang.Class-">constructImpl(Class&lt;? extends AbstractTemplateImpl&gt;)</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#constructImpl--">constructImpl()</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a></dt>
@@ -18040,7 +18053,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#copyCellInto-org.apache.hadoop.hbase.Cell-int-">copyCellInto(Cell, int)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreLABImpl</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#copyCellIntoMSLAB-org.apache.hadoop.hbase.Cell-">copyCellIntoMSLAB(Cell)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">CellChunkImmutableSegment</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#copyCellIntoMSLAB-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">copyCellIntoMSLAB(Cell, MemStoreSizing)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">CellChunkImmutableSegment</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/snapshot/ExportSnapshot.ExportMapper.html#copyData-org.apache.hadoop.mapreduce.Mapper.Context-org.apache.hadoop.fs.Path-java.io.InputStream-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.FSDataOutputStream-long-">copyData(Mapper&lt;BytesWritable, NullWritable, NullWritable, NullWritable&gt;.Context, Path, InputStream, Path, FSDataOutputStream, long)</a></span> - Method in class org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/ExportSnapshot.ExportMapper.html" title="class in org.apache.hadoop.hbase.snapshot">ExportSnapshot.ExportMapper</a></dt>
 <dd>&nbsp;</dd>
@@ -21048,6 +21061,10 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#createTransparentCryptoHelper--">createTransparentCryptoHelper()</a></span> - Static method in class org.apache.hadoop.hbase.io.asyncfs.<a href="org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html" title="class in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#createTransparentCryptoHelper27--">createTransparentCryptoHelper27()</a></span> - Static method in class org.apache.hadoop.hbase.io.asyncfs.<a href="org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html" title="class in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#createTransparentCryptoHelper28--">createTransparentCryptoHelper28()</a></span> - Static method in class org.apache.hadoop.hbase.io.asyncfs.<a href="org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html" title="class in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/MultipleColumnPrefixFilter.html#createTreeSet--">createTreeSet()</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/MultipleColumnPrefixFilter.html" title="class in org.apache.hadoop.hbase.filter">MultipleColumnPrefixFilter</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#createUnassignProcedure-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-boolean-">createUnassignProcedure(RegionInfo, ServerName, boolean)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
@@ -21474,6 +21491,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#currentPath">currentPath</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceShipper</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#currentPath">currentPath</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#currentPath">currentPath</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html#currentPath">currentPath</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryStream</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/WALInputFormat.WALRecordReader.html#currentPos">currentPos</a></span> - Variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/WALInputFormat.WALRecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce">WALInputFormat.WALRecordReader</a></dt>
@@ -21482,6 +21503,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#currentPosition">currentPosition</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceWALReader</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#currentPosition">currentPosition</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#currentPosition">currentPosition</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html#currentPositionOfEntry">currentPositionOfEntry</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryStream</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html#currentPositionOfReader">currentPositionOfReader</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryStream</a></dt>
@@ -23731,6 +23756,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.html#DEFAULT_TIMEOUT">DEFAULT_TIMEOUT</a></span> - Static variable in class org.apache.hadoop.hbase.coordination.<a href="org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.html" title="class in org.apache.hadoop.hbase.coordination">ZKSplitLogManagerCoordination</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#DEFAULT_TIMEOUT">DEFAULT_TIMEOUT</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceShipper</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tool/Canary.html#DEFAULT_TIMEOUT">DEFAULT_TIMEOUT</a></span> - Static variable in class org.apache.hadoop.hbase.tool.<a href="org/apache/hadoop/hbase/tool/Canary.html" title="class in org.apache.hadoop.hbase.tool">Canary</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/ImportTsv.TsvParser.html#DEFAULT_TIMESTAMP_COLUMN_INDEX">DEFAULT_TIMESTAMP_COLUMN_INDEX</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/ImportTsv.TsvParser.html" title="class in org.apache.hadoop.hbase.mapreduce">ImportTsv.TsvParser</a></dt>
@@ -25950,6 +25977,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#doAdd-org.apache.hadoop.hbase.master.procedure.FairQueue-org.apache.hadoop.hbase.master.procedure.Queue-org.apache.hadoop.hbase.procedure2.Procedure-boolean-">doAdd(FairQueue&lt;T&gt;, Queue&lt;T&gt;, Procedure&lt;?&gt;, boolean)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureScheduler</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#doAdd-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">doAdd(MutableSegment, Cell, MemStoreSizing)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#doAddOrUpsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">doAddOrUpsert(Cell, long, MemStoreSizing, boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.html#doAppend-W-org.apache.hadoop.hbase.regionserver.wal.FSWALEntry-">doAppend(W, FSWALEntry)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.html" title="class in org.apache.hadoop.hbase.regionserver.wal">AbstractFSWAL</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/AsyncFSWAL.html#doAppend-org.apache.hadoop.hbase.wal.WALProvider.AsyncWriter-org.apache.hadoop.hbase.regionserver.wal.FSWALEntry-">doAppend(WALProvider.AsyncWriter, FSWALEntry)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/AsyncFSWAL.html" title="class in org.apache.hadoop.hbase.regionserver.wal">AsyncFSWAL</a></dt>
@@ -26433,6 +26464,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/coprocessor/DoubleColumnInterpreter.html#DoubleColumnInterpreter--">DoubleColumnInterpreter()</a></span> - Constructor for class org.apache.hadoop.hbase.client.coprocessor.<a href="org/apache/hadoop/hbase/client/coprocessor/DoubleColumnInterpreter.html" title="class in org.apache.hadoop.hbase.client.coprocessor">DoubleColumnInterpreter</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#doUpsert-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">doUpsert(MutableSegment, Cell, long, MemStoreSizing)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.html#doWALAppend-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-long-long-">doWALAppend(WALEdit, Durability, long, long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.html#doWALAppend-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.client.Durability-java.util.List-long-long-long-">doWALAppend(WALEdit, Durability, List&lt;UUID&gt;, long, long, long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a></dt>
@@ -30885,6 +30918,10 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/WALInputFormat.WALSplit.html#fileSize">fileSize</a></span> - Variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/WALInputFormat.WALSplit.html" title="class in org.apache.hadoop.hbase.mapreduce">WALInputFormat.WALSplit</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#fileSize">fileSize</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#fileSize">fileSize</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/snapshot/SnapshotInfo.html#fileSizeToString-long-">fileSizeToString(long)</a></span> - Method in class org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/SnapshotInfo.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotInfo</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/snapshot/ExportSnapshot.ExportMapper.html#filesMode">filesMode</a></span> - Variable in class org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/ExportSnapshot.ExportMapper.html" title="class in org.apache.hadoop.hbase.snapshot">ExportSnapshot.ExportMapper</a></dt>
@@ -32479,6 +32516,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/codec/BaseEncoder.html#flushed">flushed</a></span> - Variable in class org.apache.hadoop.hbase.codec.<a href="org/apache/hadoop/hbase/codec/BaseEncoder.html" title="class in org.apache.hadoop.hbase.codec">BaseEncoder</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MutableSegment.html#flushed">flushed</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreScanner.html#flushed">flushed</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreScanner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.html#FLUSHED_CELLS">FLUSHED_CELLS</a></span> - Static variable in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.html" title="interface in org.apache.hadoop.hbase.regionserver">MetricsRegionServerSource</a></dt>
@@ -32546,6 +32585,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#flushInMemory--">flushInMemory()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#flushInMemory-org.apache.hadoop.hbase.regionserver.MutableSegment-">flushInMemory(MutableSegment)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StripeStoreConfig.html#flushIntoL0">flushIntoL0</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StripeStoreConfig.html" title="class in org.apache.hadoop.hbase.regionserver">StripeStoreConfig</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/regionserver/FlushLargeStoresPolicy.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushLargeStoresPolicy</span></a> - Class in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
@@ -34547,10 +34588,16 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationLoadSink.html#getAgeOfLastAppliedOp--">getAgeOfLastAppliedOp()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationLoadSink.html" title="class in org.apache.hadoop.hbase.replication">ReplicationLoadSink</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#getAgeofLastShippedOp-java.lang.String-">getAgeofLastShippedOp(String)</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsSource</a></dt>
+<dd>
+<div class="block">get age of last shipped op of given wal group.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#getAgeOfLastShippedOp--">getAgeOfLastShippedOp()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsSource</a></dt>
 <dd>
 <div class="block">Get AgeOfLastShippedOp</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#getAgeOfLastShippedOp--">getAgeOfLastShippedOp()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationLoadSource.html#getAgeOfLastShippedOp--">getAgeOfLastShippedOp()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationLoadSource.html" title="class in org.apache.hadoop.hbase.replication">ReplicationLoadSource</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.html#getAggregate--">getAggregate()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.html" title="class in org.apache.hadoop.hbase.regionserver">MetricsRegionServerSourceFactoryImpl</a></dt>
@@ -37606,6 +37653,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#getCurrentPath--">getCurrentPath()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceWALReader</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#getCurrentPath--">getCurrentPath()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html#getCurrentPath--">getCurrentPath()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryStream</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html#getCurrentPathStat--">getCurrentPathStat()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryStream</a></dt>
@@ -37614,6 +37663,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#getCurrentPosition--">getCurrentPosition()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceShipper</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#getCurrentPosition--">getCurrentPosition()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#getCurrentRunTime--">getCurrentRunTime()</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor.WorkerThread</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/BlockCache.html#getCurrentSize--">getCurrentSize()</a></span> - Method in interface org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a></dt>
@@ -38565,6 +38616,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationEndpoint.ReplicateContext.html#getEntries--">getEntries()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationEndpoint.ReplicateContext.html" title="class in org.apache.hadoop.hbase.replication">ReplicationEndpoint.ReplicateContext</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#getEntriesTimeout">getEntriesTimeout</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceShipper</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/SingleResponse.html#getEntry--">getEntry()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/SingleResponse.html" title="class in org.apache.hadoop.hbase.client">SingleResponse</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/util/Dictionary.html#getEntry-short-">getEntry(short)</a></span> - Method in interface org.apache.hadoop.hbase.io.util.<a href="org/apache/hadoop/hbase/io/util/Dictionary.html" title="interface in org.apache.hadoop.hbase.io.util">Dictionary</a></dt>
@@ -39317,6 +39370,10 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileComparators.GetFileSize.html#GetFileSize--">GetFileSize()</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileComparators.GetFileSize.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileComparators.GetFileSize</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getFileSize-org.apache.hadoop.fs.Path-">getFileSize(Path)</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSource</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#getFileSize--">getFileSize()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/util/BackupUtils.html#getFilesLength-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">getFilesLength(FileSystem, Path)</a></span> - Static method in class org.apache.hadoop.hbase.backup.util.<a href="org/apache/hadoop/hbase/backup/util/BackupUtils.html" title="class in org.apache.hadoop.hbase.backup.util">BackupUtils</a></dt>
 <dd>
 <div class="block">Get the total length of files under the given directory recursively.</div>
@@ -40216,6 +40273,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.html#getImplData--">getImplData()</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RegionListTmpl</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#getImplData--">getImplData()</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#getImplData--">getImplData()</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.html#getImplData--">getImplData()</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ServerMetricsTmpl</a></dt>
@@ -41146,6 +41205,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSourceImpl.html#getLastShippedAge--">getLastShippedAge()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSourceImpl.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSourceSourceImpl</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#getLastTimeStampOfWalGroup-java.lang.String-">getLastTimeStampOfWalGroup(String)</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsSource</a></dt>
+<dd>
+<div class="block">get the last timestamp of given wal group.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/RpcConnection.html#getLastTouched--">getLastTouched()</a></span> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/RpcConnection.html" title="class in org.apache.hadoop.hbase.ipc">RpcConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html#getLastUpdate--">getLastUpdate()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a></dt>
@@ -45059,6 +45122,8 @@
 <dd>
 <div class="block">Get the id that the source is replicating to.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#getPeerId--">getPeerId()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/SyncReplicationPeerMappingManager.html#getPeerId-org.apache.hadoop.hbase.TableName-">getPeerId(TableName)</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/SyncReplicationPeerMappingManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">SyncReplicationPeerMappingManager</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationEndpoint.Context.html#getPeerId--">getPeerId()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationEndpoint.Context.html" title="class in org.apache.hadoop.hbase.replication">ReplicationEndpoint.Context</a></dt>
@@ -45982,6 +46047,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/ByteBufferPool.html#getQueueSize--">getQueueSize()</a></span> - Method in class org.apache.hadoop.hbase.io.<a href="org/apache/hadoop/hbase/io/ByteBufferPool.html" title="class in org.apache.hadoop.hbase.io">ByteBufferPool</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#getQueueSize--">getQueueSize()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/IncrementCoalescer.html#getQueueSize--">getQueueSize()</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/IncrementCoalescer.html" title="class in org.apache.hadoop.hbase.thrift">IncrementCoalescer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html#getQueueSize--">getQueueSize()</a></span> - Method in interface org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.html" title="interface in org.apache.hadoop.hbase.thrift">IncrementCoalescerMBean</a></dt>
@@ -47117,6 +47184,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.ImplData.html#getRegionServer--">getRegionServer()</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RegionListTmpl.ImplData</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html#getRegionServer--">getRegionServer()</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#getRegionServer--">getRegionServer()</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl.ImplData</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/JVMClusterUtil.RegionServerThread.html#getRegionServer--">getRegionServer()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/JVMClusterUtil.RegionServerThread.html" title="class in org.apache.hadoop.hbase.util">JVMClusterUtil.RegionServerThread</a></dt>
@@ -47518,6 +47587,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MetaTableAccessor.html#getReplicationBarriers-org.apache.hadoop.hbase.client.Result-">getReplicationBarriers(Result)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MetaTableAccessor.html" title="class in org.apache.hadoop.hbase">MetaTableAccessor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#getReplicationDelay--">getReplicationDelay()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getReplicationEndpoint--">getReplicationEndpoint()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSource</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#getReplicationEndpoint--">getReplicationEndpoint()</a></span> - Method in interface org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceInterface</a></dt>
@@ -47554,6 +47625,10 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ServerMetricsBuilder.ServerMetricsImpl.html#getReplicationLoadSourceList--">getReplicationLoadSourceList()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ServerMetricsBuilder.ServerMetricsImpl.html" title="class in org.apache.hadoop.hbase">ServerMetricsBuilder.ServerMetricsImpl</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html#getReplicationManager--">getReplicationManager()</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationSourceService</a></dt>
+<dd>
+<div class="block">Returns the replication manager</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/Replication.html#getReplicationManager--">getReplicationManager()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/Replication.html" title="class in org.apache.hadoop.hbase.replication.regionserver">Replication</a></dt>
 <dd>
 <div class="block">Get the replication sources manager</div>
@@ -52995,6 +53070,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#getUpdatesBlockedTime--">getUpdatesBlockedTime()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html" title="class in org.apache.hadoop.hbase.regionserver">MetricsRegionServerWrapperImpl</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/Segment.html#getUpdatesLock--">getUpdatesLock()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/VersionInfo.html#getUrl--">getUrl()</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/VersionInfo.html" title="class in org.apache.hadoop.hbase.util">VersionInfo</a></dt>
 <dd>
 <div class="block">Get the subversion URL for the root hbase directory.</div>
@@ -53769,8 +53846,18 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/CommonFSUtils.html#getWALFileSystem-org.apache.hadoop.conf.Configuration-">getWALFileSystem(Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/CommonFSUtils.html" title="class in org.apache.hadoop.hbase.util">CommonFSUtils</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#getWalGroup--">getWalGroup()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationEndpoint.ReplicateContext.html#getWalGroupId--">getWalGroupId()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationEndpoint.ReplicateContext.html" title="class in org.apache.hadoop.hbase.replication">ReplicationEndpoint.ReplicateContext</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWalGroupsReplicationStatus--">getWalGroupsReplicationStatus()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getWalGroupStatus--">getWalGroupStatus()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSource</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#getWalGroupStatus--">getWalGroupStatus()</a></span> - Method in interface org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceInterface</a></dt>
+<dd>
+<div class="block">get the stat of replication for each wal group.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/AbstractFSWALProvider.html#getWALNameGroupFromWALName-java.lang.String-int-">getWALNameGroupFromWALName(String, int)</a></span> - Static method in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/AbstractFSWALProvider.html" title="class in org.apache.hadoop.hbase.wal">AbstractFSWALProvider</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/LogRoller.html#getWalNeedsRoll--">getWalNeedsRoll()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/LogRoller.html" title="class in org.apache.hadoop.hbase.regionserver">LogRoller</a></dt>
@@ -58594,6 +58681,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.ImplData.html#ImplData--">ImplData()</a></span> - Constructor for class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RegionListTmpl.ImplData</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html#ImplData--">ImplData()</a></span> - Constructor for class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#ImplData--">ImplData()</a></span> - Constructor for class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl.ImplData</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.ImplData.html#ImplData--">ImplData()</a></span> - Constructor for class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ServerMetricsTmpl.ImplData</a></dt>
@@ -58695,7 +58784,7 @@
 &nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ColumnFamilyDescriptorBuilder.html#IN_MEMORY_COMPACTION_BYTES">IN_MEMORY_COMPACTION_BYTES</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ColumnFamilyDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">ColumnFamilyDescriptorBuilder</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#IN_MEMORY_FLUSH_THRESHOLD_FACTOR_DEFAULT">IN_MEMORY_FLUSH_THRESHOLD_FACTOR_DEFAULT</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#IN_MEMORY_FLUSH_MULTIPLIER">IN_MEMORY_FLUSH_MULTIPLIER</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#IN_MEMORY_FLUSH_THRESHOLD_FACTOR_KEY">IN_MEMORY_FLUSH_THRESHOLD_FACTOR_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a></dt>
 <dd>&nbsp;</dd>
@@ -60968,9 +61057,11 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html#INMEMORY_COMPACTION_POOL">INMEMORY_COMPACTION_POOL</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#inMemoryFlushInProgress">inMemoryFlushInProgress</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#inMemoryCompaction--">inMemoryCompaction()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#inMemoryCompactionInProgress">inMemoryCompactionInProgress</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html#InMemoryFlushRunnable--">InMemoryFlushRunnable()</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore.InMemoryFlushRunnable</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html#InMemoryCompactionRunnable--">InMemoryCompactionRunnable()</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore.InMemoryCompactionRunnable</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#inmemoryFlushSize">inmemoryFlushSize</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a></dt>
 <dd>&nbsp;</dd>
@@ -61277,11 +61368,11 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/CacheStats.html#intermediateIndexMissCount">intermediateIndexMissCount</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/CacheStats.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheStats</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd(Cell, boolean, MemStoreSizing)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#internalAdd-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd(MutableSegment, Cell, boolean, MemStoreSizing)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd(Cell, boolean, MemStoreSizing)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">CompositeImmutableSegment</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">internalAdd(Cell, boolean, MemStoreSizing, boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">CompositeImmutableSegment</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd(Cell, boolean, MemStoreSizing)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">internalAdd(Cell, boolean, MemStoreSizing, boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.html#internalBalancer">internalBalancer</a></span> - Variable in class org.apache.hadoop.hbase.rsgroup.<a href="org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.html" title="class in org.apache.hadoop.hbase.rsgroup">RSGroupBasedLoadBalancer</a></dt>
 <dd>&nbsp;</dd>
@@ -69944,6 +70035,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.ImplData.html#m_regionServer">m_regionServer</a></span> - Variable in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RegionListTmpl.ImplData</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html#m_regionServer">m_regionServer</a></span> - Variable in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#m_regionServer">m_regionServer</a></span> - Variable in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl.ImplData</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#m_serverManager">m_serverManager</a></span> - Variable in class org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl.ImplData</a></dt>
@@ -70455,6 +70548,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.html#makeImplData--">makeImplData()</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RegionListTmpl</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#makeImplData--">makeImplData()</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#makeImplData--">makeImplData()</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.html#makeImplData--">makeImplData()</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ServerMetricsTmpl</a></dt>
@@ -70500,6 +70595,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.html#makeRenderer-org.apache.hadoop.hbase.regionserver.HRegionServer-java.util.List-">makeRenderer(HRegionServer, List&lt;RegionInfo&gt;)</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RegionListTmpl</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#makeRenderer-org.apache.hadoop.hbase.regionserver.HRegionServer-">makeRenderer(HRegionServer)</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#makeRenderer-org.apache.hadoop.hbase.regionserver.HRegionServer-">makeRenderer(HRegionServer)</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.html#makeRenderer-org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapper-org.apache.hadoop.hbase.ipc.MetricsHBaseServerWrapper-">makeRenderer(MetricsRegionServerWrapper, MetricsHBaseServerWrapper)</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ServerMetricsTmpl</a></dt>
@@ -72198,7 +72295,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.AbstractRSRemoteCall.html#maxWaitTime">maxWaitTime</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.AbstractRSRemoteCall.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher.AbstractRSRemoteCall</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator(Cell, boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator(MutableSegment, Cell, boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></dt>
 <dd>
 <div class="block">If the segment has a memory allocator the cell is being cloned to this space, and returned;
  Otherwise the given cell is returned
@@ -76675,6 +76772,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/ScannerContext.html#newBuilder-boolean-">newBuilder(boolean)</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#newBuilder--">newBuilder()</a></span> - Static method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#newBuilder--">newBuilder()</a></span> - Static method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#newBuilder-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">newBuilder(ReplicationPeerConfig)</a></span> - Static method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a></dt>
@@ -81217,6 +81316,10 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplaySyncReplicationWALCallable.html#peerId">peerId</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplaySyncReplicationWALCallable.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplaySyncReplicationWALCallable</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#peerId">peerId</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#peerId">peerId</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/SerialReplicationChecker.html#peerId">peerId</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/SerialReplicationChecker.html" title="class in org.apache.hadoop.hbase.replication.regionserver">SerialReplicationChecker</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationEndpoint.Context.html#peerId">peerId</a></span> - Variable in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationEndpoint.Context.html" title="class in org.apache.hadoop.hbase.replication">ReplicationEndpoint.Context</a></dt>
@@ -81635,6 +81738,8 @@ service.</div>
 <dd>
 <div class="block">Fetch one Procedure from the queue</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#poll-long-">poll(long)</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceWALReader</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/CallQueue.html#poll--">poll()</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/CallQueue.html" title="class in org.apache.hadoop.hbase.thrift">CallQueue</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/CallQueue.html#poll-long-java.util.concurrent.TimeUnit-">poll(long, TimeUnit)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/CallQueue.html" title="class in org.apache.hadoop.hbase.thrift">CallQueue</a></dt>
@@ -82925,6 +83030,14 @@ service.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postUnassign-org.apache.hadoop.hbase.client.RegionInfo-boolean-">postUnassign(RegionInfo, boolean)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterCoprocessorHost.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#postUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-">postUpdate(MutableSegment)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></dt>
+<dd>
+<div class="block">Issue any post update synchronization and tests</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#postUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-">postUpdate(MutableSegment)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#postUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-">postUpdate(MutableSegment)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/DefaultMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">DefaultMemStore</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/MasterObserver.html#postUpdateReplicationPeerConfig-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">postUpdateReplicationPeerConfig(ObserverContext&lt;MasterCoprocessorEnvironment&gt;, String, ReplicationPeerConfig)</a></span> - Method in interface org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/MasterObserver.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterObserver</a></dt>
 <dd>
 <div class="block">Called after update peerConfig for the specified peer</div>
@@ -84665,6 +84778,18 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/AccessController.html#preUnassign-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.client.RegionInfo-boolean-">preUnassign(ObserverContext&lt;MasterCoprocessorEnvironment&gt;, RegionInfo, boolean)</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/AccessController.html" title="class in org.apache.hadoop.hbase.security.access">AccessController</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">preUpdate(MutableSegment, Cell, MemStoreSizing)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></dt>
+<dd>
+<div class="block">Issue any synchronization and test needed before applying the update</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.

<TRUNCATED>

[38/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html
index 23ce8b2..558dc0a 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html
@@ -813,7 +813,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>queueHasRunnables</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.161">queueHasRunnables</a>()</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.168">queueHasRunnables</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractProcedureScheduler.html#queueHasRunnables--">AbstractProcedureScheduler</a></code></span></div>
 <div class="block">Returns true if there are procedures available to process.
  NOTE: this method is called with the sched lock held.</div>
@@ -831,7 +831,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>dequeue</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.167">dequeue</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.174">dequeue</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractProcedureScheduler.html#dequeue--">AbstractProcedureScheduler</a></code></span></div>
 <div class="block">Fetch one Procedure from the queue
  NOTE: this method is called with the sched lock held.</div>
@@ -849,7 +849,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>doPoll</h4>
-<pre>private&nbsp;&lt;T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;&gt;&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.185">doPoll</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a>&lt;T&gt;&nbsp;fairq)</pre>
+<pre>private&nbsp;&lt;T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;&gt;&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.192">doPoll</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a>&lt;T&gt;&nbsp;fairq)</pre>
 </li>
 </ul>
 <a name="getLocks--">
@@ -858,7 +858,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>getLocks</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.220">getLocks</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.227">getLocks</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureScheduler.html#getLocks--">ProcedureScheduler</a></code></span></div>
 <div class="block">List lock queues.</div>
 <dl>
@@ -873,7 +873,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>getLockResource</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.230">getLockResource</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockedResourceType</a>&nbsp;resourceType,
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResource.html" title="class in org.apache.hadoop.hbase.procedure2">LockedResource</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.237">getLockResource</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockedResourceType</a>&nbsp;resourceType,
                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;resourceName)</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -887,7 +887,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>clear</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.240">clear</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.247">clear</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureScheduler.html#clear--">ProcedureScheduler</a></code></span></div>
 <div class="block">Clear current state of scheduler such that it is equivalent to newly created scheduler.
  Used for testing failure and recovery. To emulate server crash/restart,
@@ -900,7 +900,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>clearQueue</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.250">clearQueue</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.257">clearQueue</a>()</pre>
 </li>
 </ul>
 <a name="clear-org.apache.hadoop.hbase.master.procedure.Queue-org.apache.hadoop.hbase.master.procedure.FairQueue-org.apache.hadoop.hbase.util.AvlUtil.AvlKeyComparator-">
@@ -911,7 +911,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>clear</h4>
-<pre>private&nbsp;&lt;T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;,TNode extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">Queue</a>&lt;T&gt;&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.268">clear</a>(TNode&nbsp;treeMap,
+<pre>private&nbsp;&lt;T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;,TNode extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">Queue</a>&lt;T&gt;&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.275">clear</a>(TNode&nbsp;treeMap,
                                                                     <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a>&lt;T&gt;&nbsp;fairq,
                                                                     <a href="../../../../../../org/apache/hadoop/hbase/util/AvlUtil.AvlKeyComparator.html" title="interface in org.apache.hadoop.hbase.util">AvlUtil.AvlKeyComparator</a>&lt;TNode&gt;&nbsp;comparator)</pre>
 </li>
@@ -922,7 +922,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>queueSize</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.277">queueSize</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">Queue</a>&lt;?&gt;&nbsp;head)</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.284">queueSize</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">Queue</a>&lt;?&gt;&nbsp;head)</pre>
 </li>
 </ul>
 <a name="queueSize--">
@@ -931,7 +931,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>queueSize</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.287">queueSize</a>()</pre>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.294">queueSize</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractProcedureScheduler.html#queueSize--">AbstractProcedureScheduler</a></code></span></div>
 <div class="block">Returns the number of elements in this queue.
  NOTE: this method is called with the sched lock held.</div>
@@ -949,7 +949,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>completionCleanup</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.299">completionCleanup</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.306">completionCleanup</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureScheduler.html#completionCleanup-org.apache.hadoop.hbase.procedure2.Procedure-">ProcedureScheduler</a></code></span></div>
 <div class="block">The procedure in execution completed.
  This can be implemented to perform cleanups.</div>
@@ -965,7 +965,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>addToRunQueue</h4>
-<pre>private static&nbsp;&lt;T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.330">addToRunQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a>&lt;T&gt;&nbsp;fairq,
+<pre>private static&nbsp;&lt;T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.337">addToRunQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a>&lt;T&gt;&nbsp;fairq,
                                                             <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">Queue</a>&lt;T&gt;&nbsp;queue)</pre>
 </li>
 </ul>
@@ -975,7 +975,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>removeFromRunQueue</h4>
-<pre>private static&nbsp;&lt;T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.336">removeFromRunQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a>&lt;T&gt;&nbsp;fairq,
+<pre>private static&nbsp;&lt;T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.343">removeFromRunQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/FairQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">FairQueue</a>&lt;T&gt;&nbsp;fairq,
                                                                  <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">Queue</a>&lt;T&gt;&nbsp;queue)</pre>
 </li>
 </ul>
@@ -985,7 +985,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableQueue</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">TableQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.346">getTableQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">TableQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.353">getTableQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 <a name="removeTableQueue-org.apache.hadoop.hbase.TableName-">
@@ -994,7 +994,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>removeTableQueue</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.356">removeTableQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.363">removeTableQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 <a name="isTableProcedure-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -1003,7 +1003,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>isTableProcedure</h4>
-<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.361">isTableProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;proc)</pre>
+<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.368">isTableProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;proc)</pre>
 </li>
 </ul>
 <a name="getTableName-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -1012,7 +1012,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableName</h4>
-<pre>private static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.365">getTableName</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;proc)</pre>
+<pre>private static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.372">getTableName</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;proc)</pre>
 </li>
 </ul>
 <a name="getServerQueue-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.master.procedure.ServerProcedureInterface-">
@@ -1021,7 +1021,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerQueue</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.372">getServerQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.379">getServerQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                                    <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">ServerProcedureInterface</a>&nbsp;proc)</pre>
 </li>
 </ul>
@@ -1031,7 +1031,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>removeServerQueue</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.392">removeServerQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.399">removeServerQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 </li>
 </ul>
 <a name="tryCleanupServerQueue-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -1040,7 +1040,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>tryCleanupServerQueue</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.399">tryCleanupServerQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.406">tryCleanupServerQueue</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                                    <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;proc)</pre>
 </li>
 </ul>
@@ -1050,7 +1050,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>getBucketIndex</h4>
-<pre>private static&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.418">getBucketIndex</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;buckets,
+<pre>private static&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.425">getBucketIndex</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;buckets,
                                   int&nbsp;hashCode)</pre>
 </li>
 </ul>
@@ -1060,7 +1060,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>isServerProcedure</h4>
-<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.422">isServerProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;proc)</pre>
+<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.429">isServerProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;proc)</pre>
 </li>
 </ul>
 <a name="getServerName-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -1069,7 +1069,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerName</h4>
-<pre>private static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.426">getServerName</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;proc)</pre>
+<pre>private static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.433">getServerName</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;proc)</pre>
 </li>
 </ul>
 <a name="getPeerQueue-java.lang.String-">
@@ -1078,7 +1078,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>getPeerQueue</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">PeerQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.433">getPeerQueue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">PeerQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.440">getPeerQueue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</pre>
 </li>
 </ul>
 <a name="removePeerQueue-java.lang.String-">
@@ -1087,7 +1087,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>removePeerQueue</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.443">removePeerQueue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.450">removePeerQueue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</pre>
 </li>
 </ul>
 <a name="tryCleanupPeerQueue-java.lang.String-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -1096,7 +1096,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>tryCleanupPeerQueue</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.448">tryCleanupPeerQueue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.455">tryCleanupPeerQueue</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
                                  <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure)</pre>
 </li>
 </ul>
@@ -1106,7 +1106,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>isPeerProcedure</h4>
-<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.466">isPeerProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;proc)</pre>
+<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.473">isPeerProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;proc)</pre>
 </li>
 </ul>
 <a name="getPeerId-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -1115,7 +1115,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>getPeerId</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.470">getPeerId</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;proc)</pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.477">getPeerId</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;proc)</pre>
 </li>
 </ul>
 <a name="getMetaQueue--">
@@ -1124,7 +1124,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaQueue</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MetaQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.477">getMetaQueue</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">MetaQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.484">getMetaQueue</a>()</pre>
 </li>
 </ul>
 <a name="isMetaProcedure-org.apache.hadoop.hbase.procedure2.Procedure-">
@@ -1133,7 +1133,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>isMetaProcedure</h4>
-<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.487">isMetaProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;proc)</pre>
+<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.494">isMetaProcedure</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;proc)</pre>
 </li>
 </ul>
 <a name="logLockedResource-org.apache.hadoop.hbase.procedure2.LockedResourceType-java.lang.String-">
@@ -1142,7 +1142,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>logLockedResource</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.496">logLockedResource</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockedResourceType</a>&nbsp;resourceType,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.503">logLockedResource</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockedResourceType</a>&nbsp;resourceType,
                                <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;resourceName)</pre>
 <div class="block">Get lock info for a resource of specified type and name and log details</div>
 </li>
@@ -1153,7 +1153,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>waitTableExclusiveLock</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.521">waitTableExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.528">waitTableExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
                                       <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table)</pre>
 <div class="block">Suspend the procedure if the specified table is already locked.
  Other operations in the table-queue will be executed after the lock is released.</div>
@@ -1172,7 +1172,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>wakeTableExclusiveLock</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.550">wakeTableExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.557">wakeTableExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
                                    <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table)</pre>
 <div class="block">Wake the procedures waiting for the specified table</div>
 <dl>
@@ -1188,7 +1188,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>waitTableSharedLock</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.578">waitTableSharedLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.585">waitTableSharedLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
                                    <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table)</pre>
 <div class="block">Suspend the procedure if the specified table is already locked.
  other "read" operations in the table-queue may be executed concurrently,</div>
@@ -1207,7 +1207,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>waitTableQueueSharedLock</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">TableQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.582">waitTableQueueSharedLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableQueue.html" title="class in org.apache.hadoop.hbase.master.procedure">TableQueue</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.589">waitTableQueueSharedLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
                                             <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table)</pre>
 </li>
 </ul>
@@ -1217,7 +1217,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>wakeTableSharedLock</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.609">wakeTableSharedLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.616">wakeTableSharedLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
                                 <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table)</pre>
 <div class="block">Wake the procedures waiting for the specified table</div>
 <dl>
@@ -1233,7 +1233,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>markTableAsDeleted</h4>
-<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.638">markTableAsDeleted</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
+<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.645">markTableAsDeleted</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                            <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure)</pre>
 <div class="block">Tries to remove the queue and the table-lock of the specified table.
  If there are new operations pending (e.g. a new create),
@@ -1254,7 +1254,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>waitRegion</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.670">waitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.677">waitRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
                           <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</pre>
 <div class="block">Suspend the procedure if the specified region is already locked.</div>
 <dl>
@@ -1272,7 +1272,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>waitRegions</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.681">waitRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.688">waitRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
                            <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                            <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>...&nbsp;regionInfo)</pre>
 <div class="block">Suspend the procedure if the specified set of regions are already locked.</div>
@@ -1292,7 +1292,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>wakeRegion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.729">wakeRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.736">wakeRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
                        <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</pre>
 <div class="block">Wake the procedures waiting for the specified region</div>
 <dl>
@@ -1308,7 +1308,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>wakeRegions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.738">wakeRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.745">wakeRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
                         <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                         <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>...&nbsp;regionInfo)</pre>
 <div class="block">Wake the procedures waiting for the specified regions</div>
@@ -1325,7 +1325,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>waitNamespaceExclusiveLock</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.785">waitNamespaceExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.792">waitNamespaceExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
                                           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace)</pre>
 <div class="block">Suspend the procedure if the specified namespace is already locked.</div>
 <dl>
@@ -1345,7 +1345,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>wakeNamespaceExclusiveLock</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.816">wakeNamespaceExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.823">wakeNamespaceExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace)</pre>
 <div class="block">Wake the procedures waiting for the specified namespace</div>
 <dl>
@@ -1363,7 +1363,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>waitServerExclusiveLock</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.845">waitServerExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.852">waitServerExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
                                        <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 <div class="block">Try to acquire the exclusive lock on the specified server.</div>
 <dl>
@@ -1383,7 +1383,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>wakeServerExclusiveLock</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.870">wakeServerExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.877">wakeServerExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
                                     <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 <div class="block">Wake the procedures waiting for the specified server</div>
 <dl>
@@ -1401,7 +1401,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>waitPeerExclusiveLock</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.895">waitPeerExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.902">waitPeerExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</pre>
 <div class="block">Try to acquire the exclusive lock on the specified peer.</div>
 <dl>
@@ -1421,7 +1421,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <ul class="blockList">
 <li class="blockList">
 <h4>wakePeerExclusiveLock</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.917">wakePeerExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.924">wakePeerExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure,
                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</pre>
 <div class="block">Wake the procedures waiting for the specified peer</div>
 <dl>
@@ -1440,7 +1440,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/procedure2/AbstractPr
 <li class="blockList">
 <h4>waitMetaExclusiveLock</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.942">waitMetaExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure)</pre>
+public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.949">waitMetaExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">only used for <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
              <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
 <div class="block">Try to acquire the exclusive lock on meta.</div>
@@ -1461,7 +1461,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/h
 <li class="blockList">
 <h4>wakeMetaExclusiveLock</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.966">wakeMetaExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure)</pre>
+public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.973">wakeMetaExclusiveLock</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&lt;?&gt;&nbsp;procedure)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">only used for <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
              <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
 <div class="block">Wake the procedures waiting for meta.</div>
@@ -1479,7 +1479,7 @@ public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockListLast">
 <li class="blockList">
 <h4>dumpLocks</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.983">dumpLocks</a>()
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#line.990">dumpLocks</a>()
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">For debugging. Expensive.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
index e392df8..98b41d1 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -216,8 +216,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TableProcedureInterface.TableOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ServerProcedureInterface.ServerOperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TableProcedureInterface.TableOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">PeerProcedureInterface.PeerOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface.MetaOperationType</span></a></li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
index 3e1ea7f..9eb46aa 100644
--- a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
@@ -125,8 +125,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.TaskFilter.TaskType.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">TaskMonitor.TaskFilter.TaskType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.State.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">MonitoredTask.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.TaskFilter.TaskType.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">TaskMonitor.TaskFilter.TaskType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/package-tree.html b/devapidocs/org/apache/hadoop/hbase/package-tree.html
index e6e64dd..9dc7511 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -437,19 +437,19 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MemoryCompactionPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Cell.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Cell.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilderType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Size.Unit.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Size.Unit</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeyValue.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.OperationStatusCode.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HConstants.OperationStatusCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterMetrics.Option</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeepDeletedCells</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompatibilitySingletonFactory.SingletonStorage.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompatibilitySingletonFactory.SingletonStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Coprocessor.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterMetrics.Option</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Size.Unit.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Size.Unit</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeyValue.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MemoryCompactionPolicy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HealthChecker.HealthCheckerExitStatus</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompatibilitySingletonFactory.SingletonStorage.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompatibilitySingletonFactory.SingletonStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Cell.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Cell.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeepDeletedCells</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index a13f09f..1532771 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -219,11 +219,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Procedure.LockState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockedResourceType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">RootProcedureState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Procedure.LockState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockedResourceType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
index 8c5d85e..7798ca4 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -229,13 +229,13 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceViolationPolicy.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceViolationPolicy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottleType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottlingException.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceViolationPolicy.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceViolationPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/RpcThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">RpcThrottlingException.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottleType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
 </ul>
 </li>
 </ul>


[35/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html b/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html
index 613e11e..4fe07c1 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -157,7 +157,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore.InMemoryFlushRunnable</a></span></code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore.InMemoryCompactionRunnable</a></span></code>
 <div class="block">The in-memory-flusher thread performs the flush asynchronously.</div>
 </td>
 </tr>
@@ -201,8 +201,8 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#DEEP_OVERHEAD">DEEP_OVERHEAD</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private static double</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#IN_MEMORY_FLUSH_THRESHOLD_FACTOR_DEFAULT">IN_MEMORY_FLUSH_THRESHOLD_FACTOR_DEFAULT</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>private static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#IN_MEMORY_FLUSH_MULTIPLIER">IN_MEMORY_FLUSH_MULTIPLIER</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
@@ -214,7 +214,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#inMemoryFlushInProgress">inMemoryFlushInProgress</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#inMemoryCompactionInProgress">inMemoryCompactionInProgress</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private long</code></td>
@@ -246,7 +246,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#active">active</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#FIXED_OVERHEAD">FIXED_OVERHEAD</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#snapshot">snapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#snapshotId">snapshotId</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#FIXED_OVERHEAD">FIXED_OVERHEAD</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#snapshot">snapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#snapshotId">snapshotId</a></code></li>
 </ul>
 </li>
 </ul>
@@ -284,8 +284,10 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr id="i0" class="altColor">
-<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#checkActiveSize--">checkActiveSize</a></span>()</code>
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#checkAndAddToActiveSize-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">checkAndAddToActiveSize</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive,
+                       <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+                       <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>
 <div class="block">Check whether anything need to be done based on the current active set size.</div>
 </td>
 </tr>
@@ -311,127 +313,157 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#flushInMemory--">flushInMemory</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i6" class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#flushInMemory-org.apache.hadoop.hbase.regionserver.MutableSegment-">flushInMemory</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive)</code>&nbsp;</td>
+</tr>
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#getFamilyName--">getFamilyName</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>private byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#getFamilyNameInBytes--">getFamilyNameInBytes</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#getFlushableSize--">getFlushableSize</a></span>()</code>
 <div class="block">Flush will first clear out the data in snapshot if any (It will take a second flush
  invocation to clear the current Cell set).</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#getImmutableSegments--">getImmutableSegments</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#getIndexType--">getIndexType</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>(package private) long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#getInmemoryFlushSize--">getInmemoryFlushSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#getLastSegment--">getLastSegment</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#getNextRow-org.apache.hadoop.hbase.Cell-">getNextRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#getPool--">getPool</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#getRegionServices--">getRegionServices</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#getScanners-long-">getScanners</a></span>(long&nbsp;readPt)</code>&nbsp;</td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#getSegments--">getSegments</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#getSmallestReadPoint--">getSmallestReadPoint</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#getStore--">getStore</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#hasImmutableSegments--">hasImmutableSegments</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>protected long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#heapSize--">heapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#initInmemoryFlushSize-org.apache.hadoop.conf.Configuration-">initInmemoryFlushSize</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i24" class="altColor">
+<td class="colFirst"><code>(package private) void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#inMemoryCompaction--">inMemoryCompaction</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>(package private) boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#isMemStoreFlushingInMemory--">isMemStoreFlushingInMemory</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#isSloppy--">isSloppy</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>protected long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#keySize--">keySize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i28" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#postUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-">postUpdate</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive)</code>
+<div class="block">Issue any post update synchronization and tests</div>
+</td>
+</tr>
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#preFlushSeqIDEstimation--">preFlushSeqIDEstimation</a></span>()</code>
 <div class="block">This method is called before the flush is executed.</div>
 </td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i30" class="altColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">preUpdate</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+         <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>
+<div class="block">Issue any synchronization and test needed before applying the update
+ For compacting memstore this means checking the update can increase the size without
+ overflow</div>
+</td>
+</tr>
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#pushActiveToPipeline-org.apache.hadoop.hbase.regionserver.MutableSegment-">pushActiveToPipeline</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;active)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#pushActiveToPipeline-org.apache.hadoop.hbase.regionserver.MutableSegment-">pushActiveToPipeline</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive)</code>&nbsp;</td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i32" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#pushPipelineToSnapshot--">pushPipelineToSnapshot</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#pushTailToSnapshot--">pushTailToSnapshot</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#pushToSnapshot-java.util.List-">pushToSnapshot</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt;&nbsp;segments)</code>&nbsp;</td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#setCompositeSnapshot-boolean-">setCompositeSnapshot</a></span>(boolean&nbsp;useCompositeSnapshot)</code>&nbsp;</td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i36" class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#setIndexType-org.apache.hadoop.hbase.regionserver.CompactingMemStore.IndexType-">setIndexType</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a>&nbsp;type)</code>&nbsp;</td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i37" class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#shouldFlushInMemory--">shouldFlushInMemory</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#shouldFlushInMemory-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">shouldFlushInMemory</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive,
+                   <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i38" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#size--">size</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i39" class="rowColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#sizeAddedPreOperation--">sizeAddedPreOperation</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i40" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#snapshot--">snapshot</a></span>()</code>
 <div class="block">Push the current active memstore segment into the pipeline
@@ -439,14 +471,14 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
  Snapshot must be cleared by call to <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#clearSnapshot-long-"><code>AbstractMemStore.clearSnapshot(long)</code></a>.</div>
 </td>
 </tr>
-<tr id="i36" class="altColor">
+<tr id="i41" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#startReplayingFromWAL--">startReplayingFromWAL</a></span>()</code>
 <div class="block">This message intends to inform the MemStore that next coming updates
  are going to be part of the replaying edits from WAL</div>
 </td>
 </tr>
-<tr id="i37" class="rowColor">
+<tr id="i42" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#stopCompaction--">stopCompaction</a></span>()</code>
 <div class="block">The request to cancel the compaction asynchronous task (caused by in-memory flush)
@@ -454,20 +486,20 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
  Non-blocking request</div>
 </td>
 </tr>
-<tr id="i38" class="altColor">
+<tr id="i43" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#stopReplayingFromWAL--">stopReplayingFromWAL</a></span>()</code>
 <div class="block">This message intends to inform the MemStore that the replaying edits from WAL
  are done</div>
 </td>
 </tr>
-<tr id="i39" class="rowColor">
+<tr id="i44" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#swapCompactedSegments-org.apache.hadoop.hbase.regionserver.VersionedSegmentsList-org.apache.hadoop.hbase.regionserver.ImmutableSegment-boolean-">swapCompactedSegments</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;versionedList,
                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;result,
                      boolean&nbsp;merge)</code>&nbsp;</td>
 </tr>
-<tr id="i40" class="altColor">
+<tr id="i45" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#updateLowestUnflushedSequenceIdInWAL-boolean-">updateLowestUnflushedSequenceIdInWAL</a></span>(boolean&nbsp;onlyIfGreater)</code>
 <div class="block">Updates the wal with the lowest sequence id (oldest entry) that is still in memory</div>
@@ -537,16 +569,16 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 </dl>
 </li>
 </ul>
-<a name="IN_MEMORY_FLUSH_THRESHOLD_FACTOR_DEFAULT">
+<a name="IN_MEMORY_FLUSH_MULTIPLIER">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>IN_MEMORY_FLUSH_THRESHOLD_FACTOR_DEFAULT</h4>
-<pre>private static final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.65">IN_MEMORY_FLUSH_THRESHOLD_FACTOR_DEFAULT</a></pre>
+<h4>IN_MEMORY_FLUSH_MULTIPLIER</h4>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.65">IN_MEMORY_FLUSH_MULTIPLIER</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.CompactingMemStore.IN_MEMORY_FLUSH_THRESHOLD_FACTOR_DEFAULT">Constant Field Values</a></dd>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.CompactingMemStore.IN_MEMORY_FLUSH_MULTIPLIER">Constant Field Values</a></dd>
 </dl>
 </li>
 </ul>
@@ -604,13 +636,13 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.73">inmemoryFlushSize</a></pre>
 </li>
 </ul>
-<a name="inMemoryFlushInProgress">
+<a name="inMemoryCompactionInProgress">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>inMemoryFlushInProgress</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.74">inMemoryFlushInProgress</a></pre>
+<h4>inMemoryCompactionInProgress</h4>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.74">inMemoryCompactionInProgress</a></pre>
 </li>
 </ul>
 <a name="inWalReplay">
@@ -721,7 +753,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.157">size</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.160">size</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Total memory occupied by this MemStore. This won't include any size occupied by the
@@ -737,7 +769,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>preFlushSeqIDEstimation</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.172">preFlushSeqIDEstimation</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.175">preFlushSeqIDEstimation</a>()</pre>
 <div class="block">This method is called before the flush is executed.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -752,7 +784,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>isSloppy</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.184">isSloppy</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.187">isSloppy</a>()</pre>
 </li>
 </ul>
 <a name="snapshot--">
@@ -761,7 +793,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.196">snapshot</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.199">snapshot</a>()</pre>
 <div class="block">Push the current active memstore segment into the pipeline
  and create a snapshot of the tail of current compaction pipeline
  Snapshot must be cleared by call to <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#clearSnapshot-long-"><code>AbstractMemStore.clearSnapshot(long)</code></a>.
@@ -778,7 +810,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getFlushableSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.220">getFlushableSize</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.225">getFlushableSize</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#getFlushableSize--">MemStore</a></code></span></div>
 <div class="block">Flush will first clear out the data in snapshot if any (It will take a second flush
  invocation to clear the current Cell set). If snapshot is empty, current
@@ -795,7 +827,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>keySize</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.236">keySize</a>()</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.244">keySize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#keySize--">keySize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
@@ -810,7 +842,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>heapSize</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.246">heapSize</a>()</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.254">heapSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#heapSize--">heapSize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
@@ -826,7 +858,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>updateLowestUnflushedSequenceIdInWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.256">updateLowestUnflushedSequenceIdInWAL</a>(boolean&nbsp;onlyIfGreater)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.264">updateLowestUnflushedSequenceIdInWAL</a>(boolean&nbsp;onlyIfGreater)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#updateLowestUnflushedSequenceIdInWAL-boolean-">AbstractMemStore</a></code></span></div>
 <div class="block">Updates the wal with the lowest sequence id (oldest entry) that is still in memory</div>
 <dl>
@@ -844,7 +876,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>startReplayingFromWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.273">startReplayingFromWAL</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.281">startReplayingFromWAL</a>()</pre>
 <div class="block">This message intends to inform the MemStore that next coming updates
  are going to be part of the replaying edits from WAL</div>
 </li>
@@ -855,18 +887,72 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>stopReplayingFromWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.282">stopReplayingFromWAL</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.290">stopReplayingFromWAL</a>()</pre>
 <div class="block">This message intends to inform the MemStore that the replaying edits from WAL
  are done</div>
 </li>
 </ul>
+<a name="preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>preUpdate</h4>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.303">preUpdate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+                            <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+                            <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
+<div class="block">Issue any synchronization and test needed before applying the update
+ For compacting memstore this means checking the update can increase the size without
+ overflow</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">preUpdate</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>currentActive</code> - the segment to be updated</dd>
+<dd><code>cell</code> - the cell to be added</dd>
+<dd><code>memstoreSizing</code> - object to accumulate region size changes</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true iff can proceed with applying the update</dd>
+</dl>
+</li>
+</ul>
+<a name="postUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>postUpdate</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.314">postUpdate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#postUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-">AbstractMemStore</a></code></span></div>
+<div class="block">Issue any post update synchronization and tests</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#postUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-">postUpdate</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>currentActive</code> - updated segment</dd>
+</dl>
+</li>
+</ul>
+<a name="sizeAddedPreOperation--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>sizeAddedPreOperation</h4>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.318">sizeAddedPreOperation</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#sizeAddedPreOperation--">sizeAddedPreOperation</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="getSegments--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getSegments</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.289">getSegments</a>()</pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.325">getSegments</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#getSegments--">getSegments</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
@@ -881,7 +967,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>setCompositeSnapshot</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.300">setCompositeSnapshot</a>(boolean&nbsp;useCompositeSnapshot)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.336">setCompositeSnapshot</a>(boolean&nbsp;useCompositeSnapshot)</pre>
 </li>
 </ul>
 <a name="swapCompactedSegments-org.apache.hadoop.hbase.regionserver.VersionedSegmentsList-org.apache.hadoop.hbase.regionserver.ImmutableSegment-boolean-">
@@ -890,7 +976,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>swapCompactedSegments</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.304">swapCompactedSegments</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;versionedList,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.340">swapCompactedSegments</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;versionedList,
                                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;result,
                                      boolean&nbsp;merge)</pre>
 </li>
@@ -901,7 +987,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>flattenOneSegment</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.315">flattenOneSegment</a>(long&nbsp;requesterVersion,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.351">flattenOneSegment</a>(long&nbsp;requesterVersion,
                               <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -917,7 +1003,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>setIndexType</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.321">setIndexType</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a>&nbsp;type)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.357">setIndexType</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a>&nbsp;type)</pre>
 </li>
 </ul>
 <a name="getIndexType--">
@@ -926,7 +1012,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getIndexType</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.328">getIndexType</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.364">getIndexType</a>()</pre>
 </li>
 </ul>
 <a name="hasImmutableSegments--">
@@ -935,7 +1021,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>hasImmutableSegments</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.332">hasImmutableSegments</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.368">hasImmutableSegments</a>()</pre>
 </li>
 </ul>
 <a name="getImmutableSegments--">
@@ -944,7 +1030,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getImmutableSegments</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.336">getImmutableSegments</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.372">getImmutableSegments</a>()</pre>
 </li>
 </ul>
 <a name="getSmallestReadPoint--">
@@ -953,7 +1039,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getSmallestReadPoint</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.340">getSmallestReadPoint</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.376">getSmallestReadPoint</a>()</pre>
 </li>
 </ul>
 <a name="getStore--">
@@ -962,7 +1048,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getStore</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.344">getStore</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.380">getStore</a>()</pre>
 </li>
 </ul>
 <a name="getFamilyName--">
@@ -971,7 +1057,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getFamilyName</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.348">getFamilyName</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.384">getFamilyName</a>()</pre>
 </li>
 </ul>
 <a name="getScanners-long-">
@@ -980,7 +1066,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanners</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.353">getScanners</a>(long&nbsp;readPt)
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.389">getScanners</a>(long&nbsp;readPt)
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -997,23 +1083,29 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>createList</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.367">createList</a>(int&nbsp;capacity)</pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.403">createList</a>(int&nbsp;capacity)</pre>
 </li>
 </ul>
-<a name="checkActiveSize--">
+<a name="checkAndAddToActiveSize-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>checkActiveSize</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.378">checkActiveSize</a>()</pre>
+<h4>checkAndAddToActiveSize</h4>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.417">checkAndAddToActiveSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive,
+                                        <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+                                        <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 <div class="block">Check whether anything need to be done based on the current active set size.
  The method is invoked upon every addition to the active set.
  For CompactingMemStore, flush the active set to the read-only memory if it's
  size is above threshold</div>
 <dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#checkActiveSize--">checkActiveSize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>currActive</code> - intended segment to update</dd>
+<dd><code>cellToAdd</code> - cell to be added to the segment</dd>
+<dd><code>memstoreSizing</code> - object to accumulate changed size</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if the cell can be added to the</dd>
 </dl>
 </li>
 </ul>
@@ -1023,12 +1115,25 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>flushInMemory</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.397">flushInMemory</a>()
-            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
-</dl>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.441">flushInMemory</a>()</pre>
+</li>
+</ul>
+<a name="flushInMemory-org.apache.hadoop.hbase.regionserver.MutableSegment-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>flushInMemory</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.449">flushInMemory</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive)</pre>
+</li>
+</ul>
+<a name="inMemoryCompaction--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>inMemoryCompaction</h4>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.454">inMemoryCompaction</a>()</pre>
 </li>
 </ul>
 <a name="getLastSegment--">
@@ -1037,7 +1142,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastSegment</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.430">getLastSegment</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.476">getLastSegment</a>()</pre>
 </li>
 </ul>
 <a name="getFamilyNameInBytes--">
@@ -1046,7 +1151,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getFamilyNameInBytes</h4>
-<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.436">getFamilyNameInBytes</a>()</pre>
+<pre>private&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.482">getFamilyNameInBytes</a>()</pre>
 </li>
 </ul>
 <a name="getPool--">
@@ -1055,16 +1160,18 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getPool</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.440">getPool</a>()</pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.486">getPool</a>()</pre>
 </li>
 </ul>
-<a name="shouldFlushInMemory--">
+<a name="shouldFlushInMemory-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldFlushInMemory</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.445">shouldFlushInMemory</a>()</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.491">shouldFlushInMemory</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive,
+                                      <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+                                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 </li>
 </ul>
 <a name="stopCompaction--">
@@ -1073,7 +1180,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>stopCompaction</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.462">stopCompaction</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.516">stopCompaction</a>()</pre>
 <div class="block">The request to cancel the compaction asynchronous task (caused by in-memory flush)
  The compaction may still happen if the request was sent too late
  Non-blocking request</div>
@@ -1085,7 +1192,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>pushActiveToPipeline</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.468">pushActiveToPipeline</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;active)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.522">pushActiveToPipeline</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive)</pre>
 </li>
 </ul>
 <a name="pushTailToSnapshot--">
@@ -1094,7 +1201,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>pushTailToSnapshot</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.475">pushTailToSnapshot</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.529">pushTailToSnapshot</a>()</pre>
 </li>
 </ul>
 <a name="pushPipelineToSnapshot--">
@@ -1103,7 +1210,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>pushPipelineToSnapshot</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.482">pushPipelineToSnapshot</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.536">pushPipelineToSnapshot</a>()</pre>
 </li>
 </ul>
 <a name="pushToSnapshot-java.util.List-">
@@ -1112,7 +1219,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>pushToSnapshot</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.505">pushToSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt;&nbsp;segments)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.559">pushToSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&gt;&nbsp;segments)</pre>
 </li>
 </ul>
 <a name="getRegionServices--">
@@ -1121,7 +1228,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionServices</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.516">getRegionServices</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.570">getRegionServices</a>()</pre>
 </li>
 </ul>
 <a name="isMemStoreFlushingInMemory--">
@@ -1130,7 +1237,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>isMemStoreFlushingInMemory</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.541">isMemStoreFlushingInMemory</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.588">isMemStoreFlushingInMemory</a>()</pre>
 </li>
 </ul>
 <a name="getNextRow-org.apache.hadoop.hbase.Cell-">
@@ -1139,7 +1246,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getNextRow</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.550">getNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.597">getNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>cell</code> - Find the row that comes after this one.  If null, we return the
@@ -1155,7 +1262,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockList">
 <li class="blockList">
 <h4>getInmemoryFlushSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.564">getInmemoryFlushSize</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.611">getInmemoryFlushSize</a>()</pre>
 </li>
 </ul>
 <a name="debug--">
@@ -1164,7 +1271,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMem
 <ul class="blockListLast">
 <li class="blockList">
 <h4>debug</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.569">debug</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.616">debug</a>()</pre>
 </li>
 </ul>
 </li>


[28/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/ImmutableSegment.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/ImmutableSegment.html b/devapidocs/org/apache/hadoop/hbase/regionserver/ImmutableSegment.html
index aa21ddf..9a66d6a 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/ImmutableSegment.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/ImmutableSegment.html
@@ -251,7 +251,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compare-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compare</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareRows-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareRows</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#decScannerCount--">decScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#dump-org.slf4j.Logger-">dump</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellLength-org.apache.hadoop.hbase.Cell-">getCellLength</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellsCount--">getCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellSet--">getCellSet</a>, <a hr
 ef="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getDataSize--">getDataSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getHeapSize--">getHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreLAB--">getMemStoreLAB</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreSize--">getMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMinSequenceId--">getMinSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getOffHeapSize--">getOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanner-long-">getScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanners-long-">getScanners</a>, <a href=
 "../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getTimeRangeTracker--">getTimeRangeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#headSet-org.apache.hadoop.hbase.Cell-">headSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#heapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">heapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incMemStoreSize-long-long-long-">incMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incScannerCount--">incScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOffHeapSize-boolean-">indexEntryOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOnHeapSize-boolean-">indexEntryOnHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntrySize--">indexEntryS
 ize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isEmpty--">isEmpty</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isTagsPresent--">isTagsPresent</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#iterator--">iterator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#last--">last</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#offHeapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">offHeapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#
 setCellSet-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.CellSet-">setCellSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#shouldSeek-org.apache.hadoop.hbase.io.TimeRange-long-">shouldSeek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#tailSet-org.apache.hadoop.hbase.Cell-">tailSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compare-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compare</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareAndSetDataSize-long-long-">compareAndSetDataSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareRows-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareRows</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#decScannerCount--">decScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#dump-org.slf4j.Logger-">dump</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellLength-org.apache.hadoop.hbase.Cell-">getCellLength</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellsCo
 unt--">getCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellSet--">getCellSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getDataSize--">getDataSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getHeapSize--">getHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreLAB--">getMemStoreLAB</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreSize--">getMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMinSequenceId--">getMinSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getOffHeapSize--">getOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanner-long-"
 >getScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanners-long-">getScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getTimeRangeTracker--">getTimeRangeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#headSet-org.apache.hadoop.hbase.Cell-">headSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#heapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">heapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incMemStoreSize-long-long-long-">incMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incScannerCount--">incScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOffHeapSize-boolean-">indexEntryOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOnHeapSize-bool
 ean-">indexEntryOnHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntrySize--">indexEntrySize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">internalAdd</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isEmpty--">isEmpty</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isTagsPresent--">isTagsPresent</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#iterator--">iterator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#last--">last</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#offHeapSize
 Change-org.apache.hadoop.hbase.Cell-boolean-">offHeapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#setCellSet-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.CellSet-">setCellSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#sharedLock--">sharedLock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#sharedUnlock--">sharedUnlock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#shouldSeek-org.apache.hadoop.hbase.io.TimeRange-long-">shouldSeek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#tailSet-org.apache.hadoop.hbase.Cell-">tailSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">updateMetaInfo</a>, <a href="../../../../../org/apache/h
 adoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#waitForUpdates--">waitForUpdates</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html b/devapidocs/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html
index 78e1e45..2712e70 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.48">MemStoreCompactor</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.49">MemStoreCompactor</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">The ongoing MemStore Compaction manager, dispatches a solo running compaction and interrupts
  the compaction if requested. The compaction is interrupted and stopped by CompactingMemStore,
@@ -281,7 +281,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEEP_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.50">DEEP_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.51">DEEP_OVERHEAD</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -290,7 +290,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.59">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.60">LOG</a></pre>
 </li>
 </ul>
 <a name="compactingMemStore">
@@ -299,7 +299,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>compactingMemStore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.60">compactingMemStore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.61">compactingMemStore</a></pre>
 </li>
 </ul>
 <a name="versionedList">
@@ -308,7 +308,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>versionedList</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.63">versionedList</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/VersionedSegmentsList.html" title="class in org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.64">versionedList</a></pre>
 </li>
 </ul>
 <a name="isInterrupted">
@@ -317,7 +317,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isInterrupted</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.66">isInterrupted</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.67">isInterrupted</a></pre>
 </li>
 </ul>
 <a name="compactionKVMax">
@@ -326,7 +326,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>compactionKVMax</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.69">compactionKVMax</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.70">compactionKVMax</a></pre>
 </li>
 </ul>
 <a name="strategy">
@@ -335,7 +335,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>strategy</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.71">strategy</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.72">strategy</a></pre>
 </li>
 </ul>
 </li>
@@ -352,7 +352,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MemStoreCompactor</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.73">MemStoreCompactor</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a>&nbsp;compactingMemStore,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.74">MemStoreCompactor</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a>&nbsp;compactingMemStore,
                          <a href="../../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase">MemoryCompactionPolicy</a>&nbsp;compactionPolicy)
                   throws <a href="../../../../../org/apache/hadoop/hbase/exceptions/IllegalArgumentIOException.html" title="class in org.apache.hadoop.hbase.exceptions">IllegalArgumentIOException</a></pre>
 <dl>
@@ -375,7 +375,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.83">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.84">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -388,7 +388,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>start</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.92">start</a>()
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.93">start</a>()
               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">----------------------------------------------------------------------
  The request to dispatch the compaction asynchronous task.
@@ -406,7 +406,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>stop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.123">stop</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.124">stop</a>()</pre>
 <div class="block">----------------------------------------------------------------------
  The request to cancel the compaction asynchronous task
  The compaction may still happen if the request was sent too late
@@ -419,7 +419,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>resetStats</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.128">resetStats</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.129">resetStats</a>()</pre>
 </li>
 </ul>
 <a name="releaseResources--">
@@ -428,7 +428,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>releaseResources</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.136">releaseResources</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.137">releaseResources</a>()</pre>
 <div class="block">----------------------------------------------------------------------
  Reset the interruption indicator and clear the pointers in order to allow good
  garbage collection</div>
@@ -440,7 +440,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>doCompaction</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.146">doCompaction</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.147">doCompaction</a>()</pre>
 <div class="block">----------------------------------------------------------------------
  The worker thread performs the compaction asynchronously.
  The solo (per compactor) thread only reads the compaction pipeline.
@@ -453,7 +453,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createSubstitution</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.205">createSubstitution</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.206">createSubstitution</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)
                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">----------------------------------------------------------------------
  Creation of the ImmutableSegment either by merge or copy-compact of the segments of the
@@ -470,7 +470,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>initiateCompactionStrategy</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.242">initiateCompactionStrategy</a>(<a href="../../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase">MemoryCompactionPolicy</a>&nbsp;compType,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreCompactor.html#line.246">initiateCompactionStrategy</a>(<a href="../../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase">MemoryCompactionPolicy</a>&nbsp;compType,
                                 org.apache.hadoop.conf.Configuration&nbsp;configuration,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;cfName)
                          throws <a href="../../../../../org/apache/hadoop/hbase/exceptions/IllegalArgumentIOException.html" title="class in org.apache.hadoop.hbase.exceptions">IllegalArgumentIOException</a></pre>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html b/devapidocs/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html
index 92f2401..73a0d45 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html
@@ -539,7 +539,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>copyCellInto</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.137">copyCellInto</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.136">copyCellInto</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                           int&nbsp;maxAlloc)</pre>
 </li>
 </ul>
@@ -549,7 +549,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>copyToChunkCell</h4>
-<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.174">copyToChunkCell</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.172">copyToChunkCell</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                                     <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf,
                                     int&nbsp;offset,
                                     int&nbsp;len)</pre>
@@ -563,7 +563,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.202">close</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.200">close</a>()</pre>
 <div class="block">Close this instance since it won't be used any more, try to put the chunks
  back to pool</div>
 <dl>
@@ -578,7 +578,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>incScannerCount</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.216">incScannerCount</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.214">incScannerCount</a>()</pre>
 <div class="block">Called when opening a scanner on the data of this MemStoreLAB</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -592,7 +592,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>decScannerCount</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.224">decScannerCount</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.222">decScannerCount</a>()</pre>
 <div class="block">Called when closing a scanner on the data of this MemStoreLAB</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -606,7 +606,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>recycleChunks</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.231">recycleChunks</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.229">recycleChunks</a>()</pre>
 </li>
 </ul>
 <a name="tryRetireChunk-org.apache.hadoop.hbase.regionserver.Chunk-">
@@ -615,7 +615,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>tryRetireChunk</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.244">tryRetireChunk</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/Chunk.html" title="class in org.apache.hadoop.hbase.regionserver">Chunk</a>&nbsp;c)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.242">tryRetireChunk</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/Chunk.html" title="class in org.apache.hadoop.hbase.regionserver">Chunk</a>&nbsp;c)</pre>
 <div class="block">Try to retire the current chunk if it is still
  <code>c</code>. Postcondition is that curChunk.get()
  != c</div>
@@ -631,7 +631,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getOrMakeChunk</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Chunk.html" title="class in org.apache.hadoop.hbase.regionserver">Chunk</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.258">getOrMakeChunk</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Chunk.html" title="class in org.apache.hadoop.hbase.regionserver">Chunk</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.256">getOrMakeChunk</a>()</pre>
 <div class="block">Get the current chunk, or, if there is no current chunk,
  allocate a new one from the JVM.</div>
 </li>
@@ -642,7 +642,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getNewExternalChunk</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Chunk.html" title="class in org.apache.hadoop.hbase.regionserver">Chunk</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.294">getNewExternalChunk</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver">ChunkCreator.ChunkType</a>&nbsp;chunkType)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Chunk.html" title="class in org.apache.hadoop.hbase.regionserver">Chunk</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.292">getNewExternalChunk</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver">ChunkCreator.ChunkType</a>&nbsp;chunkType)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html#getNewExternalChunk-org.apache.hadoop.hbase.regionserver.ChunkCreator.ChunkType-">getNewExternalChunk</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a></code></dd>
@@ -655,7 +655,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getNewExternalChunk</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Chunk.html" title="class in org.apache.hadoop.hbase.regionserver">Chunk</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.314">getNewExternalChunk</a>(int&nbsp;size)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Chunk.html" title="class in org.apache.hadoop.hbase.regionserver">Chunk</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.312">getNewExternalChunk</a>(int&nbsp;size)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html#getNewExternalChunk-int-">getNewExternalChunk</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a></code></dd>
@@ -668,7 +668,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>isOnHeap</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.326">isOnHeap</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.324">isOnHeap</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html#isOnHeap--">isOnHeap</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a></code></dd>
@@ -681,7 +681,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>isOffHeap</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.331">isOffHeap</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.329">isOffHeap</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html#isOffHeap--">isOffHeap</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a></code></dd>
@@ -694,7 +694,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentChunk</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/Chunk.html" title="class in org.apache.hadoop.hbase.regionserver">Chunk</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.336">getCurrentChunk</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/Chunk.html" title="class in org.apache.hadoop.hbase.regionserver">Chunk</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.334">getCurrentChunk</a>()</pre>
 </li>
 </ul>
 <a name="getPooledChunks--">
@@ -703,7 +703,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getPooledChunks</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Chunk.html" title="class in org.apache.hadoop.hbase.regionserver">Chunk</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.341">getPooledChunks</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Chunk.html" title="class in org.apache.hadoop.hbase.regionserver">Chunk</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.339">getPooledChunks</a>()</pre>
 </li>
 </ul>
 <a name="getNumOfChunksReturnedToPool--">
@@ -712,7 +712,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getNumOfChunksReturnedToPool</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.352">getNumOfChunksReturnedToPool</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreLABImpl.html#line.350">getNumOfChunksReturnedToPool</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html b/devapidocs/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html
index 9942879..28d2502 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":18,"i1":18,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":18};
+var methods = {"i0":6,"i1":18,"i2":18,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":18};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],16:["t5","Default Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -175,38 +175,43 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr id="i0" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#compareAndSetDataSize-long-long-">compareAndSetDataSize</a></span>(long&nbsp;expected,
+                     long&nbsp;updated)</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
 <td class="colFirst"><code>default long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#decMemStoreSize-long-long-long-">decMemStoreSize</a></span>(long&nbsp;dataSizeDelta,
                long&nbsp;heapSizeDelta,
                long&nbsp;offHeapSizeDelta)</code>&nbsp;</td>
 </tr>
-<tr id="i1" class="rowColor">
+<tr id="i2" class="altColor">
 <td class="colFirst"><code>default long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#decMemStoreSize-org.apache.hadoop.hbase.regionserver.MemStoreSize-">decMemStoreSize</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;delta)</code>&nbsp;</td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#getDataSize--">getDataSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#getHeapSize--">getHeapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#getMemStoreSize--">getMemStoreSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#getOffHeapSize--">getOffHeapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#incMemStoreSize-long-long-long-">incMemStoreSize</a></span>(long&nbsp;dataSizeDelta,
                long&nbsp;heapSizeDelta,
                long&nbsp;offHeapSizeDelta)</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>default long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#incMemStoreSize-org.apache.hadoop.hbase.regionserver.MemStoreSize-">incMemStoreSize</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;delta)</code>&nbsp;</td>
 </tr>
@@ -248,7 +253,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>incMemStoreSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#line.89">incMemStoreSize</a>(long&nbsp;dataSizeDelta,
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#line.93">incMemStoreSize</a>(long&nbsp;dataSizeDelta,
                      long&nbsp;heapSizeDelta,
                      long&nbsp;offHeapSizeDelta)</pre>
 <dl>
@@ -263,7 +268,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>incMemStoreSize</h4>
-<pre>default&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#line.91">incMemStoreSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;delta)</pre>
+<pre>default&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#line.95">incMemStoreSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;delta)</pre>
 </li>
 </ul>
 <a name="decMemStoreSize-long-long-long-">
@@ -272,7 +277,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>decMemStoreSize</h4>
-<pre>default&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#line.98">decMemStoreSize</a>(long&nbsp;dataSizeDelta,
+<pre>default&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#line.102">decMemStoreSize</a>(long&nbsp;dataSizeDelta,
                              long&nbsp;heapSizeDelta,
                              long&nbsp;offHeapSizeDelta)</pre>
 <dl>
@@ -287,7 +292,17 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>decMemStoreSize</h4>
-<pre>default&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#line.103">decMemStoreSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;delta)</pre>
+<pre>default&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#line.107">decMemStoreSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;delta)</pre>
+</li>
+</ul>
+<a name="compareAndSetDataSize-long-long-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>compareAndSetDataSize</h4>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#line.111">compareAndSetDataSize</a>(long&nbsp;expected,
+                              long&nbsp;updated)</pre>
 </li>
 </ul>
 <a name="getDataSize--">
@@ -296,7 +311,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#line.107">getDataSize</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#line.113">getDataSize</a>()</pre>
 </li>
 </ul>
 <a name="getHeapSize--">
@@ -305,7 +320,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getHeapSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#line.108">getHeapSize</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#line.114">getHeapSize</a>()</pre>
 </li>
 </ul>
 <a name="getOffHeapSize--">
@@ -314,7 +329,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockList">
 <li class="blockList">
 <h4>getOffHeapSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#line.109">getOffHeapSize</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#line.115">getOffHeapSize</a>()</pre>
 </li>
 </ul>
 <a name="getMemStoreSize--">
@@ -323,7 +338,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/region
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getMemStoreSize</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#line.115">getMemStoreSize</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#line.121">getMemStoreSize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Use this datastructure to return all three settings, <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#getDataSize--"><code>getDataSize()</code></a>,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/MutableSegment.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/MutableSegment.html b/devapidocs/org/apache/hadoop/hbase/regionserver/MutableSegment.html
index f48fbf0..c15731a 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/MutableSegment.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/MutableSegment.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -119,7 +119,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.39">MutableSegment</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.40">MutableSegment</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></pre>
 <div class="block">A mutable segment in memstore, specifically the active segment.</div>
 </li>
@@ -144,6 +144,10 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#DEEP_OVERHEAD">DEEP_OVERHEAD</a></span></code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#flushed">flushed</a></span></code>&nbsp;</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.regionserver.Segment">
@@ -196,9 +200,10 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 </tr>
 <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/regionserver/MutableSegment.html#add-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">add</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#add-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">add</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
    boolean&nbsp;mslabUsed,
-   <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing)</code>
+   <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing,
+   boolean&nbsp;sizeAddedPreOperation)</code>
 <div class="block">Adds the given cell into the segment</div>
 </td>
 </tr>
@@ -213,10 +218,15 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#indexEntrySize--">indexEntrySize</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i3" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#setInMemoryFlushed--">setInMemoryFlushed</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#upsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">upsert</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#upsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">upsert</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
       long&nbsp;readpoint,
-      <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing)</code>&nbsp;</td>
+      <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing,
+      boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
 </table>
 <ul class="blockList">
@@ -224,7 +234,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compare-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compare</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareRows-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareRows</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#decScannerCount--">decScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#dump-org.slf4j.Logger-">dump</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellLength-org.apache.hadoop.hbase.Cell-">getCellLength</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellsCount--">getCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellSet--">getCellSet</a>, <a hr
 ef="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getDataSize--">getDataSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getHeapSize--">getHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreLAB--">getMemStoreLAB</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreSize--">getMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMinSequenceId--">getMinSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getOffHeapSize--">getOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanner-long-">getScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanners-long-">getScanners</a>, <a href=
 "../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getTimeRangeTracker--">getTimeRangeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#headSet-org.apache.hadoop.hbase.Cell-">headSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#heapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">heapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incMemStoreSize-long-long-long-">incMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incScannerCount--">incScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOffHeapSize-boolean-">indexEntryOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOnHeapSize-boolean-">indexEntryOnHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop
 .hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isEmpty--">isEmpty</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isTagsPresent--">isTagsPresent</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#iterator--">iterator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#last--">last</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#offHeapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">offHeapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#setCellSet-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.CellSet-">setCellSe
 t</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#shouldSeek-org.apache.hadoop.hbase.io.TimeRange-long-">shouldSeek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#tailSet-org.apache.hadoop.hbase.Cell-">tailSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#toString--">toString</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compare-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compare</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareAndSetDataSize-long-long-">compareAndSetDataSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareRows-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareRows</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#decScannerCount--">decScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#dump-org.slf4j.Logger-">dump</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellLength-org.apache.hadoop.hbase.Cell-">getCellLength</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellsCo
 unt--">getCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellSet--">getCellSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getDataSize--">getDataSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getHeapSize--">getHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreLAB--">getMemStoreLAB</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreSize--">getMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMinSequenceId--">getMinSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getOffHeapSize--">getOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanner-long-"
 >getScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanners-long-">getScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getTimeRangeTracker--">getTimeRangeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#headSet-org.apache.hadoop.hbase.Cell-">headSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#heapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">heapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incMemStoreSize-long-long-long-">incMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incScannerCount--">incScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOffHeapSize-boolean-">indexEntryOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOnHeapSize-bool
 ean-">indexEntryOnHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">internalAdd</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isEmpty--">isEmpty</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isTagsPresent--">isTagsPresent</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#iterator--">iterator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#last--">last</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#offHeapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">offHeapSizeChange</a>, <a href="../../../../../org/apache/hadoop/h
 base/regionserver/Segment.html#setCellSet-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.CellSet-">setCellSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#sharedLock--">sharedLock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#sharedUnlock--">sharedUnlock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#shouldSeek-org.apache.hadoop.hbase.io.TimeRange-long-">shouldSeek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#tailSet-org.apache.hadoop.hbase.Cell-">tailSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#toString--">toString</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">updateMetaInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/
 regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#waitForUpdates--">waitForUpdates</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -254,13 +264,22 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 <!--   -->
 </a>
 <h3>Field Detail</h3>
+<a name="flushed">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>flushed</h4>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.42">flushed</a></pre>
+</li>
+</ul>
 <a name="DEEP_OVERHEAD">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DEEP_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.41">DEEP_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.44">DEEP_OVERHEAD</a></pre>
 </li>
 </ul>
 </li>
@@ -277,7 +296,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MutableSegment</h4>
-<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.45">MutableSegment</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSet,
+<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.50">MutableSegment</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;cellSet,
                          <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator,
                          <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>&nbsp;memStoreLAB)</pre>
 </li>
@@ -290,15 +309,16 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="add-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
+<a name="add-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.55">add</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.60">add</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                 boolean&nbsp;mslabUsed,
-                <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing)</pre>
+                <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing,
+                boolean&nbsp;sizeAddedPreOperation)</pre>
 <div class="block">Adds the given cell into the segment</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -307,15 +327,25 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 </dl>
 </li>
 </ul>
-<a name="upsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
+<a name="upsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>upsert</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.59">upsert</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.65">upsert</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                    long&nbsp;readpoint,
-                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing)</pre>
+                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing,
+                   boolean&nbsp;sizeAddedPreOperation)</pre>
+</li>
+</ul>
+<a name="setInMemoryFlushed--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setInMemoryFlushed</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.115">setInMemoryFlushed</a>()</pre>
 </li>
 </ul>
 <a name="first--">
@@ -324,7 +354,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>first</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.113">first</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.124">first</a>()</pre>
 <div class="block">Returns the first cell in the segment</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -338,7 +368,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.htm
 <ul class="blockListLast">
 <li class="blockList">
 <h4>indexEntrySize</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.117">indexEntrySize</a>()</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MutableSegment.html#line.128">indexEntrySize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntrySize--">indexEntrySize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html b/devapidocs/org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html
index 41011f5..92bcfcd 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -204,28 +204,33 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr id="i0" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html#compareAndSetDataSize-long-long-">compareAndSetDataSize</a></span>(long&nbsp;expected,
+                     long&nbsp;updated)</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html#getDataSize--">getDataSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i1" class="rowColor">
+<tr id="i2" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html#getHeapSize--">getHeapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html#getMemStoreSize--">getMemStoreSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html#getOffHeapSize--">getOffHeapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html#incMemStoreSize-long-long-long-">incMemStoreSize</a></span>(long&nbsp;dataSizeDelta,
                long&nbsp;heapSizeDelta,
                long&nbsp;offHeapSizeDelta)</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html#toString--">toString</a></span>()</code>&nbsp;</td>
 </tr>
@@ -363,13 +368,27 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 </dl>
 </li>
 </ul>
+<a name="compareAndSetDataSize-long-long-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>compareAndSetDataSize</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html#line.62">compareAndSetDataSize</a>(long&nbsp;expected,
+                                     long&nbsp;updated)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#compareAndSetDataSize-long-long-">compareAndSetDataSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="getDataSize--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html#line.63">getDataSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html#line.71">getDataSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#getDataSize--">getDataSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a></code></dd>
@@ -382,7 +401,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getHeapSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html#line.68">getHeapSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html#line.76">getHeapSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#getHeapSize--">getHeapSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a></code></dd>
@@ -395,7 +414,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getOffHeapSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html#line.73">getOffHeapSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html#line.81">getOffHeapSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#getOffHeapSize--">getOffHeapSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a></code></dd>
@@ -408,7 +427,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html#line.78">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.html#line.86">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>


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

Posted by gi...@apache.org.
Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.


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

Branch: refs/heads/asf-site
Commit: bcb555af57f738eb6e6eafc42a4cef73667f8990
Parents: 8e541fb
Author: jenkins <bu...@apache.org>
Authored: Tue Jul 3 20:05:46 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Tue Jul 3 20:05:46 2018 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |     4 +-
 apache_hbase_reference_guide.pdf                | 19604 +++++++--------
 book.html                                       |    14 +-
 bulk-loads.html                                 |     4 +-
 checkstyle-aggregate.html                       | 21514 ++++++++---------
 checkstyle.rss                                  |    48 +-
 coc.html                                        |     4 +-
 dependencies.html                               |     4 +-
 dependency-convergence.html                     |     4 +-
 dependency-info.html                            |     4 +-
 dependency-management.html                      |     4 +-
 devapidocs/allclasses-frame.html                |     6 +
 devapidocs/allclasses-noframe.html              |     6 +
 devapidocs/constant-values.html                 |    33 +-
 devapidocs/index-all.html                       |   286 +-
 .../hadoop/hbase/backup/package-tree.html       |     6 +-
 .../org/apache/hadoop/hbase/class-use/Cell.html |   259 +-
 .../hadoop/hbase/client/package-tree.html       |    20 +-
 .../hadoop/hbase/coprocessor/package-tree.html  |     2 +-
 .../hadoop/hbase/executor/package-tree.html     |     2 +-
 .../hadoop/hbase/filter/package-tree.html       |     6 +-
 ...AsyncDFSOutputSaslHelper.DecryptHandler.html |     8 +-
 ...AsyncDFSOutputSaslHelper.EncryptHandler.html |    10 +-
 ...eBlockAsyncDFSOutputSaslHelper.PBHelper.html |     6 +-
 ...ockAsyncDFSOutputSaslHelper.SaslAdaptor.html |     8 +-
 ...putSaslHelper.SaslClientCallbackHandler.html |    10 +-
 ...FSOutputSaslHelper.SaslNegotiateHandler.html |    48 +-
 ...ncDFSOutputSaslHelper.SaslUnwrapHandler.html |    10 +-
 ...syncDFSOutputSaslHelper.SaslWrapHandler.html |    16 +-
 ...utputSaslHelper.TransparentCryptoHelper.html |     4 +-
 .../FanOutOneBlockAsyncDFSOutputSaslHelper.html |    94 +-
 ...utputSaslHelper.TransparentCryptoHelper.html |     8 +
 .../BlockCacheUtil.CachedBlocksByFile.html      |    42 +-
 .../hadoop/hbase/io/hfile/BlockCacheUtil.html   |    50 +-
 .../io/hfile/LruBlockCache.BlockBucket.html     |    28 +-
 .../io/hfile/LruBlockCache.EvictionThread.html  |    18 +-
 .../hfile/LruBlockCache.StatisticsThread.html   |     8 +-
 .../hadoop/hbase/io/hfile/LruBlockCache.html    |    80 +-
 .../hfile/bucket/BucketCache.BucketEntry.html   |    48 +-
 .../bucket/BucketCache.BucketEntryGroup.html    |    18 +-
 .../hfile/bucket/BucketCache.RAMQueueEntry.html |    20 +-
 .../BucketCache.SharedMemoryBucketEntry.html    |    20 +-
 .../bucket/BucketCache.StatisticsThread.html    |     8 +-
 .../hfile/bucket/BucketCache.WriterThread.html  |    47 +-
 .../hbase/io/hfile/bucket/BucketCache.html      |   199 +-
 .../class-use/BucketCache.BucketEntry.html      |     7 +
 .../hbase/io/hfile/class-use/BlockCache.html    |     9 +
 .../hbase/io/hfile/class-use/BlockCacheKey.html |    35 +-
 .../hbase/io/hfile/class-use/Cacheable.html     |    18 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     6 +-
 .../org/apache/hadoop/hbase/ipc/RpcServer.html  |    44 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |     2 +-
 .../org/apache/hadoop/hbase/master/HMaster.html |     2 +-
 .../master/HMasterCommandLine.LocalHMaster.html |     2 +-
 .../master/assignment/MoveRegionProcedure.html  |    22 +-
 .../hbase/master/balancer/package-tree.html     |     2 +-
 .../hadoop/hbase/master/package-tree.html       |     2 +-
 .../procedure/MasterProcedureScheduler.html     |   100 +-
 .../hbase/master/procedure/package-tree.html    |     2 +-
 .../hadoop/hbase/monitoring/package-tree.html   |     2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    16 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     6 +-
 .../hadoop/hbase/quotas/package-tree.html       |     8 +-
 .../hbase/regionserver/AbstractMemStore.html    |   250 +-
 .../regionserver/CSLMImmutableSegment.html      |     2 +-
 .../regionserver/CellArrayImmutableSegment.html |    14 +-
 .../regionserver/CellChunkImmutableSegment.html |    38 +-
 ...tingMemStore.InMemoryCompactionRunnable.html |   291 +
 ...ompactingMemStore.InMemoryFlushRunnable.html |   291 -
 .../CompactingMemStore.IndexType.html           |     4 +-
 .../hbase/regionserver/CompactingMemStore.html  |   307 +-
 .../hbase/regionserver/CompactionPipeline.html  |    60 +-
 .../regionserver/CompositeImmutableSegment.html |    36 +-
 .../hbase/regionserver/DefaultMemStore.html     |   117 +-
 .../HRegion.BatchOperation.Visitor.html         |     4 +-
 .../regionserver/HRegion.BatchOperation.html    |    78 +-
 .../regionserver/HRegion.BulkLoadListener.html  |     8 +-
 .../HRegion.FlushResult.Result.html             |    10 +-
 .../hbase/regionserver/HRegion.FlushResult.html |     8 +-
 .../HRegion.MutationBatchOperation.html         |    44 +-
 .../regionserver/HRegion.RegionScannerImpl.html |    90 +-
 .../HRegion.ReplayBatchOperation.html           |    32 +-
 .../regionserver/HRegion.RowLockContext.html    |    28 +-
 .../hbase/regionserver/HRegion.RowLockImpl.html |    16 +-
 .../hadoop/hbase/regionserver/HRegion.html      |   546 +-
 .../HRegionServer.CompactionChecker.html        |    14 +-
 .../HRegionServer.MovedRegionInfo.html          |    16 +-
 .../HRegionServer.MovedRegionsCleaner.html      |    16 +-
 .../HRegionServer.PeriodicMemStoreFlusher.html  |    12 +-
 .../hbase/regionserver/HRegionServer.html       |   677 +-
 .../hbase/regionserver/ImmutableSegment.html    |     2 +-
 .../hbase/regionserver/MemStoreCompactor.html   |    34 +-
 .../hbase/regionserver/MemStoreLABImpl.html     |    30 +-
 .../hbase/regionserver/MemStoreSizing.html      |    47 +-
 .../hbase/regionserver/MutableSegment.html      |    64 +-
 .../NonThreadSafeMemStoreSizing.html            |    39 +-
 .../regionserver/RegionServicesForStores.html   |    52 +-
 .../regionserver/ReplicationSourceService.html  |    30 +-
 .../hadoop/hbase/regionserver/Segment.html      |   290 +-
 .../regionserver/ThreadSafeMemStoreSizing.html  |    39 +-
 .../class-use/CSLMImmutableSegment.html         |     2 +-
 .../hbase/regionserver/class-use/CellSet.html   |     3 +-
 ...tingMemStore.InMemoryCompactionRunnable.html |   125 +
 ...ompactingMemStore.InMemoryFlushRunnable.html |   125 -
 .../regionserver/class-use/HRegionServer.html   |    38 +-
 .../regionserver/class-use/KeyValueScanner.html |     3 +-
 .../MemStoreCompactionStrategy.Action.html      |     5 +-
 .../regionserver/class-use/MemStoreSizing.html  |   110 +-
 .../regionserver/class-use/MutableSegment.html  |    91 +-
 .../hadoop/hbase/regionserver/package-tree.html |    18 +-
 .../regionserver/querymatcher/package-tree.html |     2 +-
 .../hbase/regionserver/wal/package-tree.html    |     2 +-
 .../hadoop/hbase/replication/package-tree.html  |     2 +-
 .../replication/regionserver/MetricsSource.html |   229 +-
 .../RecoveredReplicationSource.html             |     2 +-
 .../replication/regionserver/Replication.html   |     2 +
 .../regionserver/ReplicationLoad.html           |    41 +-
 .../ReplicationSource.LogsComparator.html       |     8 +-
 .../regionserver/ReplicationSource.html         |   223 +-
 .../ReplicationSourceInterface.html             |    86 +-
 .../regionserver/ReplicationSourceShipper.html  |    66 +-
 .../ReplicationSourceWALReader.html             |   110 +-
 ...licationStatus.ReplicationStatusBuilder.html |   507 +
 .../regionserver/ReplicationStatus.html         |   525 +
 .../regionserver/ReplicationSyncUp.html         |     4 +-
 .../SerialReplicationSourceWALReader.html       |     2 +-
 .../class-use/ReplicationSourceManager.html     |    24 +
 ...licationStatus.ReplicationStatusBuilder.html |   208 +
 .../class-use/ReplicationStatus.html            |   234 +
 .../regionserver/class-use/WALEntryBatch.html   |     8 +-
 .../replication/regionserver/package-frame.html |     2 +
 .../regionserver/package-summary.html           |     8 +
 .../replication/regionserver/package-tree.html  |     4 +-
 .../replication/regionserver/package-use.html   |    33 +
 .../hadoop/hbase/rest/model/package-tree.html   |     2 +-
 .../hbase/security/access/package-tree.html     |     2 +-
 .../hadoop/hbase/thrift/package-tree.html       |     4 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |     4 +-
 .../tmpl/regionserver/RegionListTmplImpl.html   |     4 +-
 .../ReplicationStatusTmpl.ImplData.html         |   330 +
 .../ReplicationStatusTmpl.Intf.html             |   240 +
 .../regionserver/ReplicationStatusTmpl.html     |   450 +
 .../regionserver/ReplicationStatusTmplImpl.html |   387 +
 .../ReplicationStatusTmpl.ImplData.html         |   194 +
 .../class-use/ReplicationStatusTmpl.Intf.html   |   165 +
 .../class-use/ReplicationStatusTmpl.html        |   125 +
 .../class-use/ReplicationStatusTmplImpl.html    |   125 +
 .../hbase/tmpl/regionserver/package-frame.html  |     4 +
 .../tmpl/regionserver/package-summary.html      |    28 +-
 .../hbase/tmpl/regionserver/package-tree.html   |     4 +
 .../hbase/tmpl/regionserver/package-use.html    |     6 +
 .../apache/hadoop/hbase/util/package-tree.html  |     8 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 devapidocs/overview-tree.html                   |     8 +-
 .../org/apache/hadoop/hbase/Version.html        |     6 +-
 ...AsyncDFSOutputSaslHelper.DecryptHandler.html |  1530 +-
 ...AsyncDFSOutputSaslHelper.EncryptHandler.html |  1530 +-
 ...eBlockAsyncDFSOutputSaslHelper.PBHelper.html |  1530 +-
 ...ockAsyncDFSOutputSaslHelper.SaslAdaptor.html |  1530 +-
 ...putSaslHelper.SaslClientCallbackHandler.html |  1530 +-
 ...FSOutputSaslHelper.SaslNegotiateHandler.html |  1530 +-
 ...ncDFSOutputSaslHelper.SaslUnwrapHandler.html |  1530 +-
 ...syncDFSOutputSaslHelper.SaslWrapHandler.html |  1530 +-
 ...utputSaslHelper.TransparentCryptoHelper.html |  1530 +-
 .../FanOutOneBlockAsyncDFSOutputSaslHelper.html |  1530 +-
 ...BlockCacheUtil.CachedBlockCountsPerFile.html |   301 +-
 .../BlockCacheUtil.CachedBlocksByFile.html      |   301 +-
 .../hadoop/hbase/io/hfile/BlockCacheUtil.html   |   301 +-
 .../io/hfile/LruBlockCache.BlockBucket.html     |  1569 +-
 .../io/hfile/LruBlockCache.EvictionThread.html  |  1569 +-
 .../hfile/LruBlockCache.StatisticsThread.html   |  1569 +-
 .../hadoop/hbase/io/hfile/LruBlockCache.html    |  1569 +-
 .../hfile/bucket/BucketCache.BucketEntry.html   |  2492 +-
 .../bucket/BucketCache.BucketEntryGroup.html    |  2492 +-
 .../hfile/bucket/BucketCache.RAMQueueEntry.html |  2492 +-
 .../BucketCache.SharedMemoryBucketEntry.html    |  2492 +-
 .../bucket/BucketCache.StatisticsThread.html    |  2492 +-
 .../hfile/bucket/BucketCache.WriterThread.html  |  2492 +-
 .../hbase/io/hfile/bucket/BucketCache.html      |  2492 +-
 .../RpcServer.BlockingServiceAndInterface.html  |   585 +-
 .../hadoop/hbase/ipc/RpcServer.CallCleanup.html |   585 +-
 .../org/apache/hadoop/hbase/ipc/RpcServer.html  |   585 +-
 .../master/assignment/MoveRegionProcedure.html  |   222 +-
 .../procedure/MasterProcedureScheduler.html     |  1681 +-
 .../hbase/regionserver/AbstractMemStore.html    |   509 +-
 .../regionserver/CellArrayImmutableSegment.html |   227 +-
 .../regionserver/CellChunkImmutableSegment.html |   511 +-
 ...tingMemStore.InMemoryCompactionRunnable.html |   696 +
 ...ompactingMemStore.InMemoryFlushRunnable.html |   649 -
 .../CompactingMemStore.IndexType.html           |   919 +-
 .../hbase/regionserver/CompactingMemStore.html  |   919 +-
 .../hbase/regionserver/CompactionPipeline.html  |   626 +-
 .../regionserver/CompositeImmutableSegment.html |   101 +-
 .../hbase/regionserver/DefaultMemStore.html     |   148 +-
 .../HRegion.BatchOperation.Visitor.html         | 15026 ++++++------
 .../regionserver/HRegion.BatchOperation.html    | 15026 ++++++------
 .../regionserver/HRegion.BulkLoadListener.html  | 15026 ++++++------
 .../HRegion.FlushResult.Result.html             | 15026 ++++++------
 .../hbase/regionserver/HRegion.FlushResult.html | 15026 ++++++------
 .../regionserver/HRegion.FlushResultImpl.html   | 15026 ++++++------
 .../HRegion.MutationBatchOperation.html         | 15026 ++++++------
 .../HRegion.ObservedExceptionsInBatch.html      | 15026 ++++++------
 .../HRegion.PrepareFlushResult.html             | 15026 ++++++------
 .../regionserver/HRegion.RegionScannerImpl.html | 15026 ++++++------
 .../HRegion.ReplayBatchOperation.html           | 15026 ++++++------
 .../regionserver/HRegion.RowLockContext.html    | 15026 ++++++------
 .../hbase/regionserver/HRegion.RowLockImpl.html | 15026 ++++++------
 .../hbase/regionserver/HRegion.WriteState.html  | 15026 ++++++------
 .../hadoop/hbase/regionserver/HRegion.html      | 15026 ++++++------
 .../HRegionServer.CompactionChecker.html        |  7240 +++---
 .../HRegionServer.MovedRegionInfo.html          |  7240 +++---
 .../HRegionServer.MovedRegionsCleaner.html      |  7240 +++---
 .../HRegionServer.PeriodicMemStoreFlusher.html  |  7240 +++---
 .../hbase/regionserver/HRegionServer.html       |  7240 +++---
 .../hbase/regionserver/MemStoreCompactor.html   |   474 +-
 .../hbase/regionserver/MemStoreLABImpl.html     |   476 +-
 .../hbase/regionserver/MemStoreSizing.html      |    64 +-
 .../hbase/regionserver/MutableSegment.html      |   205 +-
 .../NonThreadSafeMemStoreSizing.html            |    48 +-
 .../regionserver/RegionServicesForStores.html   |    48 +-
 .../hbase/regionserver/ReplicationService.html  |     2 +-
 .../regionserver/ReplicationSourceService.html  |    56 +-
 .../hadoop/hbase/regionserver/Segment.html      |   780 +-
 .../regionserver/ThreadSafeMemStoreSizing.html  |    44 +-
 .../replication/regionserver/MetricsSource.html |   648 +-
 .../regionserver/ReplicationLoad.html           |   192 +-
 .../ReplicationSource.LogsComparator.html       |  1296 +-
 .../regionserver/ReplicationSource.html         |  1296 +-
 .../ReplicationSourceInterface.html             |   350 +-
 .../ReplicationSourceShipper.WorkerState.html   |   488 +-
 .../regionserver/ReplicationSourceShipper.html  |   488 +-
 .../ReplicationSourceWALReader.html             |   785 +-
 ...licationStatus.ReplicationStatusBuilder.html |   207 +
 .../regionserver/ReplicationStatus.html         |   207 +
 .../tmpl/master/RegionServerListTmplImpl.html   |    48 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |   203 +-
 .../ReplicationStatusTmpl.ImplData.html         |   196 +
 .../ReplicationStatusTmpl.Intf.html             |   196 +
 .../regionserver/ReplicationStatusTmpl.html     |   196 +
 .../regionserver/ReplicationStatusTmplImpl.html |   221 +
 downloads.html                                  |     4 +-
 export_control.html                             |     4 +-
 index.html                                      |     4 +-
 integration.html                                |     4 +-
 issue-tracking.html                             |     4 +-
 license.html                                    |     4 +-
 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            |     1 +
 testdevapidocs/allclasses-noframe.html          |     1 +
 testdevapidocs/index-all.html                   |    20 +-
 ...aseCluster.MiniHBaseClusterRegionServer.html |     2 +-
 ...entOperationTimeout.DelayedRegionServer.html |     2 +-
 .../hbase/TestLocalHBaseCluster.MyHMaster.html  |     2 +-
 .../TestLocalHBaseCluster.MyHRegionServer.html  |     2 +-
 ...ovedRegionsCleaner.TestMockRegionServer.html |     2 +-
 .../hbase/class-use/HBaseClassTestRule.html     |    72 +-
 .../apache/hadoop/hbase/client/TestAdmin1.html  |    89 +-
 ...rRPCTimeout.RegionServerWithScanTimeout.html |     2 +-
 ...taCache.RegionServerWithFakeRpcServices.html |     2 +-
 .../WriteHeavyIncrementObserverTestBase.html    |    32 +-
 .../apache/hadoop/hbase/io/TestHeapSize.html    |     6 +-
 .../TestBucketCache.MockedBucketCache.html      |     2 +-
 .../hbase/io/hfile/bucket/TestBucketCache.html  |    55 +-
 .../TestBucketWriterThread.MockBucketCache.html |     2 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     2 +-
 .../master/TestGetReplicationLoad.MyMaster.html |     2 +-
 .../master/TestMasterMetrics.MyMaster.html      |     2 +-
 .../TestMetaShutdownHandler.MyRegionServer.html |     2 +-
 .../TestShutdownBackupMaster.MockHMaster.html   |     2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    12 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     2 +-
 .../hbase/regionserver/OOMERegionServer.html    |     2 +-
 ...CompactingMemStore.MyCompactingMemStore.html |     4 +-
 .../TestCompactingToCellFlatMapMemStore.html    |     8 +-
 ...onInDeadRegionServer.IgnoreYouAreDeadRS.html |     2 +-
 .../TestHStore.MyCompactingMemStore.html        |    18 +-
 ...MyCompactingMemStoreWithCustomCompactor.html |    16 +-
 .../hbase/regionserver/TestHStore.MyList.html   |    54 +-
 .../regionserver/TestHStore.MyListHook.html     |     4 +-
 ...Initializing.RegisterAndDieRegionServer.html |     2 +-
 ...egionMergeTransactionOnCluster.MyMaster.html |     2 +-
 ...egionServerReportForDuty.MyRegionServer.html |     2 +-
 ...eartbeatMessages.HeartbeatHRegionServer.html |     2 +-
 ...stShutdownWhileWALBroken.MyRegionServer.html |     2 +-
 .../TestSplitTransactionOnCluster.MyMaster.html |     2 +-
 .../hadoop/hbase/regionserver/package-tree.html |     4 +-
 .../replication/ReplicationSourceDummy.html     |     2 +-
 .../hbase/replication/TestReplicationBase.html  |     2 +-
 ...plicationKillSlaveRSWithSeparateOldWALs.html |     4 +-
 .../TestReplicationMetricsforUI.html            |   345 +
 .../replication/TestReplicationPeerConfig.html  |     4 +-
 ...stReplicationProcedureRetry.MockHMaster.html |     2 +-
 .../class-use/TestReplicationBase.html          |    14 +-
 .../class-use/TestReplicationMetricsforUI.html  |   125 +
 .../hadoop/hbase/replication/package-frame.html |     1 +
 .../hbase/replication/package-summary.html      |    58 +-
 .../hadoop/hbase/replication/package-tree.html  |     1 +
 ...icationSource.ShutdownDelayRegionServer.html |     2 +-
 ...er.FailInitializeDummyReplicationSource.html |     2 +-
 .../apache/hadoop/hbase/test/package-tree.html  |     4 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 testdevapidocs/overview-tree.html               |     1 +
 .../apache/hadoop/hbase/client/TestAdmin1.html  |  2071 +-
 .../WriteHeavyIncrementObserverTestBase.html    |   145 +-
 .../apache/hadoop/hbase/io/TestHeapSize.html    |   378 +-
 .../TestBucketCache.MockedBucketCache.html      |   497 +-
 .../hbase/io/hfile/bucket/TestBucketCache.html  |   497 +-
 ...MemStore.EnvironmentEdgeForMemstoreTest.html |     4 +-
 ...CompactingMemStore.MyCompactingMemStore.html |     4 +-
 .../regionserver/TestCompactingMemStore.html    |     4 +-
 .../TestCompactingToCellFlatMapMemStore.html    |   290 +-
 .../TestHStore.DummyStoreEngine.html            |   183 +-
 .../TestHStore.FaultyFileSystem.html            |   183 +-
 .../TestHStore.FaultyOutputStream.html          |   183 +-
 .../TestHStore.MyCompactingMemStore.html        |   183 +-
 ...MyCompactingMemStoreWithCustomCompactor.html |   183 +-
 .../hbase/regionserver/TestHStore.MyList.html   |   183 +-
 .../regionserver/TestHStore.MyListHook.html     |   183 +-
 .../TestHStore.MyMemStoreCompactor.html         |   183 +-
 .../hbase/regionserver/TestHStore.MyStore.html  |   183 +-
 .../regionserver/TestHStore.MyStoreHook.html    |   183 +-
 .../hbase/regionserver/TestHStore.MyThread.html |   183 +-
 .../hadoop/hbase/regionserver/TestHStore.html   |   183 +-
 .../TestReplicationMetricsforUI.html            |   179 +
 .../TestSyncReplicationStandbyKillRS.html       |     4 +-
 340 files changed, 193324 insertions(+), 185247 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index 689850d..47f35dd 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="20180630" />
+    <meta name="Date-Revision-yyyymmdd" content="20180703" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -601,7 +601,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: 2018-06-30</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-07-03</li>
             </p>
                 </div>
 


[26/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html b/devapidocs/org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html
index b497649..fc09302 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -202,28 +202,33 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr id="i0" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html#compareAndSetDataSize-long-long-">compareAndSetDataSize</a></span>(long&nbsp;expected,
+                     long&nbsp;updated)</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html#getDataSize--">getDataSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i1" class="rowColor">
+<tr id="i2" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html#getHeapSize--">getHeapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html#getMemStoreSize--">getMemStoreSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html#getOffHeapSize--">getOffHeapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html#incMemStoreSize-long-long-long-">incMemStoreSize</a></span>(long&nbsp;dataSizeDelta,
                long&nbsp;heapSizeDelta,
                long&nbsp;offHeapSizeDelta)</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html#toString--">toString</a></span>()</code>&nbsp;</td>
 </tr>
@@ -361,13 +366,27 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 </dl>
 </li>
 </ul>
+<a name="compareAndSetDataSize-long-long-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>compareAndSetDataSize</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html#line.61">compareAndSetDataSize</a>(long&nbsp;expected,
+                                     long&nbsp;updated)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#compareAndSetDataSize-long-long-">compareAndSetDataSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="getDataSize--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html#line.62">getDataSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html#line.66">getDataSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#getDataSize--">getDataSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a></code></dd>
@@ -380,7 +399,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getHeapSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html#line.67">getHeapSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html#line.71">getHeapSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#getHeapSize--">getHeapSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a></code></dd>
@@ -393,7 +412,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getOffHeapSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html#line.72">getOffHeapSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html#line.76">getOffHeapSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html#getOffHeapSize--">getOffHeapSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a></code></dd>
@@ -406,7 +425,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html#line.77">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html#line.81">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CSLMImmutableSegment.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CSLMImmutableSegment.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CSLMImmutableSegment.html
index e4058a7..dd90956 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CSLMImmutableSegment.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CSLMImmutableSegment.html
@@ -119,7 +119,7 @@
 <tbody>
 <tr class="altColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.html#CellArrayImmutableSegment-org.apache.hadoop.hbase.regionserver.CSLMImmutableSegment-org.apache.hadoop.hbase.regionserver.MemStoreSizing-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">CellArrayImmutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">CSLMImmutableSegment</a>&nbsp;segment,
-                         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+                         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;mss,
                          <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</code>
 <div class="block">------------------------------------------------------------------------
  C-tor to be used when new CellChunkImmutableSegment is built as a result of flattening

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CellSet.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CellSet.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CellSet.html
index 531bfad..9654ae2 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CellSet.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CellSet.html
@@ -141,9 +141,10 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">CellChunkImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#reinitializeCellSet-int-org.apache.hadoop.hbase.regionserver.KeyValueScanner-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">reinitializeCellSet</a></span>(int&nbsp;numOfCells,
+<td class="colLast"><span class="typeNameLabel">CellChunkImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#reinitializeCellSet-int-org.apache.hadoop.hbase.regionserver.KeyValueScanner-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.MemStoreSizing-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">reinitializeCellSet</a></span>(int&nbsp;numOfCells,
                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&nbsp;segmentScanner,
                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;oldCellSet,
+                   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CompactingMemStore.InMemoryCompactionRunnable.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CompactingMemStore.InMemoryCompactionRunnable.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CompactingMemStore.InMemoryCompactionRunnable.html
new file mode 100644
index 0000000..0e4a258
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CompactingMemStore.InMemoryCompactionRunnable.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.regionserver.CompactingMemStore.InMemoryCompactionRunnable (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.regionserver.CompactingMemStore.InMemoryCompactionRunnable (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/regionserver/class-use/CompactingMemStore.InMemoryCompactionRunnable.html" target="_top">Frames</a></li>
+<li><a href="CompactingMemStore.InMemoryCompactionRunnable.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.regionserver.CompactingMemStore.InMemoryCompactionRunnable" class="title">Uses of Class<br>org.apache.hadoop.hbase.regionserver.CompactingMemStore.InMemoryCompactionRunnable</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.regionserver.CompactingMemStore.InMemoryCompactionRunnable</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/regionserver/class-use/CompactingMemStore.InMemoryCompactionRunnable.html" target="_top">Frames</a></li>
+<li><a href="CompactingMemStore.InMemoryCompactionRunnable.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CompactingMemStore.InMemoryFlushRunnable.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CompactingMemStore.InMemoryFlushRunnable.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CompactingMemStore.InMemoryFlushRunnable.html
deleted file mode 100644
index ffc2113..0000000
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/CompactingMemStore.InMemoryFlushRunnable.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class org.apache.hadoop.hbase.regionserver.CompactingMemStore.InMemoryFlushRunnable (Apache HBase 3.0.0-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class org.apache.hadoop.hbase.regionserver.CompactingMemStore.InMemoryFlushRunnable (Apache HBase 3.0.0-SNAPSHOT API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../../../../../../overview-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/regionserver/class-use/CompactingMemStore.InMemoryFlushRunnable.html" target="_top">Frames</a></li>
-<li><a href="CompactingMemStore.InMemoryFlushRunnable.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<div class="header">
-<h2 title="Uses of Class org.apache.hadoop.hbase.regionserver.CompactingMemStore.InMemoryFlushRunnable" class="title">Uses of Class<br>org.apache.hadoop.hbase.regionserver.CompactingMemStore.InMemoryFlushRunnable</h2>
-</div>
-<div class="classUseContainer">No usage of org.apache.hadoop.hbase.regionserver.CompactingMemStore.InMemoryFlushRunnable</div>
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../../../../../../overview-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/regionserver/class-use/CompactingMemStore.InMemoryFlushRunnable.html" target="_top">Frames</a></li>
-<li><a href="CompactingMemStore.InMemoryFlushRunnable.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HRegionServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HRegionServer.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HRegionServer.html
index 0ef0e72..cbb5bea 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HRegionServer.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HRegionServer.html
@@ -616,12 +616,20 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></code></td>
-<td class="colLast"><span class="typeNameLabel">RegionListTmpl.ImplData.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.ImplData.html#m_regionServer">m_regionServer</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatusTmpl.ImplData.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html#m_regionServer">m_regionServer</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></code></td>
+<td class="colLast"><span class="typeNameLabel">RegionListTmpl.ImplData.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.ImplData.html#m_regionServer">m_regionServer</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RSStatusTmpl.ImplData.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#m_regionServer">m_regionServer</a></span></code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatusTmplImpl.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#regionServer">regionServer</a></span></code>&nbsp;</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RegionListTmplImpl.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmplImpl.html#regionServer">regionServer</a></span></code>&nbsp;</td>
@@ -641,10 +649,14 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></code></td>
-<td class="colLast"><span class="typeNameLabel">RegionListTmpl.ImplData.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.ImplData.html#getRegionServer--">getRegionServer</a></span>()</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatusTmpl.ImplData.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html#getRegionServer--">getRegionServer</a></span>()</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></code></td>
+<td class="colLast"><span class="typeNameLabel">RegionListTmpl.ImplData.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.ImplData.html#getRegionServer--">getRegionServer</a></span>()</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RSStatusTmpl.ImplData.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#getRegionServer--">getRegionServer</a></span>()</code>&nbsp;</td>
 </tr>
 </tbody>
@@ -658,13 +670,22 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>org.jamon.Renderer</code></td>
-<td class="colLast"><span class="typeNameLabel">RSStatusTmpl.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#makeRenderer-org.apache.hadoop.hbase.regionserver.HRegionServer-">makeRenderer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatusTmpl.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#makeRenderer-org.apache.hadoop.hbase.regionserver.HRegionServer-">makeRenderer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>org.jamon.Renderer</code></td>
+<td class="colLast"><span class="typeNameLabel">RSStatusTmpl.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#makeRenderer-org.apache.hadoop.hbase.regionserver.HRegionServer-">makeRenderer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>org.jamon.Renderer</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionListTmpl.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.html#makeRenderer-org.apache.hadoop.hbase.regionserver.HRegionServer-java.util.List-">makeRenderer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer,
             <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;onlineRegions)</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatusTmpl.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#render-java.io.Writer-org.apache.hadoop.hbase.regionserver.HRegionServer-">render</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+      <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer)</code>&nbsp;</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">RSStatusTmpl.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#render-java.io.Writer-org.apache.hadoop.hbase.regionserver.HRegionServer-">render</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
@@ -678,15 +699,24 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">RSStatusTmpl.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#renderNoFlush-java.io.Writer-org.apache.hadoop.hbase.regionserver.HRegionServer-">renderNoFlush</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+<td class="colLast"><span class="typeNameLabel">ReplicationStatusTmpl.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#renderNoFlush-java.io.Writer-org.apache.hadoop.hbase.regionserver.HRegionServer-">renderNoFlush</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">RSStatusTmpl.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#renderNoFlush-java.io.Writer-org.apache.hadoop.hbase.regionserver.HRegionServer-">renderNoFlush</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+             <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionListTmpl.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.html#renderNoFlush-java.io.Writer-org.apache.hadoop.hbase.regionserver.HRegionServer-java.util.List-">renderNoFlush</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer,
              <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;onlineRegions)</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatusTmpl.ImplData.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html#setRegionServer-org.apache.hadoop.hbase.regionserver.HRegionServer-">setRegionServer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer)</code>&nbsp;</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionListTmpl.ImplData.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.ImplData.html#setRegionServer-org.apache.hadoop.hbase.regionserver.HRegionServer-">setRegionServer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer)</code>&nbsp;</td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/KeyValueScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/KeyValueScanner.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/KeyValueScanner.html
index 65f7fa5..659e89f 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/KeyValueScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/KeyValueScanner.html
@@ -465,9 +465,10 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">CellChunkImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#reinitializeCellSet-int-org.apache.hadoop.hbase.regionserver.KeyValueScanner-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">reinitializeCellSet</a></span>(int&nbsp;numOfCells,
+<td class="colLast"><span class="typeNameLabel">CellChunkImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#reinitializeCellSet-int-org.apache.hadoop.hbase.regionserver.KeyValueScanner-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.MemStoreSizing-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">reinitializeCellSet</a></span>(int&nbsp;numOfCells,
                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&nbsp;segmentScanner,
                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;oldCellSet,
+                   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</code>&nbsp;</td>
 </tr>
 </tbody>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreCompactionStrategy.Action.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreCompactionStrategy.Action.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreCompactionStrategy.Action.html
index 7ee65c5..76ba1ed 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreCompactionStrategy.Action.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreCompactionStrategy.Action.html
@@ -245,9 +245,10 @@ the order they are declared.</div>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">CellChunkImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#reinitializeCellSet-int-org.apache.hadoop.hbase.regionserver.KeyValueScanner-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">reinitializeCellSet</a></span>(int&nbsp;numOfCells,
+<td class="colLast"><span class="typeNameLabel">CellChunkImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#reinitializeCellSet-int-org.apache.hadoop.hbase.regionserver.KeyValueScanner-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.MemStoreSizing-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">reinitializeCellSet</a></span>(int&nbsp;numOfCells,
                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&nbsp;segmentScanner,
                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;oldCellSet,
+                   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</code>&nbsp;</td>
 </tr>
 </tbody>
@@ -271,7 +272,7 @@ the order they are declared.</div>
 </tr>
 <tr class="rowColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.html#CellArrayImmutableSegment-org.apache.hadoop.hbase.regionserver.CSLMImmutableSegment-org.apache.hadoop.hbase.regionserver.MemStoreSizing-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">CellArrayImmutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">CSLMImmutableSegment</a>&nbsp;segment,
-                         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+                         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;mss,
                          <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</code>
 <div class="block">------------------------------------------------------------------------
  C-tor to be used when new CellChunkImmutableSegment is built as a result of flattening

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSizing.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSizing.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSizing.html
index 075c23d..d6eaaf7 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSizing.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSizing.html
@@ -211,9 +211,10 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">MutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#add-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">add</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<td class="colLast"><span class="typeNameLabel">MutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#add-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">add</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
    boolean&nbsp;mslabUsed,
-   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing)</code>
+   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing,
+   boolean&nbsp;sizeAddedPreOperation)</code>
 <div class="block">Adds the given cell into the segment</div>
 </td>
 </tr>
@@ -276,6 +277,19 @@
                <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreAccounting)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">CompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#checkAndAddToActiveSize-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">checkAndAddToActiveSize</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive,
+                       <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+                       <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>
+<div class="block">Check whether anything need to be done based on the current active set size.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
+<td class="colLast"><span class="typeNameLabel">CellChunkImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#copyCellIntoMSLAB-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">copyCellIntoMSLAB</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></td>
 <td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegmentByFlattening-org.apache.hadoop.hbase.regionserver.CSLMImmutableSegment-org.apache.hadoop.hbase.regionserver.CompactingMemStore.IndexType-org.apache.hadoop.hbase.regionserver.MemStoreSizing-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">createImmutableSegmentByFlattening</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">CSLMImmutableSegment</a>&nbsp;segment,
                                   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver">CompactingMemStore.IndexType</a>&nbsp;idxType,
@@ -283,24 +297,79 @@
                                   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">CompositeImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
-           boolean&nbsp;mslabUsed,
-           <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#doAdd-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">doAdd</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+     <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+     <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;toAdd,
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#doAddOrUpsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">doAddOrUpsert</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+             long&nbsp;readpoint,
+             <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+             boolean&nbsp;doAdd)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#doUpsert-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">doUpsert</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+        <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+        long&nbsp;readpoint,
+        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">CompositeImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">internalAdd</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
            boolean&nbsp;mslabUsed,
-           <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+           <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+           boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">internalAdd</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+           boolean&nbsp;mslabUsed,
+           <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+           boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#internalAdd-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+           <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;toAdd,
            boolean&nbsp;mslabUsed,
            <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected abstract boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">preUpdate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+         <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>
+<div class="block">Issue any synchronization and test needed before applying the update</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">CompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">preUpdate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+         <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>
+<div class="block">Issue any synchronization and test needed before applying the update
+ For compacting memstore this means checking the update can increase the size without
+ overflow</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">DefaultMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">preUpdate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+         <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
 <tr class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">CellChunkImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#reinitializeCellSet-int-org.apache.hadoop.hbase.regionserver.KeyValueScanner-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.MemStoreSizing-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">reinitializeCellSet</a></span>(int&nbsp;numOfCells,
+                   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&nbsp;segmentScanner,
+                   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;oldCellSet,
+                   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+                   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">HRegion.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#restoreEdit-org.apache.hadoop.hbase.regionserver.HStore-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">restoreEdit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;s,
            <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
@@ -308,19 +377,27 @@
 <div class="block">Used by tests</div>
 </td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">CompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#shouldFlushInMemory-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">shouldFlushInMemory</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive,
+                   <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+                   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">CompositeImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+<td class="colLast"><span class="typeNameLabel">CompositeImmutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompositeImmutableSegment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">updateMetaInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
               boolean&nbsp;succ,
               boolean&nbsp;mslabUsed,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+              boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+<td class="colLast"><span class="typeNameLabel">Segment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">updateMetaInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
               boolean&nbsp;succ,
               boolean&nbsp;mslabUsed,
-              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+              <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+              boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
@@ -336,9 +413,10 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">MutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#upsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">upsert</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<td class="colLast"><span class="typeNameLabel">MutableSegment.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html#upsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">upsert</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
       long&nbsp;readpoint,
-      <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing)</code>&nbsp;</td>
+      <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing,
+      boolean&nbsp;sizeAddedPreOperation)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
@@ -372,7 +450,7 @@
 <tbody>
 <tr class="altColor">
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.html#CellArrayImmutableSegment-org.apache.hadoop.hbase.regionserver.CSLMImmutableSegment-org.apache.hadoop.hbase.regionserver.MemStoreSizing-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">CellArrayImmutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">CSLMImmutableSegment</a>&nbsp;segment,
-                         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+                         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;mss,
                          <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</code>
 <div class="block">------------------------------------------------------------------------
  C-tor to be used when new CellChunkImmutableSegment is built as a result of flattening

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MutableSegment.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MutableSegment.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MutableSegment.html
index aa163ac..63c5807 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MutableSegment.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MutableSegment.html
@@ -103,7 +103,7 @@
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></code></td>
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#active">active</a></span></code>&nbsp;</td>
 </tr>
 </tbody>
@@ -140,17 +140,104 @@
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">CompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#checkAndAddToActiveSize-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">checkAndAddToActiveSize</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive,
+                       <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+                       <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>
+<div class="block">Check whether anything need to be done based on the current active set size.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></td>
 <td class="colLast"><span class="typeNameLabel">SegmentFactory.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SegmentFactory.html#createImmutableSegment-org.apache.hadoop.hbase.regionserver.MutableSegment-">createImmutableSegment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;segment)</code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#doAdd-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">doAdd</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+     <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+     <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#doUpsert-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">doUpsert</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+        <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+        long&nbsp;readpoint,
+        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">CompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#flushInMemory-org.apache.hadoop.hbase.regionserver.MutableSegment-">flushInMemory</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#internalAdd-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+           <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;toAdd,
+           boolean&nbsp;mslabUsed,
+           <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+                       <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+                       boolean&nbsp;forceCloneOfBigCell)</code>
+<div class="block">If the segment has a memory allocator the cell is being cloned to this space, and returned;
+ Otherwise the given cell is returned
+
+ When a cell's size is too big (bigger than maxAlloc), it is not allocated on MSLAB.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected abstract void</code></td>
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#postUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-">postUpdate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive)</code>
+<div class="block">Issue any post update synchronization and tests</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">CompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#pushActiveToPipeline-org.apache.hadoop.hbase.regionserver.MutableSegment-">pushActiveToPipeline</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;active)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">CompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#postUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-">postUpdate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">DefaultMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#postUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-">postUpdate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected abstract boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">AbstractMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">preUpdate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+         <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>
+<div class="block">Issue any synchronization and test needed before applying the update</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">CompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">preUpdate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+         <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>
+<div class="block">Issue any synchronization and test needed before applying the update
+ For compacting memstore this means checking the update can increase the size without
+ overflow</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">DefaultMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">preUpdate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+         <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+         <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">CompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#pushActiveToPipeline-org.apache.hadoop.hbase.regionserver.MutableSegment-">pushActiveToPipeline</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">CompactionPipeline.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactionPipeline.html#pushHead-org.apache.hadoop.hbase.regionserver.MutableSegment-">pushHead</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;segment)</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">CompactingMemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#shouldFlushInMemory-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">shouldFlushInMemory</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currActive,
+                   <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cellToAdd,
+                   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
 </tbody>
 </table>
 </li>


[39/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html b/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
index 167a2dc..ecfc2bc 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
@@ -254,7 +254,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" tit
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#abort-java.lang.String-">abort</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#addRegion-org.apache.hadoop.hbase.regionserver.HRegion-">addRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#addToMovedRegions-java.lang.String-org.apache.hadoop.hbase.ServerName-long-">addToMovedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#checkFileSystem--">checkFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#cleanMovedRegions--">cleanMovedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#clearRegionBlockCache-org.apache.hadoop.hbase.regionserver.Region-">clearRegionBlockCache</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeAllRegions-boolean-">closeAllRegions</a
 >, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeAndOfflineRegionForSplitOrMerge-java.util.List-">closeAndOfflineRegionForSplitOrMerge</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeRegion-java.lang.String-boolean-org.apache.hadoop.hbase.ServerName-">closeRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#constructRegionServer-java.lang.Class-org.apache.hadoop.conf.Configuration-">constructRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#convertThrowableToIOE-java.lang.Throwable-java.lang.String-">convertThrowableToIOE</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createClusterConnection--">createClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createConnection-org.apache.hadoop.conf.Configuration-">createConnection</a>, <
 a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionLoad-java.lang.String-">createRegionLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionServerStatusStub--">createRegionServerStatusStub</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionServerStatusStub-boolean-">createRegionServerStatusStub</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#execRegionServerService-org.apache.hbase.thirdparty.com.google.protobuf.RpcController-org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceRequest-">execRegionServerService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#executeProcedure-long-org.apache.hadoop.hbase.procedure2.RSProcedureCallable-">executeProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCacheConfig
 --">getCacheConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getChoreService--">getChoreService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getClusterConnection--">getClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getClusterId--">getClusterId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactionPressure--">getCompactionPressure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactionRequestor--">getCompactionRequestor</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactSplitThread--">getCompactSplitThread</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConfiguration--">getConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConfig
 urationManager--">getConfigurationManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConnection--">getConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCoordinatedStateManager--">getCoordinatedStateManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getEventLoopGroupConfig--">getEventLoopGroupConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getExecutorService--">getExecutorService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFavoredNodesForRegion-java.lang.String-">getFavoredNodesForRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFileSystem--">getFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFlushPressure--">getFlushPressure</a>, <a href="../../../../../org/apache/had
 oop/hbase/regionserver/HRegionServer.html#getFlushRequester--">getFlushRequester</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFlushThroughputController--">getFlushThroughputController</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFsTableDescriptors--">getFsTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getHeapMemoryManager--">getHeapMemoryManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getInfoServer--">getInfoServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getLastSequenceId-byte:A-">getLastSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getLeases--">getLeases</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMasterAddressTracker--">getMasterAddressTracker</a>, <a href="../.
 ./../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetaTableLocator--">getMetaTableLocator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetrics--">getMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMostLoadedRegions--">getMostLoadedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getNonceManager--">getNonceManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getNumberOfOnlineRegions--">getNumberOfOnlineRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineRegion-byte:A-">getOnlineRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineRegionsLocalContext--">getOnlineRegionsLocalContext</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineTables--">getOnlineTabl
 es</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegion-byte:A-">getRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegion-java.lang.String-">getRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionBlockLocations-java.lang.String-">getRegionBlockLocations</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionByEncodedName-byte:A-java.lang.String-">getRegionByEncodedName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionByEncodedName-java.lang.String-">getRegionByEncodedName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegions--">getRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegions-org.apache.hadoop.hbase.TableName-">getRegions</a>, <a href="../../../../../org/apache/hado
 op/hbase/regionserver/HRegionServer.html#getRegionServerAccounting--">getRegionServerAccounting</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerCoprocessorHost--">getRegionServerCoprocessorHost</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerCoprocessors--">getRegionServerCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerMetrics--">getRegionServerMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerRpcQuotaManager--">getRegionServerRpcQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerSpaceQuotaManager--">getRegionServerSpaceQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionsInTransitionInRS--">getRegionsInTransitionInRS</a>, <a href="../../../../.
 ./org/apache/hadoop/hbase/regionserver/HRegionServer.html#getReplicationSinkService--">getReplicationSinkService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getReplicationSourceService--">getReplicationSourceService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRootDir--">getRootDir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRpcServer--">getRpcServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRSRpcServices--">getRSRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getSecureBulkLoadManager--">getSecureBulkLoadManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getStartcode--">getStartcode</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getThreadWakeFrequency--">getThreadWakeFrequency</a>, <a 
 href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWAL-org.apache.hadoop.hbase.client.RegionInfo-">getWAL</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALFileSystem--">getWALFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWalRoller--">getWalRoller</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALRootDir--">getWALRootDir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALs--">getWALs</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#handleReportForDutyResponse-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse-">handleReportForDutyResponse</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#initializeMemStoreChunkCreator--">initializeMemStoreChunkCreator</a>, <a hr
 ef="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isAborted--">isAborted</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isClusterUp--">isClusterUp</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isOnline--">isOnline</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isShutDown--">isShutDown</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopped--">isStopped</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopping--">isStopping</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#kill--">kill</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#movedRegionCleanerPeriod--">movedRegionCleanerPeriod</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#onConfigurationChange-org.apache
 .hadoop.conf.Configuration-">onConfigurationChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#postOpenDeployTasks-org.apache.hadoop.hbase.regionserver.RegionServerServices.PostOpenDeployContext-">postOpenDeployTasks</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#regionLock-java.util.List-java.lang.String-org.apache.hadoop.hbase.Abortable-">regionLock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#remoteProcedureComplete-long-java.lang.Throwable-">remoteProcedureComplete</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#removeRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.ServerName-">removeRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportFileArchivalForQuotas-org.apache.hadoop.hbase.TableName-java.util.Collection-">reportFileArchivalForQuotas</a>, <a href=
 "../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportRegionSizesForQuotas-org.apache.hadoop.hbase.quotas.RegionSizeStore-">reportRegionSizesForQuotas</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportRegionStateTransition-org.apache.hadoop.hbase.regionserver.RegionServerServices.RegionStateTransitionContext-">reportRegionStateTransition</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#sendShutdownInterrupt--">sendShutdownInterrupt</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#setupClusterConnection--">setupClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#stop-java.lang.String-boolean-org.apache.hadoop.hbase.security.User-">stop</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#toString--">toString</a>, <a href="../../../../../org/apache/hadoop/hbase/regions
 erver/HRegionServer.html#tryRegionServerReport-long-long-">tryRegionServerReport</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#unassign-byte:A-">unassign</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#updateConfiguration--">updateConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#updateRegionFavoredNodesMapping-java.lang.String-java.util.List-">updateRegionFavoredNodesMapping</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#waitForServerOnline--">waitForServerOnline</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#walRollRequestFinished--">walRollRequestFinished</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#abort-java.lang.String-">abort</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#addRegion-org.apache.hadoop.hbase.regionserver.HRegion-">addRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#addToMovedRegions-java.lang.String-org.apache.hadoop.hbase.ServerName-long-">addToMovedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#checkFileSystem--">checkFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#cleanMovedRegions--">cleanMovedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#clearRegionBlockCache-org.apache.hadoop.hbase.regionserver.Region-">clearRegionBlockCache</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeAllRegions-boolean-">closeAllRegions</a
 >, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeAndOfflineRegionForSplitOrMerge-java.util.List-">closeAndOfflineRegionForSplitOrMerge</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeRegion-java.lang.String-boolean-org.apache.hadoop.hbase.ServerName-">closeRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#constructRegionServer-java.lang.Class-org.apache.hadoop.conf.Configuration-">constructRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#convertThrowableToIOE-java.lang.Throwable-java.lang.String-">convertThrowableToIOE</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createClusterConnection--">createClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createConnection-org.apache.hadoop.conf.Configuration-">createConnection</a>, <
 a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionLoad-java.lang.String-">createRegionLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionServerStatusStub--">createRegionServerStatusStub</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionServerStatusStub-boolean-">createRegionServerStatusStub</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#execRegionServerService-org.apache.hbase.thirdparty.com.google.protobuf.RpcController-org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceRequest-">execRegionServerService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#executeProcedure-long-org.apache.hadoop.hbase.procedure2.RSProcedureCallable-">executeProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCacheConfig
 --">getCacheConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getChoreService--">getChoreService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getClusterConnection--">getClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getClusterId--">getClusterId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactionPressure--">getCompactionPressure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactionRequestor--">getCompactionRequestor</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactSplitThread--">getCompactSplitThread</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConfiguration--">getConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConfig
 urationManager--">getConfigurationManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConnection--">getConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCoordinatedStateManager--">getCoordinatedStateManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getEventLoopGroupConfig--">getEventLoopGroupConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getExecutorService--">getExecutorService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFavoredNodesForRegion-java.lang.String-">getFavoredNodesForRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFileSystem--">getFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFlushPressure--">getFlushPressure</a>, <a href="../../../../../org/apache/had
 oop/hbase/regionserver/HRegionServer.html#getFlushRequester--">getFlushRequester</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFlushThroughputController--">getFlushThroughputController</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFsTableDescriptors--">getFsTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getHeapMemoryManager--">getHeapMemoryManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getInfoServer--">getInfoServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getLastSequenceId-byte:A-">getLastSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getLeases--">getLeases</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMasterAddressTracker--">getMasterAddressTracker</a>, <a href="../.
 ./../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetaTableLocator--">getMetaTableLocator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetrics--">getMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMostLoadedRegions--">getMostLoadedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getNonceManager--">getNonceManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getNumberOfOnlineRegions--">getNumberOfOnlineRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineRegion-byte:A-">getOnlineRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineRegionsLocalContext--">getOnlineRegionsLocalContext</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineTables--">getOnlineTabl
 es</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegion-byte:A-">getRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegion-java.lang.String-">getRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionBlockLocations-java.lang.String-">getRegionBlockLocations</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionByEncodedName-byte:A-java.lang.String-">getRegionByEncodedName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionByEncodedName-java.lang.String-">getRegionByEncodedName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegions--">getRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegions-org.apache.hadoop.hbase.TableName-">getRegions</a>, <a href="../../../../../org/apache/hado
 op/hbase/regionserver/HRegionServer.html#getRegionServerAccounting--">getRegionServerAccounting</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerCoprocessorHost--">getRegionServerCoprocessorHost</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerCoprocessors--">getRegionServerCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerMetrics--">getRegionServerMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerRpcQuotaManager--">getRegionServerRpcQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerSpaceQuotaManager--">getRegionServerSpaceQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionsInTransitionInRS--">getRegionsInTransitionInRS</a>, <a href="../../../../.
 ./org/apache/hadoop/hbase/regionserver/HRegionServer.html#getReplicationSinkService--">getReplicationSinkService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getReplicationSourceService--">getReplicationSourceService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRootDir--">getRootDir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRpcServer--">getRpcServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRSRpcServices--">getRSRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getSecureBulkLoadManager--">getSecureBulkLoadManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getStartcode--">getStartcode</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getThreadWakeFrequency--">getThreadWakeFrequency</a>, <a 
 href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWAL-org.apache.hadoop.hbase.client.RegionInfo-">getWAL</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALFileSystem--">getWALFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWalGroupsReplicationStatus--">getWalGroupsReplicationStatus</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWalRoller--">getWalRoller</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALRootDir--">getWALRootDir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALs--">getWALs</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#handleReportForDutyResponse-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse-">handleReportForDutyResponse</a>, <a href
 ="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#initializeMemStoreChunkCreator--">initializeMemStoreChunkCreator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isAborted--">isAborted</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isClusterUp--">isClusterUp</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isOnline--">isOnline</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isShutDown--">isShutDown</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopped--">isStopped</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopping--">isStopping</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#kill--">kill</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#movedRegionCleanerPeri
 od--">movedRegionCleanerPeriod</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#onConfigurationChange-org.apache.hadoop.conf.Configuration-">onConfigurationChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#postOpenDeployTasks-org.apache.hadoop.hbase.regionserver.RegionServerServices.PostOpenDeployContext-">postOpenDeployTasks</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#regionLock-java.util.List-java.lang.String-org.apache.hadoop.hbase.Abortable-">regionLock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#remoteProcedureComplete-long-java.lang.Throwable-">remoteProcedureComplete</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#removeRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.ServerName-">removeRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserv
 er/HRegionServer.html#reportFileArchivalForQuotas-org.apache.hadoop.hbase.TableName-java.util.Collection-">reportFileArchivalForQuotas</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportRegionSizesForQuotas-org.apache.hadoop.hbase.quotas.RegionSizeStore-">reportRegionSizesForQuotas</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportRegionStateTransition-org.apache.hadoop.hbase.regionserver.RegionServerServices.RegionStateTransitionContext-">reportRegionStateTransition</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#sendShutdownInterrupt--">sendShutdownInterrupt</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#setupClusterConnection--">setupClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#stop-java.lang.String-boolean-org.apache.hadoop.hbase.security.User-">stop</a>, <a href="../.
 ./../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#toString--">toString</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#tryRegionServerReport-long-long-">tryRegionServerReport</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#unassign-byte:A-">unassign</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#updateConfiguration--">updateConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#updateRegionFavoredNodesMapping-java.lang.String-java.util.List-">updateRegionFavoredNodesMapping</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#waitForServerOnline--">waitForServerOnline</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#walRollRequestFinished--">walRollRequestFinished</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html
index d01bd8b..1bdbdd0 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html
@@ -433,7 +433,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>executeFromState</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.74">executeFromState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.76">executeFromState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                                       org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MoveRegionState&nbsp;state)
                                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#executeFromState-TEnvironment-TState-">StateMachineProcedure</a></code></span></div>
@@ -456,7 +456,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>rollbackState</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.109">rollbackState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.111">rollbackState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                              org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MoveRegionState&nbsp;state)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#rollbackState-TEnvironment-TState-">StateMachineProcedure</a></code></span></div>
@@ -476,7 +476,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>abort</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.115">abort</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.117">abort</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#abort-TEnvironment-">Procedure</a></code></span></div>
 <div class="block">The abort() call is asynchronous and each procedure must decide how to deal
  with it, if they want to be abortable. The simplest implementation
@@ -499,7 +499,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringClassDetails</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.120">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;sb)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.122">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;sb)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClassDetails-java.lang.StringBuilder-">Procedure</a></code></span></div>
 <div class="block">Extend the toString() information with the procedure details
  e.g. className and parameters</div>
@@ -517,7 +517,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getInitialState</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MoveRegionState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.127">getInitialState</a>()</pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MoveRegionState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.129">getInitialState</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getInitialState--">StateMachineProcedure</a></code></span></div>
 <div class="block">Return the initial state object that will be used for the first call to executeFromState().</div>
 <dl>
@@ -534,7 +534,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getStateId</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.132">getStateId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MoveRegionState&nbsp;state)</pre>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.134">getStateId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MoveRegionState&nbsp;state)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getStateId-TState-">StateMachineProcedure</a></code></span></div>
 <div class="block">Convert the Enum (or more descriptive) state object to an ordinal (or state id).</div>
 <dl>
@@ -553,7 +553,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getState</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MoveRegionState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.137">getState</a>(int&nbsp;stateId)</pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.MoveRegionState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.139">getState</a>(int&nbsp;stateId)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getState-int-">StateMachineProcedure</a></code></span></div>
 <div class="block">Convert an ordinal (or state id) to an Enum (or more descriptive) state object.</div>
 <dl>
@@ -572,7 +572,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableName</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.142">getTableName</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.144">getTableName</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html#getTableName--">getTableName</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html" title="interface in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface</a></code></dd>
@@ -589,7 +589,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableOperationType</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.147">getTableOperationType</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">TableProcedureInterface.TableOperationType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.149">getTableOperationType</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.html#getTableOperationType--">TableProcedureInterface</a></code></span></div>
 <div class="block">Given an operation type we can take decisions about what to do with pending operations.
  e.g. if we get a delete and we have some table operation pending (e.g. add column)
@@ -610,7 +610,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockList">
 <li class="blockList">
 <h4>serializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.152">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.154">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
 <div class="block">The user-level code of the procedure may have some state to
@@ -632,7 +632,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/Abst
 <ul class="blockListLast">
 <li class="blockList">
 <h4>deserializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.167">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/MoveRegionProcedure.html#line.169">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
 <div class="block">Called on store load to allow the user to decode the previously serialized

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
index 1799704..abd92a9 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
@@ -198,8 +198,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.Type.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.Action.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.LocalityType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.Type.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.Action.Type</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
index 75dcd36..200b80e 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -349,9 +349,9 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterRpcServices.BalanceSwitchMode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.TerminationStatus.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.TerminationStatus</span></a></li>
 </ul>
 </li>


[21/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html
new file mode 100644
index 0000000..516307c
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html
@@ -0,0 +1,507 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>ReplicationStatus.ReplicationStatusBuilder (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ReplicationStatus.ReplicationStatusBuilder (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ReplicationStatus.ReplicationStatusBuilder.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSyncUp.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatus.ReplicationStatusBuilder.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.replication.regionserver</div>
+<h2 title="Class ReplicationStatus.ReplicationStatusBuilder" class="title">Class ReplicationStatus.ReplicationStatusBuilder</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.replication.regionserver.ReplicationStatus.ReplicationStatusBuilder</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.81">ReplicationStatus.ReplicationStatusBuilder</a>
+extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#ageOfLastShippedOp">ageOfLastShippedOp</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private org.apache.hadoop.fs.Path</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#currentPath">currentPath</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#currentPosition">currentPosition</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#fileSize">fileSize</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#peerId">peerId</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#queueSize">queueSize</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#replicationDelay">replicationDelay</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#walGroup">walGroup</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#ReplicationStatusBuilder--">ReplicationStatusBuilder</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#build--">build</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#withAgeOfLastShippedOp-long-">withAgeOfLastShippedOp</a></span>(long&nbsp;ageOfLastShippedOp)</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#withCurrentPath-org.apache.hadoop.fs.Path-">withCurrentPath</a></span>(org.apache.hadoop.fs.Path&nbsp;currentPath)</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#withCurrentPosition-long-">withCurrentPosition</a></span>(long&nbsp;currentPosition)</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#withFileSize-long-">withFileSize</a></span>(long&nbsp;fileSize)</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#withPeerId-java.lang.String-">withPeerId</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</code>&nbsp;</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#withQueueSize-int-">withQueueSize</a></span>(int&nbsp;queueSize)</code>&nbsp;</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#withReplicationDelay-long-">withReplicationDelay</a></span>(long&nbsp;replicationDelay)</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#withWalGroup-java.lang.String-">withWalGroup</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroup)</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="peerId">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>peerId</h4>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#line.82">peerId</a></pre>
+</li>
+</ul>
+<a name="walGroup">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>walGroup</h4>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#line.83">walGroup</a></pre>
+</li>
+</ul>
+<a name="currentPath">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>currentPath</h4>
+<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#line.84">currentPath</a></pre>
+</li>
+</ul>
+<a name="queueSize">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>queueSize</h4>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#line.85">queueSize</a></pre>
+</li>
+</ul>
+<a name="ageOfLastShippedOp">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ageOfLastShippedOp</h4>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#line.86">ageOfLastShippedOp</a></pre>
+</li>
+</ul>
+<a name="replicationDelay">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>replicationDelay</h4>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#line.87">replicationDelay</a></pre>
+</li>
+</ul>
+<a name="currentPosition">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>currentPosition</h4>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#line.88">currentPosition</a></pre>
+</li>
+</ul>
+<a name="fileSize">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>fileSize</h4>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#line.89">fileSize</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="ReplicationStatusBuilder--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ReplicationStatusBuilder</h4>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#line.81">ReplicationStatusBuilder</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="withPeerId-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>withPeerId</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#line.91">withPeerId</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</pre>
+</li>
+</ul>
+<a name="withFileSize-long-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>withFileSize</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#line.96">withFileSize</a>(long&nbsp;fileSize)</pre>
+</li>
+</ul>
+<a name="withWalGroup-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>withWalGroup</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#line.101">withWalGroup</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroup)</pre>
+</li>
+</ul>
+<a name="withCurrentPath-org.apache.hadoop.fs.Path-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>withCurrentPath</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#line.106">withCurrentPath</a>(org.apache.hadoop.fs.Path&nbsp;currentPath)</pre>
+</li>
+</ul>
+<a name="withQueueSize-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>withQueueSize</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#line.111">withQueueSize</a>(int&nbsp;queueSize)</pre>
+</li>
+</ul>
+<a name="withAgeOfLastShippedOp-long-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>withAgeOfLastShippedOp</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#line.116">withAgeOfLastShippedOp</a>(long&nbsp;ageOfLastShippedOp)</pre>
+</li>
+</ul>
+<a name="withReplicationDelay-long-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>withReplicationDelay</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#line.121">withReplicationDelay</a>(long&nbsp;replicationDelay)</pre>
+</li>
+</ul>
+<a name="withCurrentPosition-long-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>withCurrentPosition</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#line.126">withCurrentPosition</a>(long&nbsp;currentPosition)</pre>
+</li>
+</ul>
+<a name="build--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>build</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#line.131">build</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ReplicationStatus.ReplicationStatusBuilder.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSyncUp.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatus.ReplicationStatusBuilder.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html
new file mode 100644
index 0000000..544401d
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html
@@ -0,0 +1,525 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>ReplicationStatus (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ReplicationStatus (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":9};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ReplicationStatus.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatus.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.replication.regionserver</div>
+<h2 title="Class ReplicationStatus" class="title">Class ReplicationStatus</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.replication.regionserver.ReplicationStatus</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>@InterfaceAudience.Private
+public final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.24">ReplicationStatus</a>
+extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
+<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#ageOfLastShippedOp">ageOfLastShippedOp</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private org.apache.hadoop.fs.Path</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#currentPath">currentPath</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#currentPosition">currentPosition</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#fileSize">fileSize</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#peerId">peerId</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#queueSize">queueSize</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#replicationDelay">replicationDelay</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#walGroup">walGroup</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#ReplicationStatus-org.apache.hadoop.hbase.replication.regionserver.ReplicationStatus.ReplicationStatusBuilder-">ReplicationStatus</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a>&nbsp;builder)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#getAgeOfLastShippedOp--">getAgeOfLastShippedOp</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#getCurrentPath--">getCurrentPath</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#getCurrentPosition--">getCurrentPosition</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#getFileSize--">getFileSize</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#getPeerId--">getPeerId</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#getQueueSize--">getQueueSize</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#getReplicationDelay--">getReplicationDelay</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#getWalGroup--">getWalGroup</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#newBuilder--">newBuilder</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="peerId">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>peerId</h4>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.25">peerId</a></pre>
+</li>
+</ul>
+<a name="walGroup">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>walGroup</h4>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.26">walGroup</a></pre>
+</li>
+</ul>
+<a name="currentPath">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>currentPath</h4>
+<pre>private final&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.27">currentPath</a></pre>
+</li>
+</ul>
+<a name="queueSize">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>queueSize</h4>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.28">queueSize</a></pre>
+</li>
+</ul>
+<a name="ageOfLastShippedOp">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ageOfLastShippedOp</h4>
+<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.29">ageOfLastShippedOp</a></pre>
+</li>
+</ul>
+<a name="replicationDelay">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>replicationDelay</h4>
+<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.30">replicationDelay</a></pre>
+</li>
+</ul>
+<a name="currentPosition">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>currentPosition</h4>
+<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.31">currentPosition</a></pre>
+</li>
+</ul>
+<a name="fileSize">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>fileSize</h4>
+<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.32">fileSize</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="ReplicationStatus-org.apache.hadoop.hbase.replication.regionserver.ReplicationStatus.ReplicationStatusBuilder-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ReplicationStatus</h4>
+<pre>private&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.34">ReplicationStatus</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a>&nbsp;builder)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getCurrentPosition--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCurrentPosition</h4>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.45">getCurrentPosition</a>()</pre>
+</li>
+</ul>
+<a name="getFileSize--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getFileSize</h4>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.49">getFileSize</a>()</pre>
+</li>
+</ul>
+<a name="getPeerId--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getPeerId</h4>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.53">getPeerId</a>()</pre>
+</li>
+</ul>
+<a name="getWalGroup--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getWalGroup</h4>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.57">getWalGroup</a>()</pre>
+</li>
+</ul>
+<a name="getQueueSize--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getQueueSize</h4>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.61">getQueueSize</a>()</pre>
+</li>
+</ul>
+<a name="getAgeOfLastShippedOp--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getAgeOfLastShippedOp</h4>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.65">getAgeOfLastShippedOp</a>()</pre>
+</li>
+</ul>
+<a name="getReplicationDelay--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getReplicationDelay</h4>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.69">getReplicationDelay</a>()</pre>
+</li>
+</ul>
+<a name="getCurrentPath--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCurrentPath</h4>
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.73">getCurrentPath</a>()</pre>
+</li>
+</ul>
+<a name="newBuilder--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>newBuilder</h4>
+<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#line.77">newBuilder</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ReplicationStatus.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatus.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSyncUp.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSyncUp.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSyncUp.html
index aeac4df..95324b5 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSyncUp.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSyncUp.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSyncUp.DummyServer.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -346,7 +346,7 @@ implements org.apache.hadoop.util.Tool</pre>
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSyncUp.DummyServer.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.html
index a528274..20bee94 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/SerialReplicationSourceWALReader.html
@@ -227,7 +227,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/regionser
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceWALReader</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#addEntryToBatch-org.apache.hadoop.hbase.replication.regionserver.WALEntryBatch-org.apache.hadoop.hbase.wal.WAL.Entry-">addEntryToBatch</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#createBatch-org.apache.hadoop.hbase.replication.regionserver.WALEntryStream-">createBatch</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#filterEntry-org.apache.hadoop.hbase.wal.WAL.Entry-">filterEntry</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#getCurrentPath--">getCurrentPath</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#getEntrySizeExcludeBulkLoad-org.apache.hadoop.hbase.wal.WAL.Entry-">getEntrySizeExcludeBulkLoad</a>, <a href=
 "../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#isReaderRunning--">isReaderRunning</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#run--">run</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#setReaderRunning-boolean-">setReaderRunning</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#switched-org.apache.hadoop.hbase.replication.regionserver.WALEntryStream-org.apache.hadoop.fs.Path-">switched</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#take--">take</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#addEntryToBatch-org.apache.hadoop.hbase.replication.regionserver.WALEntryBatch-org.apache.hadoop.hbase.wal.WAL.Entry-">addEntryToBatch</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#createBatch-org.apache.hadoop.hbase.replication.regionserver.WALEntryStream-">createBatch</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#filterEntry-org.apache.hadoop.hbase.wal.WAL.Entry-">filterEntry</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#getCurrentPath--">getCurrentPath</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#getEntrySizeExcludeBulkLoad-org.apache.hadoop.hbase.wal.WAL.Entry-">getEntrySizeExcludeBulkLoad</a>, <a href=
 "../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#isReaderRunning--">isReaderRunning</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#poll-long-">poll</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#run--">run</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#setReaderRunning-boolean-">setReaderRunning</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#switched-org.apache.hadoop.hbase.replication.regionserver.WALEntryStream-org.apache.hadoop.fs.Path-">switched</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#take--">take</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Thread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationSourceManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationSourceManager.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationSourceManager.html
index 5ad8882..18f002a 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationSourceManager.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationSourceManager.html
@@ -83,6 +83,10 @@
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.replication.regionserver">org.apache.hadoop.hbase.replication.regionserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
@@ -91,6 +95,26 @@
 </li>
 <li class="blockList">
 <ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.regionserver">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceManager</a> in <a href="../../../../../../../org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></h3>
+<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/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a> that return <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceManager</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="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceManager</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationSourceService.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html#getReplicationManager--">getReplicationManager</a></span>()</code>
+<div class="block">Returns the replication manager</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
 <li class="blockList"><a name="org.apache.hadoop.hbase.replication.regionserver">
 <!--   -->
 </a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationStatus.ReplicationStatusBuilder.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationStatus.ReplicationStatusBuilder.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationStatus.ReplicationStatusBuilder.html
new file mode 100644
index 0000000..48e2d18
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationStatus.ReplicationStatusBuilder.html
@@ -0,0 +1,208 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.replication.regionserver.ReplicationStatus.ReplicationStatusBuilder (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.replication.regionserver.ReplicationStatus.ReplicationStatusBuilder (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationStatus.ReplicationStatusBuilder.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatus.ReplicationStatusBuilder.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.replication.regionserver.ReplicationStatus.ReplicationStatusBuilder" class="title">Uses of Class<br>org.apache.hadoop.hbase.replication.regionserver.ReplicationStatus.ReplicationStatusBuilder</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.replication.regionserver">org.apache.hadoop.hbase.replication.regionserver</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.replication.regionserver">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a> in <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/package-summary.html">org.apache.hadoop.hbase.replication.regionserver</a></h3>
+<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/replication/regionserver/package-summary.html">org.apache.hadoop.hbase.replication.regionserver</a> that return <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</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>static <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatus.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#newBuilder--">newBuilder</a></span>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatus.ReplicationStatusBuilder.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#withAgeOfLastShippedOp-long-">withAgeOfLastShippedOp</a></span>(long&nbsp;ageOfLastShippedOp)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatus.ReplicationStatusBuilder.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#withCurrentPath-org.apache.hadoop.fs.Path-">withCurrentPath</a></span>(org.apache.hadoop.fs.Path&nbsp;currentPath)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatus.ReplicationStatusBuilder.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#withCurrentPosition-long-">withCurrentPosition</a></span>(long&nbsp;currentPosition)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatus.ReplicationStatusBuilder.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#withFileSize-long-">withFileSize</a></span>(long&nbsp;fileSize)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatus.ReplicationStatusBuilder.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#withPeerId-java.lang.String-">withPeerId</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatus.ReplicationStatusBuilder.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#withQueueSize-int-">withQueueSize</a></span>(int&nbsp;queueSize)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatus.ReplicationStatusBuilder.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#withReplicationDelay-long-">withReplicationDelay</a></span>(long&nbsp;replicationDelay)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatus.ReplicationStatusBuilder.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html#withWalGroup-java.lang.String-">withWalGroup</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroup)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">
+<caption><span>Constructors in <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/package-summary.html">org.apache.hadoop.hbase.replication.regionserver</a> with parameters of type <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html#ReplicationStatus-org.apache.hadoop.hbase.replication.regionserver.ReplicationStatus.ReplicationStatusBuilder-">ReplicationStatus</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus.ReplicationStatusBuilder</a>&nbsp;builder)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/replication/regionserver/class-use/ReplicationStatus.ReplicationStatusBuilder.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatus.ReplicationStatusBuilder.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>


[41/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html
index 568bd54..8a0b072 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>class <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.901">BucketCache.WriterThread</a>
+<pre>class <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.894">BucketCache.WriterThread</a>
 extends <a href="../../../../../../../org/apache/hadoop/hbase/util/HasThread.html" title="class in org.apache.hadoop.hbase.util">HasThread</a></pre>
 </li>
 </ul>
@@ -193,6 +193,13 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/util/HasThread.htm
 </td>
 </tr>
 <tr id="i2" class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html#putIntoBackingMap-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.bucket.BucketCache.BucketEntry-">putIntoBackingMap</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;key,
+                 <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.BucketEntry</a>&nbsp;bucketEntry)</code>
+<div class="block">Put the new bucket entry into backingMap.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html#run--">run</a></span>()</code>&nbsp;</td>
 </tr>
@@ -231,7 +238,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/util/HasThread.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>inputQueue</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.RAMQueueEntry</a>&gt; <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html#line.902">inputQueue</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.RAMQueueEntry</a>&gt; <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html#line.895">inputQueue</a></pre>
 </li>
 </ul>
 <a name="writerEnabled">
@@ -240,7 +247,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/util/HasThread.htm
 <ul class="blockListLast">
 <li class="blockList">
 <h4>writerEnabled</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html#line.903">writerEnabled</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html#line.896">writerEnabled</a></pre>
 </li>
 </ul>
 </li>
@@ -257,7 +264,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/util/HasThread.htm
 <ul class="blockListLast">
 <li class="blockList">
 <h4>WriterThread</h4>
-<pre><a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html#line.905">WriterThread</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.RAMQueueEntry</a>&gt;&nbsp;queue)</pre>
+<pre><a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html#line.898">WriterThread</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.RAMQueueEntry</a>&gt;&nbsp;queue)</pre>
 </li>
 </ul>
 </li>
@@ -274,7 +281,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/util/HasThread.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>disableWriter</h4>
-<pre>void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html#line.912">disableWriter</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html#line.905">disableWriter</a>()</pre>
 </li>
 </ul>
 <a name="run--">
@@ -283,7 +290,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/util/HasThread.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html#line.917">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html#line.910">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>
@@ -292,13 +299,37 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/util/HasThread.htm
 </dl>
 </li>
 </ul>
+<a name="putIntoBackingMap-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.bucket.BucketCache.BucketEntry-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>putIntoBackingMap</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html#line.944">putIntoBackingMap</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;key,
+                               <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.BucketEntry</a>&nbsp;bucketEntry)</pre>
+<div class="block">Put the new bucket entry into backingMap. Notice that we are allowed to replace the existing
+ cache with a new block for the same cache key. there's a corner case: one thread cache a
+ block in ramCache, copy to io-engine and add a bucket entry to backingMap. Caching another
+ new block with the same cache key do the same thing for the same cache key, so if not evict
+ the previous bucket entry, then memory leak happen because the previous bucketEntry is gone
+ but the bucketAllocator do not free its memory.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>key</code> - Block cache key</dd>
+<dd><code>bucketEntry</code> - Bucket entry to put into backingMap.</dd>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#shouldReplaceExistingCacheBlock-org.apache.hadoop.hbase.io.hfile.BlockCache-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.Cacheable-"><code>BlockCacheUtil.shouldReplaceExistingCacheBlock(BlockCache blockCache,BlockCacheKey
+      cacheKey, Cacheable newBlock)</code></a></dd>
+</dl>
+</li>
+</ul>
 <a name="doDrain-java.util.List-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>doDrain</h4>
-<pre>void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html#line.948">doDrain</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.RAMQueueEntry</a>&gt;&nbsp;entries)
+<pre>void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html#line.966">doDrain</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.RAMQueueEntry</a>&gt;&nbsp;entries)
       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Flush the entries in ramCache to IOEngine and add bucket entry to backingMap.
  Process all that are passed in even if failure being sure to remove from ramCache else we'll

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html
index 11df7d7..dccbeab 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":9,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":9,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -509,7 +509,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 </td>
 </tr>
 <tr id="i5" class="rowColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#cacheBlockWithWait-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.Cacheable-boolean-boolean-">cacheBlockWithWait</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
                   <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;cachedItem,
                   boolean&nbsp;inMemory,
@@ -519,42 +519,49 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 </tr>
 <tr id="i6" class="altColor">
 <td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#cacheBlockWithWaitInternal-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.Cacheable-boolean-boolean-">cacheBlockWithWaitInternal</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
+                          <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;cachedItem,
+                          boolean&nbsp;inMemory,
+                          boolean&nbsp;wait)</code>&nbsp;</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#checkIOErrorIsTolerated--">checkIOErrorIsTolerated</a></span>()</code>
 <div class="block">Check whether we tolerate IO error this time.</div>
 </td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.RAMQueueEntry</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#checkRamCache-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-">checkRamCache</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#disableCache--">disableCache</a></span>()</code>
 <div class="block">Used to shut down the cache -or- turn it off in the case of something broken.</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#evictBlock-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-">evictBlock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</code>
 <div class="block">Evict block from cache.</div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#evictBlock-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-boolean-">evictBlock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
           boolean&nbsp;deletedBlock)</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#evictBlocksByHfileName-java.lang.String-">evictBlocksByHfileName</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;hfileName)</code>
 <div class="block">Evicts all blocks for a specific HFile.</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#forceEvict-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-">forceEvict</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#freeEntireBuckets-int-">freeEntireBuckets</a></span>(int&nbsp;completelyFreeBucketsNeeded)</code>
 <div class="block">This method will find the buckets that are minimally occupied
@@ -564,22 +571,22 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
  passed, sometimes it might not due to changing refCounts</div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#freeSpace-java.lang.String-">freeSpace</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why)</code>
 <div class="block">Free the space if the used size reaches acceptableSize() or one size block
  couldn't be allocated.</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>(package private) float</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getAcceptableFactor--">getAcceptableFactor</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketAllocator.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketAllocator</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getAllocator--">getAllocator</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getBlock-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-boolean-boolean-boolean-">getBlock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;key,
         boolean&nbsp;caching,
@@ -588,49 +595,49 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <div class="block">Get the buffer of the block with the specified key.</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a>[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getBlockCaches--">getBlockCaches</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getBlockCount--">getBlockCount</a></span>()</code>
 <div class="block">Returns the number of blocks currently cached in the block cache.</div>
 </td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getCurrentDataSize--">getCurrentDataSize</a></span>()</code>
 <div class="block">Returns the occupied size of data blocks, in bytes.</div>
 </td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getCurrentSize--">getCurrentSize</a></span>()</code>
 <div class="block">Returns the occupied size of the block cache, in bytes.</div>
 </td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getDataBlockCount--">getDataBlockCount</a></span>()</code>
 <div class="block">Returns the number of data blocks currently cached in the block cache.</div>
 </td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>(package private) float</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getExtraFreeFactor--">getExtraFreeFactor</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getFreeSize--">getFreeSize</a></span>()</code>
 <div class="block">Returns the free size of the block cache, in bytes.</div>
 </td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getIoEngine--">getIoEngine</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/IOEngine.html" title="interface in org.apache.hadoop.hbase.io.hfile.bucket">IOEngine</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getIOEngineFromName-java.lang.String-long-java.lang.String-">getIOEngineFromName</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;ioEngineName,
                    long&nbsp;capacity,
@@ -638,29 +645,29 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <div class="block">Get the IOEngine from the IO engine name</div>
 </td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getMaxSize--">getMaxSize</a></span>()</code>
 <div class="block">Returns the Max size of the block cache, in bytes.</div>
 </td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code>(package private) float</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getMemoryFactor--">getMemoryFactor</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code>(package private) float</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getMinFactor--">getMinFactor</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>(package private) float</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getMultiFactor--">getMultiFactor</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i32" class="altColor">
 <td class="colFirst"><code>(package private) long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getPartitionSize-float-">getPartitionSize</a></span>(float&nbsp;partitionFactor)</code>&nbsp;</td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code>(package private) static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.RAMQueueEntry</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getRAMQueueEntries-java.util.concurrent.BlockingQueue-java.util.List-">getRAMQueueEntries</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.RAMQueueEntry</a>&gt;&nbsp;q,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.RAMQueueEntry</a>&gt;&nbsp;receptacle)</code>
@@ -668,53 +675,53 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
  before returning.</div>
 </td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getRealCacheSize--">getRealCacheSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getRefCount-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-">getRefCount</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</code>&nbsp;</td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i36" class="altColor">
 <td class="colFirst"><code>(package private) float</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getSingleFactor--">getSingleFactor</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i36" class="altColor">
+<tr id="i37" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/CacheStats.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheStats</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getStats--">getStats</a></span>()</code>
 <div class="block">Get the statistics for this block cache.</div>
 </td>
 </tr>
-<tr id="i37" class="rowColor">
+<tr id="i38" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#heapSize--">heapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i38" class="altColor">
+<tr id="i39" class="rowColor">
 <td class="colFirst"><code>(package private) boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#isCacheEnabled--">isCacheEnabled</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i39" class="rowColor">
+<tr id="i40" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#iterator--">iterator</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i40" class="altColor">
+<tr id="i41" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#join--">join</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i41" class="rowColor">
+<tr id="i42" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#logStats--">logStats</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i42" class="altColor">
+<tr id="i43" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#persistToFile--">persistToFile</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i43" class="rowColor">
+<tr id="i44" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#retrieveFromFile-int:A-">retrieveFromFile</a></span>(int[]&nbsp;bucketSizes)</code>&nbsp;</td>
 </tr>
-<tr id="i44" class="altColor">
+<tr id="i45" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#returnBlock-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.Cacheable-">returnBlock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
            <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;block)</code>
@@ -722,29 +729,29 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
  is over.</div>
 </td>
 </tr>
-<tr id="i45" class="rowColor">
+<tr id="i46" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#sanityCheckConfigs--">sanityCheckConfigs</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i46" class="altColor">
+<tr id="i47" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#shutdown--">shutdown</a></span>()</code>
 <div class="block">Shutdown the cache.</div>
 </td>
 </tr>
-<tr id="i47" class="rowColor">
+<tr id="i48" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#size--">size</a></span>()</code>
 <div class="block">Returns the total size of the block cache, in bytes.</div>
 </td>
 </tr>
-<tr id="i48" class="altColor">
+<tr id="i49" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#startWriterThreads--">startWriterThreads</a></span>()</code>
 <div class="block">Called by the constructor to start the writer threads.</div>
 </td>
 </tr>
-<tr id="i49" class="rowColor">
+<tr id="i50" class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#stopWriterThreads--">stopWriterThreads</a></span>()</code>
 <div class="block">Only used in test</div>
@@ -1503,10 +1510,10 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheBlockWithWait</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.421">cacheBlockWithWait</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
-                               <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;cachedItem,
-                               boolean&nbsp;inMemory,
-                               boolean&nbsp;wait)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.421">cacheBlockWithWait</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
+                                <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;cachedItem,
+                                boolean&nbsp;inMemory,
+                                boolean&nbsp;wait)</pre>
 <div class="block">Cache the block to ramCache</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1517,13 +1524,25 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 </dl>
 </li>
 </ul>
+<a name="cacheBlockWithWaitInternal-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.Cacheable-boolean-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>cacheBlockWithWaitInternal</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.434">cacheBlockWithWaitInternal</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
+                                        <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;cachedItem,
+                                        boolean&nbsp;inMemory,
+                                        boolean&nbsp;wait)</pre>
+</li>
+</ul>
 <a name="getBlock-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-boolean-boolean-boolean-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getBlock</h4>
-<pre>public&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.491">getBlock</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;key,
+<pre>public&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.484">getBlock</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;key,
                           boolean&nbsp;caching,
                           boolean&nbsp;repeat,
                           boolean&nbsp;updateCacheMetrics)</pre>
@@ -1547,7 +1566,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>blockEvicted</h4>
-<pre>void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.550">blockEvicted</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
+<pre>void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.543">blockEvicted</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
                   <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.BucketEntry</a>&nbsp;bucketEntry,
                   boolean&nbsp;decrementBlockNumber)</pre>
 </li>
@@ -1558,7 +1577,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>evictBlock</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.560">evictBlock</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.553">evictBlock</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#evictBlock-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-">BlockCache</a></code></span></div>
 <div class="block">Evict block from cache.</div>
 <dl>
@@ -1577,7 +1596,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>forceEvict</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.566">forceEvict</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.559">forceEvict</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</pre>
 </li>
 </ul>
 <a name="checkRamCache-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-">
@@ -1586,7 +1605,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>checkRamCache</h4>
-<pre>private&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.RAMQueueEntry</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.595">checkRamCache</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</pre>
+<pre>private&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.RAMQueueEntry</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.588">checkRamCache</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</pre>
 </li>
 </ul>
 <a name="evictBlock-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-boolean-">
@@ -1595,7 +1614,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>evictBlock</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.604">evictBlock</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.597">evictBlock</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
                           boolean&nbsp;deletedBlock)</pre>
 </li>
 </ul>
@@ -1605,7 +1624,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>logStats</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.669">logStats</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.662">logStats</a>()</pre>
 </li>
 </ul>
 <a name="getRealCacheSize--">
@@ -1614,7 +1633,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>getRealCacheSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.695">getRealCacheSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.688">getRealCacheSize</a>()</pre>
 </li>
 </ul>
 <a name="acceptableSize--">
@@ -1623,7 +1642,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>acceptableSize</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.699">acceptableSize</a>()</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.692">acceptableSize</a>()</pre>
 </li>
 </ul>
 <a name="getPartitionSize-float-">
@@ -1632,7 +1651,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>getPartitionSize</h4>
-<pre>long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.704">getPartitionSize</a>(float&nbsp;partitionFactor)</pre>
+<pre>long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.697">getPartitionSize</a>(float&nbsp;partitionFactor)</pre>
 </li>
 </ul>
 <a name="bucketSizesAboveThresholdCount-float-">
@@ -1641,7 +1660,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>bucketSizesAboveThresholdCount</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.711">bucketSizesAboveThresholdCount</a>(float&nbsp;minFactor)</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.704">bucketSizesAboveThresholdCount</a>(float&nbsp;minFactor)</pre>
 <div class="block">Return the count of bucketSizeinfos still need free space</div>
 </li>
 </ul>
@@ -1651,7 +1670,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>freeEntireBuckets</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.733">freeEntireBuckets</a>(int&nbsp;completelyFreeBucketsNeeded)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.726">freeEntireBuckets</a>(int&nbsp;completelyFreeBucketsNeeded)</pre>
 <div class="block">This method will find the buckets that are minimally occupied
  and are not reference counted and will free them completely
  without any constraint on the access times of the elements,
@@ -1669,7 +1688,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>freeSpace</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.761">freeSpace</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.754">freeSpace</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why)</pre>
 <div class="block">Free the space if the used size reaches acceptableSize() or one size block
  couldn't be allocated. When freeing the space, we use the LRU algorithm and
  ensure there must be some blocks evicted</div>
@@ -1685,7 +1704,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>getRAMQueueEntries</h4>
-<pre>static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.RAMQueueEntry</a>&gt;&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1057">getRAMQueueEntries</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.RAMQueueEntry</a>&gt;&nbsp;q,
+<pre>static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.RAMQueueEntry</a>&gt;&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1075">getRAMQueueEntries</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.RAMQueueEntry</a>&gt;&nbsp;q,
                                                           <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.RAMQueueEntry</a>&gt;&nbsp;receptacle)
                                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Blocks until elements available in <code>q</code> then tries to grab as many as possible
@@ -1708,7 +1727,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>persistToFile</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1068">persistToFile</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1086">persistToFile</a>()
                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1722,7 +1741,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>retrieveFromFile</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1090">retrieveFromFile</a>(int[]&nbsp;bucketSizes)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1108">retrieveFromFile</a>(int[]&nbsp;bucketSizes)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                               <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketAllocatorException.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketAllocatorException</a>,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
@@ -1740,7 +1759,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>checkIOErrorIsTolerated</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1142">checkIOErrorIsTolerated</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1160">checkIOErrorIsTolerated</a>()</pre>
 <div class="block">Check whether we tolerate IO error this time. If the duration of IOEngine
  throwing errors exceeds ioErrorsDurationTimeTolerated, we will disable the
  cache</div>
@@ -1752,7 +1771,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>disableCache</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1158">disableCache</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1176">disableCache</a>()</pre>
 <div class="block">Used to shut down the cache -or- turn it off in the case of something broken.</div>
 </li>
 </ul>
@@ -1762,7 +1781,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>join</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1171">join</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1189">join</a>()
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1776,7 +1795,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1177">shutdown</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1195">shutdown</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#shutdown--">BlockCache</a></code></span></div>
 <div class="block">Shutdown the cache.</div>
 <dl>
@@ -1791,7 +1810,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>getStats</h4>
-<pre>public&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/CacheStats.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheStats</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1194">getStats</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/CacheStats.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheStats</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1212">getStats</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#getStats--">BlockCache</a></code></span></div>
 <div class="block">Get the statistics for this block cache.</div>
 <dl>
@@ -1808,7 +1827,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllocator</h4>
-<pre>public&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketAllocator.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketAllocator</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1198">getAllocator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketAllocator.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketAllocator</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1216">getAllocator</a>()</pre>
 </li>
 </ul>
 <a name="heapSize--">
@@ -1817,7 +1836,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>heapSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1203">heapSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1221">heapSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../../org/apache/hadoop/hbase/io/HeapSize.html#heapSize--">heapSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title="interface in org.apache.hadoop.hbase.io">HeapSize</a></code></dd>
@@ -1833,7 +1852,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1208">size</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1226">size</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#size--">BlockCache</a></code></span></div>
 <div class="block">Returns the total size of the block cache, in bytes.</div>
 <dl>
@@ -1850,7 +1869,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentDataSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1213">getCurrentDataSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1231">getCurrentDataSize</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#getCurrentDataSize--">BlockCache</a></code></span></div>
 <div class="block">Returns the occupied size of data blocks, in bytes.</div>
 <dl>
@@ -1867,7 +1886,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>getFreeSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1218">getFreeSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1236">getFreeSize</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#getFreeSize--">BlockCache</a></code></span></div>
 <div class="block">Returns the free size of the block cache, in bytes.</div>
 <dl>
@@ -1884,7 +1903,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>getBlockCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1223">getBlockCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1241">getBlockCount</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#getBlockCount--">BlockCache</a></code></span></div>
 <div class="block">Returns the number of blocks currently cached in the block cache.</div>
 <dl>
@@ -1901,7 +1920,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataBlockCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1228">getDataBlockCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1246">getDataBlockCount</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#getDataBlockCount--">BlockCache</a></code></span></div>
 <div class="block">Returns the number of data blocks currently cached in the block cache.</div>
 <dl>
@@ -1918,7 +1937,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1233">getCurrentSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1251">getCurrentSize</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#getCurrentSize--">BlockCache</a></code></span></div>
 <div class="block">Returns the occupied size of the block cache, in bytes.</div>
 <dl>
@@ -1935,7 +1954,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>evictBlocksByHfileName</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1245">evictBlocksByHfileName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;hfileName)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1263">evictBlocksByHfileName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;hfileName)</pre>
 <div class="block">Evicts all blocks for a specific HFile.
  <p>
  This is used for evict-on-close to remove all blocks of a specific HFile.</div>
@@ -1953,7 +1972,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>stopWriterThreads</h4>
-<pre>void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1533">stopWriterThreads</a>()
+<pre>void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1551">stopWriterThreads</a>()
                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Only used in test</div>
 <dl>
@@ -1968,7 +1987,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>iterator</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&gt;&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1542">iterator</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&gt;&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1560">iterator</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#iterator--" title="class or interface in java.lang">iterator</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&gt;</code></dd>
@@ -1985,7 +2004,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>getBlockCaches</h4>
-<pre>public&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a>[]&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1633">getBlockCaches</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a>[]&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1651">getBlockCaches</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#getBlockCaches--">getBlockCaches</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a></code></dd>
@@ -2000,7 +2019,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>returnBlock</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1638">returnBlock</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1656">returnBlock</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
                         <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;block)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html#returnBlock-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.Cacheable-">BlockCache</a></code></span></div>
 <div class="block">Called when the scanner using the block decides to return the block once its usage
@@ -2024,7 +2043,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>getRefCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1651">getRefCount</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1669">getRefCount</a>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</pre>
 </li>
 </ul>
 <a name="getAcceptableFactor--">
@@ -2033,7 +2052,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>getAcceptableFactor</h4>
-<pre>float&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1659">getAcceptableFactor</a>()</pre>
+<pre>float&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1677">getAcceptableFactor</a>()</pre>
 </li>
 </ul>
 <a name="getMinFactor--">
@@ -2042,7 +2061,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>getMinFactor</h4>
-<pre>float&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1663">getMinFactor</a>()</pre>
+<pre>float&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1681">getMinFactor</a>()</pre>
 </li>
 </ul>
 <a name="getExtraFreeFactor--">
@@ -2051,7 +2070,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>getExtraFreeFactor</h4>
-<pre>float&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1667">getExtraFreeFactor</a>()</pre>
+<pre>float&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1685">getExtraFreeFactor</a>()</pre>
 </li>
 </ul>
 <a name="getSingleFactor--">
@@ -2060,7 +2079,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>getSingleFactor</h4>
-<pre>float&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1671">getSingleFactor</a>()</pre>
+<pre>float&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1689">getSingleFactor</a>()</pre>
 </li>
 </ul>
 <a name="getMultiFactor--">
@@ -2069,7 +2088,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockList">
 <li class="blockList">
 <h4>getMultiFactor</h4>
-<pre>float&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1675">getMultiFactor</a>()</pre>
+<pre>float&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1693">getMultiFactor</a>()</pre>
 </li>
 </ul>
 <a name="getMemoryFactor--">
@@ -2078,7 +2097,7 @@ implements <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockC
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getMemoryFactor</h4>
-<pre>float&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1679">getMemoryFactor</a>()</pre>
+<pre>float&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#line.1697">getMemoryFactor</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/class-use/BucketCache.BucketEntry.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/class-use/BucketCache.BucketEntry.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/class-use/BucketCache.BucketEntry.html
index e145726..965cf37 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/class-use/BucketCache.BucketEntry.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/bucket/class-use/BucketCache.BucketEntry.html
@@ -182,6 +182,13 @@
             <a href="../../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.BucketEntry</a>&nbsp;bucketEntry,
             boolean&nbsp;decrementBlockNumber)</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">BucketCache.WriterThread.</span><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html#putIntoBackingMap-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.bucket.BucketCache.BucketEntry-">putIntoBackingMap</a></span>(<a href="../../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;key,
+                 <a href="../../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.BucketEntry</a>&nbsp;bucketEntry)</code>
+<div class="block">Put the new bucket entry into backingMap.</div>
+</td>
+</tr>
 </tbody>
 </table>
 <table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/BlockCache.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/BlockCache.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/BlockCache.html
index 291e81b..35bd407 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/BlockCache.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/BlockCache.html
@@ -277,6 +277,15 @@
 <td class="colLast"><span class="typeNameLabel">LruBlockCache.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#setVictimCache-org.apache.hadoop.hbase.io.hfile.BlockCache-">setVictimCache</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a>&nbsp;handler)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">BlockCacheUtil.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#shouldReplaceExistingCacheBlock-org.apache.hadoop.hbase.io.hfile.BlockCache-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.Cacheable-">shouldReplaceExistingCacheBlock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a>&nbsp;blockCache,
+                               <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
+                               <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;newBlock)</code>
+<div class="block">Because of the region splitting, it's possible that the split key locate in the middle of a
+ block.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><span class="typeNameLabel">BlockCacheUtil.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#toJSON-org.apache.hadoop.hbase.io.hfile.BlockCache-">toJSON</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a>&nbsp;bc)</code>&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/BlockCacheKey.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/BlockCacheKey.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/BlockCacheKey.html
index 8a6405b..13046bb 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/BlockCacheKey.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/BlockCacheKey.html
@@ -321,6 +321,15 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">BlockCacheUtil.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#shouldReplaceExistingCacheBlock-org.apache.hadoop.hbase.io.hfile.BlockCache-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.Cacheable-">shouldReplaceExistingCacheBlock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a>&nbsp;blockCache,
+                               <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
+                               <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;newBlock)</code>
+<div class="block">Because of the region splitting, it's possible that the split key locate in the middle of a
+ block.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><span class="typeNameLabel">BlockCacheUtil.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#validateBlockAddition-org.apache.hadoop.hbase.io.hfile.Cacheable-org.apache.hadoop.hbase.io.hfile.Cacheable-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-">validateBlockAddition</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;existing,
                      <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;newBlock,
@@ -452,7 +461,7 @@
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">BucketCache.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#cacheBlockWithWait-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.Cacheable-boolean-boolean-">cacheBlockWithWait</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
                   <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;cachedItem,
                   boolean&nbsp;inMemory,
@@ -461,23 +470,30 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">BucketCache.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#cacheBlockWithWaitInternal-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.Cacheable-boolean-boolean-">cacheBlockWithWaitInternal</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
+                          <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;cachedItem,
+                          boolean&nbsp;inMemory,
+                          boolean&nbsp;wait)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.RAMQueueEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.RAMQueueEntry</a></code></td>
 <td class="colLast"><span class="typeNameLabel">BucketCache.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#checkRamCache-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-">checkRamCache</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">BucketCache.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#evictBlock-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-">evictBlock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">BucketCache.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#evictBlock-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-boolean-">evictBlock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
           boolean&nbsp;deletedBlock)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">BucketCache.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#forceEvict-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-">forceEvict</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a></code></td>
 <td class="colLast"><span class="typeNameLabel">BucketCache.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getBlock-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-boolean-boolean-boolean-">getBlock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;key,
         boolean&nbsp;caching,
@@ -486,10 +502,17 @@
 <div class="block">Get the buffer of the block with the specified key.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><span class="typeNameLabel">BucketCache.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#getRefCount-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-">getRefCount</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey)</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">BucketCache.WriterThread.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.WriterThread.html#putIntoBackingMap-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.bucket.BucketCache.BucketEntry-">putIntoBackingMap</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;key,
+                 <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.BucketEntry.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">BucketCache.BucketEntry</a>&nbsp;bucketEntry)</code>
+<div class="block">Put the new bucket entry into backingMap.</div>
+</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">BucketCache.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html#returnBlock-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.Cacheable-">returnBlock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,


[36/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html b/devapidocs/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html
index 77dd431..151b33b 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html
@@ -248,7 +248,8 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 </tr>
 <tr id="i4" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#copyCellIntoMSLAB-org.apache.hadoop.hbase.Cell-">copyCellIntoMSLAB</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#copyCellIntoMSLAB-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">copyCellIntoMSLAB</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
 <tr id="i5" class="rowColor">
 <td class="colFirst"><code>private int</code></td>
@@ -276,9 +277,10 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 </tr>
 <tr id="i10" class="altColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#reinitializeCellSet-int-org.apache.hadoop.hbase.regionserver.KeyValueScanner-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">reinitializeCellSet</a></span>(int&nbsp;numOfCells,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#reinitializeCellSet-int-org.apache.hadoop.hbase.regionserver.KeyValueScanner-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.MemStoreSizing-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">reinitializeCellSet</a></span>(int&nbsp;numOfCells,
                    <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&nbsp;segmentScanner,
                    <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;oldCellSet,
+                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
                    <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</code>&nbsp;</td>
 </tr>
 <tr id="i11" class="rowColor">
@@ -298,7 +300,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compare-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compare</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareRows-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareRows</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#decScannerCount--">decScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#dump-org.slf4j.Logger-">dump</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellLength-org.apache.hadoop.hbase.Cell-">getCellLength</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellsCount--">getCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellSet--">getCellSet</a>, <a hr
 ef="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getDataSize--">getDataSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getHeapSize--">getHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreLAB--">getMemStoreLAB</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreSize--">getMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMinSequenceId--">getMinSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getOffHeapSize--">getOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanner-long-">getScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanners-long-">getScanners</a>, <a href=
 "../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getTimeRangeTracker--">getTimeRangeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#headSet-org.apache.hadoop.hbase.Cell-">headSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#heapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">heapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incMemStoreSize-long-long-long-">incMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incScannerCount--">incScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isEmpty--">isEmpty</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#i
 sTagsPresent--">isTagsPresent</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#iterator--">iterator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#last--">last</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#offHeapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">offHeapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#setCellSet-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.CellSet-">setCellSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#shouldSeek-org.apache.hadoop.hbase.io.TimeRange-long-">shouldSeek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#tailSet-org.apache.hadoop.hbase.Cell-"
 >tailSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compare-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compare</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareAndSetDataSize-long-long-">compareAndSetDataSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareRows-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareRows</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#decScannerCount--">decScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#dump-org.slf4j.Logger-">dump</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellLength-org.apache.hadoop.hbase.Cell-">getCellLength</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellsCo
 unt--">getCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellSet--">getCellSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getDataSize--">getDataSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getHeapSize--">getHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreLAB--">getMemStoreLAB</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreSize--">getMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMinSequenceId--">getMinSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getOffHeapSize--">getOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanner-long-"
 >getScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanners-long-">getScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getTimeRangeTracker--">getTimeRangeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#headSet-org.apache.hadoop.hbase.Cell-">headSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#heapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">heapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incMemStoreSize-long-long-long-">incMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incScannerCount--">incScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">internalAdd</a>, <a href="../../../../../org/ap
 ache/hadoop/hbase/regionserver/Segment.html#isEmpty--">isEmpty</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isTagsPresent--">isTagsPresent</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#iterator--">iterator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#last--">last</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#offHeapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">offHeapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#setCellSet-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.CellSet-">setCellSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#sharedLock--">sharedLock</a>, <a href=".
 ./../../../../org/apache/hadoop/hbase/regionserver/Segment.html#sharedUnlock--">sharedUnlock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#shouldSeek-org.apache.hadoop.hbase.io.TimeRange-long-">shouldSeek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#tailSet-org.apache.hadoop.hbase.Cell-">tailSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">updateMetaInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#waitForUpdates--">waitForUpdates</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -404,7 +406,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockList">
 <li class="blockList">
 <h4>indexEntryOnHeapSize</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.105">indexEntryOnHeapSize</a>(boolean&nbsp;onHeap)</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.108">indexEntryOnHeapSize</a>(boolean&nbsp;onHeap)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOnHeapSize-boolean-">indexEntryOnHeapSize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></code></dd>
@@ -417,7 +419,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockList">
 <li class="blockList">
 <h4>indexEntryOffHeapSize</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.114">indexEntryOffHeapSize</a>(boolean&nbsp;offHeap)</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.117">indexEntryOffHeapSize</a>(boolean&nbsp;offHeap)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOffHeapSize-boolean-">indexEntryOffHeapSize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></code></dd>
@@ -430,7 +432,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockList">
 <li class="blockList">
 <h4>indexEntrySize</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.123">indexEntrySize</a>()</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.126">indexEntrySize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntrySize--">indexEntrySize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></code></dd>
@@ -443,7 +445,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockList">
 <li class="blockList">
 <h4>canBeFlattened</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.128">canBeFlattened</a>()</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.131">canBeFlattened</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html#canBeFlattened--">canBeFlattened</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></dd>
@@ -456,20 +458,21 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockList">
 <li class="blockList">
 <h4>initializeCellSet</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.135">initializeCellSet</a>(int&nbsp;numOfCells,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.138">initializeCellSet</a>(int&nbsp;numOfCells,
                                <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSegmentsIterator</a>&nbsp;iterator,
                                <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</pre>
 </li>
 </ul>
-<a name="reinitializeCellSet-int-org.apache.hadoop.hbase.regionserver.KeyValueScanner-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">
+<a name="reinitializeCellSet-int-org.apache.hadoop.hbase.regionserver.KeyValueScanner-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.MemStoreSizing-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>reinitializeCellSet</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.198">reinitializeCellSet</a>(int&nbsp;numOfCells,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.201">reinitializeCellSet</a>(int&nbsp;numOfCells,
                                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&nbsp;segmentScanner,
                                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;oldCellSet,
+                                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
                                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</pre>
 </li>
 </ul>
@@ -479,7 +482,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockList">
 <li class="blockList">
 <h4>createCellReference</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.254">createCellReference</a>(<a href="../../../../../org/apache/hadoop/hbase/ByteBufferKeyValue.html" title="class in org.apache.hadoop.hbase">ByteBufferKeyValue</a>&nbsp;cell,
+<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.257">createCellReference</a>(<a href="../../../../../org/apache/hadoop/hbase/ByteBufferKeyValue.html" title="class in org.apache.hadoop.hbase">ByteBufferKeyValue</a>&nbsp;cell,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;idxBuffer,
                                 int&nbsp;idxOffset)</pre>
 </li>
@@ -490,7 +493,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockList">
 <li class="blockList">
 <h4>calculateNumberOfChunks</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.266">calculateNumberOfChunks</a>(int&nbsp;numOfCells,
+<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.269">calculateNumberOfChunks</a>(int&nbsp;numOfCells,
                                     int&nbsp;chunkSize)</pre>
 </li>
 </ul>
@@ -500,7 +503,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockList">
 <li class="blockList">
 <h4>useIndexChunks</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver">ChunkCreator.ChunkType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.280">useIndexChunks</a>(int&nbsp;numOfCells)</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver">ChunkCreator.ChunkType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.283">useIndexChunks</a>(int&nbsp;numOfCells)</pre>
 </li>
 </ul>
 <a name="calcNumOfCellsInChunk-int-">
@@ -509,7 +512,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockList">
 <li class="blockList">
 <h4>calcNumOfCellsInChunk</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.296">calcNumOfCellsInChunk</a>(int&nbsp;chunkSize)</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.299">calcNumOfCellsInChunk</a>(int&nbsp;chunkSize)</pre>
 </li>
 </ul>
 <a name="allocIndexChunks-int-">
@@ -518,16 +521,17 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockList">
 <li class="blockList">
 <h4>allocIndexChunks</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Chunk.html" title="class in org.apache.hadoop.hbase.regionserver">Chunk</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.302">allocIndexChunks</a>(int&nbsp;numOfCells)</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Chunk.html" title="class in org.apache.hadoop.hbase.regionserver">Chunk</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.305">allocIndexChunks</a>(int&nbsp;numOfCells)</pre>
 </li>
 </ul>
-<a name="copyCellIntoMSLAB-org.apache.hadoop.hbase.Cell-">
+<a name="copyCellIntoMSLAB-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>copyCellIntoMSLAB</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.318">copyCellIntoMSLAB</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellChunkImmutableSegment.html#line.321">copyCellIntoMSLAB</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+                               <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html b/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html
new file mode 100644
index 0000000..488a90e
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html
@@ -0,0 +1,291 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>CompactingMemStore.InMemoryCompactionRunnable (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="CompactingMemStore.InMemoryCompactionRunnable (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/CompactingMemStore.InMemoryCompactionRunnable.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactionPipeline.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html" target="_top">Frames</a></li>
+<li><a href="CompactingMemStore.InMemoryCompactionRunnable.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.regionserver</div>
+<h2 title="Class CompactingMemStore.InMemoryCompactionRunnable" class="title">Class CompactingMemStore.InMemoryCompactionRunnable</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.regionserver.CompactingMemStore.InMemoryCompactionRunnable</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a></dd>
+</dl>
+<hr>
+<br>
+<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.580">CompactingMemStore.InMemoryCompactionRunnable</a>
+extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></pre>
+<div class="block">The in-memory-flusher thread performs the flush asynchronously.
+ There is at most one thread per memstore instance.
+ It takes the updatesLock exclusively, pushes active into the pipeline, releases updatesLock
+ and compacts the pipeline.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html#InMemoryCompactionRunnable--">InMemoryCompactionRunnable</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<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/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html#run--">run</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="InMemoryCompactionRunnable--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>InMemoryCompactionRunnable</h4>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html#line.580">InMemoryCompactionRunnable</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="run--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>run</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html#line.582">run</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/CompactingMemStore.InMemoryCompactionRunnable.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactionPipeline.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html" target="_top">Frames</a></li>
+<li><a href="CompactingMemStore.InMemoryCompactionRunnable.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html b/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html
deleted file mode 100644
index 0c49f88..0000000
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html
+++ /dev/null
@@ -1,291 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>CompactingMemStore.InMemoryFlushRunnable (Apache HBase 3.0.0-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="CompactingMemStore.InMemoryFlushRunnable (Apache HBase 3.0.0-SNAPSHOT API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-var methods = {"i0":10};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
-var altColor = "altColor";
-var rowColor = "rowColor";
-var tableTab = "tableTab";
-var activeTableTab = "activeTableTab";
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/CompactingMemStore.InMemoryFlushRunnable.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactionPipeline.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html" target="_top">Frames</a></li>
-<li><a href="CompactingMemStore.InMemoryFlushRunnable.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<!-- ======== START OF CLASS DATA ======== -->
-<div class="header">
-<div class="subTitle">org.apache.hadoop.hbase.regionserver</div>
-<h2 title="Class CompactingMemStore.InMemoryFlushRunnable" class="title">Class CompactingMemStore.InMemoryFlushRunnable</h2>
-</div>
-<div class="contentContainer">
-<ul class="inheritance">
-<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
-<li>
-<ul class="inheritance">
-<li>org.apache.hadoop.hbase.regionserver.CompactingMemStore.InMemoryFlushRunnable</li>
-</ul>
-</li>
-</ul>
-<div class="description">
-<ul class="blockList">
-<li class="blockList">
-<dl>
-<dt>All Implemented Interfaces:</dt>
-<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></dd>
-</dl>
-<dl>
-<dt>Enclosing class:</dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">CompactingMemStore</a></dd>
-</dl>
-<hr>
-<br>
-<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.html#line.526">CompactingMemStore.InMemoryFlushRunnable</a>
-extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
-implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></pre>
-<div class="block">The in-memory-flusher thread performs the flush asynchronously.
- There is at most one thread per memstore instance.
- It takes the updatesLock exclusively, pushes active into the pipeline, releases updatesLock
- and compacts the pipeline.</div>
-</li>
-</ul>
-</div>
-<div class="summary">
-<ul class="blockList">
-<li class="blockList">
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.summary">
-<!--   -->
-</a>
-<h3>Constructor Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
-<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier</th>
-<th class="colLast" scope="col">Constructor and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private </code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html#InMemoryFlushRunnable--">InMemoryFlushRunnable</a></span>()</code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ========== METHOD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.summary">
-<!--   -->
-</a>
-<h3>Method Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<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/regionserver/CompactingMemStore.InMemoryFlushRunnable.html#run--">run</a></span>()</code>&nbsp;</td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<div class="details">
-<ul class="blockList">
-<li class="blockList">
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.detail">
-<!--   -->
-</a>
-<h3>Constructor Detail</h3>
-<a name="InMemoryFlushRunnable--">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>InMemoryFlushRunnable</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html#line.526">InMemoryFlushRunnable</a>()</pre>
-</li>
-</ul>
-</li>
-</ul>
-<!-- ============ METHOD DETAIL ========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.detail">
-<!--   -->
-</a>
-<h3>Method Detail</h3>
-<a name="run--">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html#line.529">run</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>
-</dl>
-</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-</div>
-<!-- ========= END OF CLASS DATA ========= -->
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/CompactingMemStore.InMemoryFlushRunnable.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactionPipeline.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html" target="_top">Frames</a></li>
-<li><a href="CompactingMemStore.InMemoryFlushRunnable.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html b/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html
index 5e0b1b0..b9b6f76 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" target="_top">Frames</a></li>
@@ -315,7 +315,7 @@ not permitted.)</div>
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" target="_top">Frames</a></li>


[37/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html b/devapidocs/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html
index 7d20fe1..be0991b 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":9,"i3":9,"i4":6,"i5":10,"i6":9,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":6,"i14":10,"i15":10,"i16":6,"i17":10,"i18":6,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":6,"i25":10,"i26":10};
+var methods = {"i0":10,"i1":10,"i2":9,"i3":9,"i4":10,"i5":9,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":6,"i16":10,"i17":10,"i18":6,"i19":10,"i20":6,"i21":10,"i22":6,"i23":6,"i24":10,"i25":10,"i26":6,"i27":10,"i28":10,"i29":6,"i30":10,"i31":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -141,7 +141,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></code></td>
+<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#active">active</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -238,78 +238,94 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
              <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners)</code>&nbsp;</td>
 </tr>
 <tr id="i4" class="altColor">
-<td class="colFirst"><code>protected abstract void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#checkActiveSize--">checkActiveSize</a></span>()</code>
-<div class="block">Check whether anything need to be done based on the current active set size</div>
-</td>
-</tr>
-<tr id="i5" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#clearSnapshot-long-">clearSnapshot</a></span>(long&nbsp;id)</code>
 <div class="block">The passed snapshot was successfully persisted; it can be let go.</div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#deepCopyIfNeeded-org.apache.hadoop.hbase.Cell-">deepCopyIfNeeded</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
 </tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#doAdd-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">doAdd</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+     <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+     <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
 <tr id="i7" class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#doAddOrUpsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">doAddOrUpsert</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+             long&nbsp;readpoint,
+             <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+             boolean&nbsp;doAdd)</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#doUpsert-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">doUpsert</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+        <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+        long&nbsp;readpoint,
+        <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
+</tr>
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#dump-org.slf4j.Logger-">dump</a></span>(org.slf4j.Logger&nbsp;log)</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#getActive--">getActive</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#getComparator--">getComparator</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>protected org.apache.hadoop.conf.Configuration</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#getConfiguration--">getConfiguration</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#getLowest-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">getLowest</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;a,
          <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;b)</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#getNextRow-org.apache.hadoop.hbase.Cell-java.util.NavigableSet-">getNextRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key,
           <a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;set)</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>protected abstract <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#getSegments--">getSegments</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#getSnapshot--">getSnapshot</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#getSnapshotSize--">getSnapshotSize</a></span>()</code>
 <div class="block">Return the size of the snapshot(s) if any</div>
 </td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>protected abstract long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#heapSize--">heapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;toAdd,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#internalAdd-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+           <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;toAdd,
            boolean&nbsp;mslabUsed,
            <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>protected abstract long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#keySize--">keySize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+                       <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                        boolean&nbsp;forceCloneOfBigCell)</code>
 <div class="block">If the segment has a memory allocator the cell is being cloned to this space, and returned;
  Otherwise the given cell is returned
@@ -317,35 +333,53 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
  When a cell's size is too big (bigger than maxAlloc), it is not allocated on MSLAB.</div>
 </td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i22" class="altColor">
+<td class="colFirst"><code>protected abstract void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#postUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-">postUpdate</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive)</code>
+<div class="block">Issue any post update synchronization and tests</div>
+</td>
+</tr>
+<tr id="i23" class="rowColor">
+<td class="colFirst"><code>protected abstract boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">preUpdate</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+         <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>
+<div class="block">Issue any synchronization and test needed before applying the update</div>
+</td>
+</tr>
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#resetActive--">resetActive</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#setOldestEditTimeToNow--">setOldestEditTimeToNow</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i26" class="altColor">
+<td class="colFirst"><code>protected abstract boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#sizeAddedPreOperation--">sizeAddedPreOperation</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#timeOfOldestEdit--">timeOfOldestEdit</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#toString--">toString</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code>abstract void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#updateLowestUnflushedSequenceIdInWAL-boolean-">updateLowestUnflushedSequenceIdInWAL</a></span>(boolean&nbsp;onlyIfMoreRecent)</code>
 <div class="block">Updates the wal with the lowest sequence id (oldest entry) that is still in memory</div>
 </td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#upsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">upsert</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
       long&nbsp;readpoint,
       <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code>&nbsp;</td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#upsert-java.lang.Iterable-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">upsert</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells,
       long&nbsp;readpoint,
@@ -419,7 +453,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>active</h4>
-<pre>protected volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.50">active</a></pre>
+<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.50">active</a></pre>
 </li>
 </ul>
 <a name="snapshot">
@@ -575,13 +609,93 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 </dl>
 </li>
 </ul>
+<a name="upsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>upsert</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.122">upsert</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+                    long&nbsp;readpoint,
+                    <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
+</li>
+</ul>
+<a name="doAddOrUpsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>doAddOrUpsert</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.126">doAddOrUpsert</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+                           long&nbsp;readpoint,
+                           <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+                           boolean&nbsp;doAdd)</pre>
+</li>
+</ul>
+<a name="doAdd-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>doAdd</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.144">doAdd</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+                   <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
+</li>
+</ul>
+<a name="doUpsert-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>doUpsert</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.162">doUpsert</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+                      <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+                      long&nbsp;readpoint,
+                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
+</li>
+</ul>
+<a name="preUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>preUpdate</h4>
+<pre>protected abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.186">preUpdate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+                                     <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+                                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
+<div class="block">Issue any synchronization and test needed before applying the update</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>currentActive</code> - the segment to be updated</dd>
+<dd><code>cell</code> - the cell to be added</dd>
+<dd><code>memstoreSizing</code> - object to accumulate region size changes</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true iff can proceed with applying the update</dd>
+</dl>
+</li>
+</ul>
+<a name="postUpdate-org.apache.hadoop.hbase.regionserver.MutableSegment-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>postUpdate</h4>
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.193">postUpdate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive)</pre>
+<div class="block">Issue any post update synchronization and tests</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>currentActive</code> - updated segment</dd>
+</dl>
+</li>
+</ul>
 <a name="deepCopyIfNeeded-org.apache.hadoop.hbase.Cell-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>deepCopyIfNeeded</h4>
-<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.122">deepCopyIfNeeded</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.195">deepCopyIfNeeded</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
 </li>
 </ul>
 <a name="upsert-java.lang.Iterable-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
@@ -590,7 +704,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>upsert</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.130">upsert</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.203">upsert</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells,
                    long&nbsp;readpoint,
                    <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#upsert-java.lang.Iterable-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">MemStore</a></code></span></div>
@@ -619,7 +733,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>timeOfOldestEdit</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.140">timeOfOldestEdit</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.213">timeOfOldestEdit</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#timeOfOldestEdit--">timeOfOldestEdit</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStore</a></code></dd>
@@ -634,7 +748,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>clearSnapshot</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.150">clearSnapshot</a>(long&nbsp;id)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.223">clearSnapshot</a>(long&nbsp;id)
                    throws <a href="../../../../../org/apache/hadoop/hbase/exceptions/UnexpectedStateException.html" title="class in org.apache.hadoop.hbase.exceptions">UnexpectedStateException</a></pre>
 <div class="block">The passed snapshot was successfully persisted; it can be let go.</div>
 <dl>
@@ -655,7 +769,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getSnapshotSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.167">getSnapshotSize</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.240">getSnapshotSize</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#getSnapshotSize--">MemStore</a></code></span></div>
 <div class="block">Return the size of the snapshot(s) if any</div>
 <dl>
@@ -672,7 +786,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.172">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.245">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -685,7 +799,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getConfiguration</h4>
-<pre>protected&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.186">getConfiguration</a>()</pre>
+<pre>protected&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.259">getConfiguration</a>()</pre>
 </li>
 </ul>
 <a name="dump-org.slf4j.Logger-">
@@ -694,18 +808,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>dump</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.190">dump</a>(org.slf4j.Logger&nbsp;log)</pre>
-</li>
-</ul>
-<a name="upsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>upsert</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.211">upsert</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
-                    long&nbsp;readpoint,
-                    <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.263">dump</a>(org.slf4j.Logger&nbsp;log)</pre>
 </li>
 </ul>
 <a name="getLowest-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">
@@ -714,7 +817,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getLowest</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.232">getLowest</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;a,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.274">getLowest</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;a,
                          <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;b)</pre>
 </li>
 </ul>
@@ -724,17 +827,18 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getNextRow</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.248">getNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.290">getNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key,
                           <a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;set)</pre>
 </li>
 </ul>
-<a name="maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">
+<a name="maybeCloneWithAllocator-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-boolean-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>maybeCloneWithAllocator</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.278">maybeCloneWithAllocator</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.320">maybeCloneWithAllocator</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+                                     <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                                      boolean&nbsp;forceCloneOfBigCell)</pre>
 <div class="block">If the segment has a memory allocator the cell is being cloned to this space, and returned;
  Otherwise the given cell is returned
@@ -752,24 +856,34 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 </dl>
 </li>
 </ul>
-<a name="internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
+<a name="internalAdd-org.apache.hadoop.hbase.regionserver.MutableSegment-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>internalAdd</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.291">internalAdd</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;toAdd,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.334">internalAdd</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
+                         <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;toAdd,
                          boolean&nbsp;mslabUsed,
                          <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 </li>
 </ul>
+<a name="sizeAddedPreOperation--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>sizeAddedPreOperation</h4>
+<pre>protected abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.341">sizeAddedPreOperation</a>()</pre>
+</li>
+</ul>
 <a name="setOldestEditTimeToNow--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>setOldestEditTimeToNow</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.297">setOldestEditTimeToNow</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.343">setOldestEditTimeToNow</a>()</pre>
 </li>
 </ul>
 <a name="keySize--">
@@ -778,7 +892,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>keySize</h4>
-<pre>protected abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.306">keySize</a>()</pre>
+<pre>protected abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.352">keySize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The total size of cells in this memstore. We will not consider cells in the snapshot</dd>
@@ -791,7 +905,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>heapSize</h4>
-<pre>protected abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.312">heapSize</a>()</pre>
+<pre>protected abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.358">heapSize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The total heap size of cells in this memstore. We will not consider cells in the
@@ -805,7 +919,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getComparator</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.314">getComparator</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.360">getComparator</a>()</pre>
 </li>
 </ul>
 <a name="getActive--">
@@ -814,7 +928,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getActive</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.319">getActive</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.365">getActive</a>()</pre>
 </li>
 </ul>
 <a name="getSnapshot--">
@@ -823,17 +937,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getSnapshot</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.324">getSnapshot</a>()</pre>
-</li>
-</ul>
-<a name="checkActiveSize--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>checkActiveSize</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.331">checkActiveSize</a>()</pre>
-<div class="block">Check whether anything need to be done based on the current active set size</div>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.370">getSnapshot</a>()</pre>
 </li>
 </ul>
 <a name="getSegments--">
@@ -842,7 +946,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getSegments</h4>
-<pre>protected abstract&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.336">getSegments</a>()
+<pre>protected abstract&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/AbstractMemStore.html#line.377">getSegments</a>()
                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html b/devapidocs/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html
index 582d5be..8f25e59 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html
@@ -230,7 +230,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compare-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compare</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareRows-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareRows</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#decScannerCount--">decScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#dump-org.slf4j.Logger-">dump</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellLength-org.apache.hadoop.hbase.Cell-">getCellLength</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellsCount--">getCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellSet--">getCellSet</a>, <a hr
 ef="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getDataSize--">getDataSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getHeapSize--">getHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreLAB--">getMemStoreLAB</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreSize--">getMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMinSequenceId--">getMinSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getOffHeapSize--">getOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanner-long-">getScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanners-long-">getScanners</a>, <a href=
 "../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getTimeRangeTracker--">getTimeRangeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#headSet-org.apache.hadoop.hbase.Cell-">headSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#heapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">heapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incMemStoreSize-long-long-long-">incMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incScannerCount--">incScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOffHeapSize-boolean-">indexEntryOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOnHeapSize-boolean-">indexEntryOnHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop
 .hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isEmpty--">isEmpty</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isTagsPresent--">isTagsPresent</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#iterator--">iterator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#last--">last</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#offHeapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">offHeapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#setCellSet-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.CellSet-">setCellSe
 t</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#shouldSeek-org.apache.hadoop.hbase.io.TimeRange-long-">shouldSeek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#tailSet-org.apache.hadoop.hbase.Cell-">tailSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compare-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compare</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareAndSetDataSize-long-long-">compareAndSetDataSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareRows-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareRows</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#decScannerCount--">decScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#dump-org.slf4j.Logger-">dump</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellLength-org.apache.hadoop.hbase.Cell-">getCellLength</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellsCo
 unt--">getCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellSet--">getCellSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getDataSize--">getDataSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getHeapSize--">getHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreLAB--">getMemStoreLAB</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreSize--">getMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMinSequenceId--">getMinSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getOffHeapSize--">getOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanner-long-"
 >getScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanners-long-">getScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getTimeRangeTracker--">getTimeRangeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#headSet-org.apache.hadoop.hbase.Cell-">headSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#heapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">heapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incMemStoreSize-long-long-long-">incMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incScannerCount--">incScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOffHeapSize-boolean-">indexEntryOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOnHeapSize-bool
 ean-">indexEntryOnHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">internalAdd</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isEmpty--">isEmpty</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isTagsPresent--">isTagsPresent</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#iterator--">iterator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#last--">last</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#offHeapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">offHeapSizeChange</a>, <a href="../../../../../org/apache/hadoop/h
 base/regionserver/Segment.html#setCellSet-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.CellSet-">setCellSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#sharedLock--">sharedLock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#sharedUnlock--">sharedUnlock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#shouldSeek-org.apache.hadoop.hbase.io.TimeRange-long-">shouldSeek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#tailSet-org.apache.hadoop.hbase.Cell-">tailSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">updateMetaInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbas
 e.regionserver.MemStoreSizing-">updateMetaInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#waitForUpdates--">waitForUpdates</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.html b/devapidocs/org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.html
index 19dfafa..0ade15a 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.html
@@ -202,7 +202,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <tr class="rowColor">
 <td class="colFirst"><code>protected </code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.html#CellArrayImmutableSegment-org.apache.hadoop.hbase.regionserver.CSLMImmutableSegment-org.apache.hadoop.hbase.regionserver.MemStoreSizing-org.apache.hadoop.hbase.regionserver.MemStoreCompactionStrategy.Action-">CellArrayImmutableSegment</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">CSLMImmutableSegment</a>&nbsp;segment,
-                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;mss,
                          <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</code>
 <div class="block">------------------------------------------------------------------------
  C-tor to be used when new CellChunkImmutableSegment is built as a result of flattening
@@ -259,7 +259,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compare-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compare</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareRows-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareRows</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#decScannerCount--">decScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#dump-org.slf4j.Logger-">dump</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellLength-org.apache.hadoop.hbase.Cell-">getCellLength</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellsCount--">getCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellSet--">getCellSet</a>, <a hr
 ef="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getDataSize--">getDataSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getHeapSize--">getHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreLAB--">getMemStoreLAB</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreSize--">getMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMinSequenceId--">getMinSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getOffHeapSize--">getOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanner-long-">getScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanners-long-">getScanners</a>, <a href=
 "../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getTimeRangeTracker--">getTimeRangeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#headSet-org.apache.hadoop.hbase.Cell-">headSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#heapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">heapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incMemStoreSize-long-long-long-">incMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incScannerCount--">incScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOffHeapSize-boolean-">indexEntryOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOnHeapSize-boolean-">indexEntryOnHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop
 .hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">internalAdd</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isEmpty--">isEmpty</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isTagsPresent--">isTagsPresent</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#iterator--">iterator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#last--">last</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#offHeapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">offHeapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#setCellSet-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.CellSet-">setCellSe
 t</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#shouldSeek-org.apache.hadoop.hbase.io.TimeRange-long-">shouldSeek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#tailSet-org.apache.hadoop.hbase.Cell-">tailSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">updateMetaInfo</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compare-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compare</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareAndSetDataSize-long-long-">compareAndSetDataSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#compareRows-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-">compareRows</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#decScannerCount--">decScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#dump-org.slf4j.Logger-">dump</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellLength-org.apache.hadoop.hbase.Cell-">getCellLength</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellsCo
 unt--">getCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getCellSet--">getCellSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getDataSize--">getDataSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getHeapSize--">getHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreLAB--">getMemStoreLAB</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMemStoreSize--">getMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getMinSequenceId--">getMinSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getOffHeapSize--">getOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanner-long-"
 >getScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getScanners-long-">getScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#getTimeRangeTracker--">getTimeRangeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#headSet-org.apache.hadoop.hbase.Cell-">headSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#heapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">heapSizeChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incMemStoreSize-long-long-long-">incMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#incScannerCount--">incScannerCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOffHeapSize-boolean-">indexEntryOffHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntryOnHeapSize-bool
 ean-">indexEntryOnHeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#internalAdd-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">internalAdd</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isEmpty--">isEmpty</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#isTagsPresent--">isTagsPresent</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#iterator--">iterator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#last--">last</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#maybeCloneWithAllocator-org.apache.hadoop.hbase.Cell-boolean-">maybeCloneWithAllocator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#offHeapSizeChange-org.apache.hadoop.hbase.Cell-boolean-">offHeapSizeChange</a>, <a href="../../../../../org/apache/hadoop/h
 base/regionserver/Segment.html#setCellSet-org.apache.hadoop.hbase.regionserver.CellSet-org.apache.hadoop.hbase.regionserver.CellSet-">setCellSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#sharedLock--">sharedLock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#sharedUnlock--">sharedUnlock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#shouldSeek-org.apache.hadoop.hbase.io.TimeRange-long-">shouldSeek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#tailSet-org.apache.hadoop.hbase.Cell-">tailSet</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-boolean-org.apache.hadoop.hbase.regionserver.MemStoreSizing-boolean-">updateMetaInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#updateMetaInfo-org.apache.hadoop.hbase.Cell-boolean-org.apache.hadoop.hbas
 e.regionserver.MemStoreSizing-">updateMetaInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#waitForUpdates--">waitForUpdates</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -330,7 +330,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <li class="blockList">
 <h4>CellArrayImmutableSegment</h4>
 <pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.html#line.58">CellArrayImmutableSegment</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/CSLMImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">CSLMImmutableSegment</a>&nbsp;segment,
-                                    <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
+                                    <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;mss,
                                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</pre>
 <div class="block">------------------------------------------------------------------------
  C-tor to be used when new CellChunkImmutableSegment is built as a result of flattening
@@ -352,7 +352,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockList">
 <li class="blockList">
 <h4>indexEntrySize</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.html#line.75">indexEntrySize</a>()</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.html#line.76">indexEntrySize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html#indexEntrySize--">indexEntrySize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a></code></dd>
@@ -365,7 +365,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockList">
 <li class="blockList">
 <h4>canBeFlattened</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.html#line.80">canBeFlattened</a>()</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.html#line.81">canBeFlattened</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html#canBeFlattened--">canBeFlattened</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">ImmutableSegment</a></code></dd>
@@ -378,7 +378,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockList">
 <li class="blockList">
 <h4>initializeCellSet</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.html#line.87">initializeCellSet</a>(int&nbsp;numOfCells,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.html#line.88">initializeCellSet</a>(int&nbsp;numOfCells,
                                <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSegmentsIterator.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSegmentsIterator</a>&nbsp;iterator,
                                <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</pre>
 </li>
@@ -389,7 +389,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableSe
 <ul class="blockListLast">
 <li class="blockList">
 <h4>reinitializeCellSet</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.html#line.137">reinitializeCellSet</a>(int&nbsp;numOfCells,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/CellArrayImmutableSegment.html#line.138">reinitializeCellSet</a>(int&nbsp;numOfCells,
                                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&nbsp;segmentScanner,
                                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSet</a>&nbsp;oldCellSet,
                                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver">MemStoreCompactionStrategy.Action</a>&nbsp;action)</pre>


[18/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-tree.html
index f824378..4814bd4 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-tree.html
@@ -86,6 +86,7 @@
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">BlockCacheTmplImpl</span></a> (implements org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">BlockCacheTmpl.Intf</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">BlockCacheViewTmplImpl</span></a> (implements org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">BlockCacheViewTmpl.Intf</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">RegionListTmplImpl</span></a> (implements org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">RegionListTmpl.Intf</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">ReplicationStatusTmplImpl</span></a> (implements org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.Intf</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">RSStatusTmplImpl</span></a> (implements org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl.Intf</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">ServerMetricsTmplImpl</span></a> (implements org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">ServerMetricsTmpl.Intf</a>)</li>
 </ul>
@@ -95,6 +96,7 @@
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">BlockCacheTmpl</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">BlockCacheViewTmpl</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">RegionListTmpl</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">ReplicationStatusTmpl</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">RSStatusTmpl</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">ServerMetricsTmpl</span></a></li>
 </ul>
@@ -104,6 +106,7 @@
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">BlockCacheTmpl.ImplData</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">BlockCacheViewTmpl.ImplData</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">RegionListTmpl.ImplData</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">ReplicationStatusTmpl.ImplData</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">RSStatusTmpl.ImplData</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">ServerMetricsTmpl.ImplData</span></a></li>
 </ul>
@@ -118,6 +121,7 @@
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">BlockCacheTmpl.Intf</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">BlockCacheViewTmpl.Intf</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">RegionListTmpl.Intf</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">ReplicationStatusTmpl.Intf</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">RSStatusTmpl.Intf</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">ServerMetricsTmpl.Intf</span></a></li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-use.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-use.html
index 78ba6e0..4814761 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-use.html
@@ -117,6 +117,12 @@
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/class-use/RegionListTmpl.Intf.html#org.apache.hadoop.hbase.tmpl.regionserver">RegionListTmpl.Intf</a>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.ImplData.html#org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.Intf.html#org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.Intf</a>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/class-use/RSStatusTmpl.html#org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;</td>
 </tr>
 <tr class="rowColor">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
index d61aa1c..9894900 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -533,14 +533,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index bcb1724..c6caa9b 100644
--- a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -191,8 +191,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/RegionGroupingProvider.Strategies.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">RegionGroupingProvider.Strategies</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.Providers.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">WALFactory.Providers</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/RegionGroupingProvider.Strategies.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">RegionGroupingProvider.Strategies</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/overview-tree.html b/devapidocs/overview-tree.html
index 27b4591..8373e3e 100644
--- a/devapidocs/overview-tree.html
+++ b/devapidocs/overview-tree.html
@@ -434,6 +434,7 @@
 <li type="circle">org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.master"><span class="typeNameLink">MasterStatusTmplImpl</span></a> (implements org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl.Intf</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">RegionListTmplImpl</span></a> (implements org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">RegionListTmpl.Intf</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.master"><span class="typeNameLink">RegionServerListTmplImpl</span></a> (implements org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.master">RegionServerListTmpl.Intf</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">ReplicationStatusTmplImpl</span></a> (implements org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.Intf</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/RSGroupListTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.master"><span class="typeNameLink">RSGroupListTmplImpl</span></a> (implements org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/RSGroupListTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.master">RSGroupListTmpl.Intf</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">RSStatusTmplImpl</span></a> (implements org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl.Intf</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">ServerMetricsTmplImpl</span></a> (implements org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">ServerMetricsTmpl.Intf</a>)</li>
@@ -448,6 +449,7 @@
 <li type="circle">org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master"><span class="typeNameLink">MasterStatusTmpl</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">RegionListTmpl</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master"><span class="typeNameLink">RegionServerListTmpl</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">ReplicationStatusTmpl</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/RSGroupListTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master"><span class="typeNameLink">RSGroupListTmpl</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">RSStatusTmpl</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">ServerMetricsTmpl</span></a></li>
@@ -462,6 +464,7 @@
 <li type="circle">org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master"><span class="typeNameLink">MasterStatusTmpl.ImplData</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">RegionListTmpl.ImplData</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master"><span class="typeNameLink">RegionServerListTmpl.ImplData</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">ReplicationStatusTmpl.ImplData</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/RSGroupListTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master"><span class="typeNameLink">RSGroupListTmpl.ImplData</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">RSStatusTmpl.ImplData</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">ServerMetricsTmpl.ImplData</span></a></li>
@@ -1125,7 +1128,7 @@
 <li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/CommonFSUtils.StreamCapabilities.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">CommonFSUtils.StreamCapabilities</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.crypto.aes.<a href="org/apache/hadoop/hbase/io/crypto/aes/CommonsCryptoAESDecryptor.html" title="class in org.apache.hadoop.hbase.io.crypto.aes"><span class="typeNameLink">CommonsCryptoAESDecryptor</span></a> (implements org.apache.hadoop.hbase.io.crypto.<a href="org/apache/hadoop/hbase/io/crypto/Decryptor.html" title="interface in org.apache.hadoop.hbase.io.crypto">Decryptor</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.io.crypto.aes.<a href="org/apache/hadoop/hbase/io/crypto/aes/CommonsCryptoAESEncryptor.html" title="class in org.apache.hadoop.hbase.io.crypto.aes"><span class="typeNameLink">CommonsCryptoAESEncryptor</span></a> (implements org.apache.hadoop.hbase.io.crypto.<a href="org/apache/hadoop/hbase/io/crypto/Encryptor.html" title="interface in org.apache.hadoop.hbase.io.crypto">Encryptor</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.InMemoryFlushRunnable</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.InMemoryCompactionRunnable</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.compactions.<a href="org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html" title="class in org.apache.hadoop.hbase.regionserver.compactions"><span class="typeNameLink">CompactionConfiguration</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.compactions.<a href="org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions"><span class="typeNameLink">CompactionContext</span></a>
 <ul>
@@ -3099,6 +3102,8 @@
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceFactory.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSourceFactory</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSourceManager</span></a> (implements org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationListener.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationListener</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALActionListener.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSourceWALActionListener</span></a> (implements org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationStatus</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.ReplicationStatusBuilder.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationStatus.ReplicationStatusBuilder</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationStorageFactory.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">ReplicationStorageFactory</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSyncUp.DummyServer.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSyncUp.DummyServer</span></a> (implements org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationThrottler.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationThrottler</span></a></li>
@@ -4318,6 +4323,7 @@
 <li type="circle">org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.master"><span class="typeNameLink">MasterStatusTmpl.Intf</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">RegionListTmpl.Intf</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.master"><span class="typeNameLink">RegionServerListTmpl.Intf</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">ReplicationStatusTmpl.Intf</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/RSGroupListTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.master"><span class="typeNameLink">RSGroupListTmpl.Intf</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">RSStatusTmpl.Intf</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">ServerMetricsTmpl.Intf</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
index c4383f4..5bd42ce 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -16,11 +16,11 @@
 <span class="sourceLineNo">008</span>@InterfaceAudience.Private<a name="line.8"></a>
 <span class="sourceLineNo">009</span>public class Version {<a name="line.9"></a>
 <span class="sourceLineNo">010</span>  public static final String version = "3.0.0-SNAPSHOT";<a name="line.10"></a>
-<span class="sourceLineNo">011</span>  public static final String revision = "34e23fe425e62f240a65c435d41adfbbe211522d";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "0f23784182ab88649de340d75804e0ff20dcd0fc";<a name="line.11"></a>
 <span class="sourceLineNo">012</span>  public static final String user = "jenkins";<a name="line.12"></a>
-<span class="sourceLineNo">013</span>  public static final String date = "Sat Jun 30 17:13:05 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Tue Jul  3 19:56:40 UTC 2018";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "git://jenkins-websites1.apache.org/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String srcChecksum = "347800161f61d858e14faba963857be6";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "2d59bf0d31a96d5e7e8ecd09c2fa180c";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 


[31/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html
index db9b75d..8c494308 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html
@@ -3142,7 +3142,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>closeLock</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1434">closeLock</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1437">closeLock</a></pre>
 </li>
 </ul>
 <a name="MEMSTORE_PERIODIC_FLUSH_INTERVAL">
@@ -3151,7 +3151,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>MEMSTORE_PERIODIC_FLUSH_INTERVAL</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1437">MEMSTORE_PERIODIC_FLUSH_INTERVAL</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1440">MEMSTORE_PERIODIC_FLUSH_INTERVAL</a></pre>
 <div class="block">Conf key for the periodic flush interval</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3165,7 +3165,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_CACHE_FLUSH_INTERVAL</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1440">DEFAULT_CACHE_FLUSH_INTERVAL</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1443">DEFAULT_CACHE_FLUSH_INTERVAL</a></pre>
 <div class="block">Default interval for the memstore flush</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3179,7 +3179,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>SYSTEM_CACHE_FLUSH_INTERVAL</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1442">SYSTEM_CACHE_FLUSH_INTERVAL</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1445">SYSTEM_CACHE_FLUSH_INTERVAL</a></pre>
 <div class="block">Default interval for System tables memstore flush</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3193,7 +3193,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>MEMSTORE_FLUSH_PER_CHANGES</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1445">MEMSTORE_FLUSH_PER_CHANGES</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1448">MEMSTORE_FLUSH_PER_CHANGES</a></pre>
 <div class="block">Conf key to force a flush if there are already enough changes for one region in memstore</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3207,7 +3207,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_FLUSH_PER_CHANGES</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1447">DEFAULT_FLUSH_PER_CHANGES</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1450">DEFAULT_FLUSH_PER_CHANGES</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HRegion.DEFAULT_FLUSH_PER_CHANGES">Constant Field Values</a></dd>
@@ -3220,7 +3220,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>MAX_FLUSH_PER_CHANGES</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1452">MAX_FLUSH_PER_CHANGES</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1455">MAX_FLUSH_PER_CHANGES</a></pre>
 <div class="block">The following MAX_FLUSH_PER_CHANGES is large enough because each KeyValue has 20+ bytes
  overhead. Therefore, even 1G empty KVs occupy at least 20GB memstore size for a single region</div>
 <dl>
@@ -3235,7 +3235,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>FOR_UNIT_TESTS_ONLY</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2909">FOR_UNIT_TESTS_ONLY</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2915">FOR_UNIT_TESTS_ONLY</a></pre>
 <div class="block">Row needed by below method.</div>
 </li>
 </ul>
@@ -3245,7 +3245,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>FIXED_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.8018">FIXED_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.8022">FIXED_OVERHEAD</a></pre>
 </li>
 </ul>
 <a name="DEEP_OVERHEAD">
@@ -3254,7 +3254,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>DEEP_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.8035">DEEP_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.8039">DEEP_OVERHEAD</a></pre>
 </li>
 </ul>
 <a name="MOCKED_LIST">
@@ -3263,7 +3263,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MOCKED_LIST</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.8430">MOCKED_LIST</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.8434">MOCKED_LIST</a></pre>
 <div class="block">A mocked list implementation - discards all updates.</div>
 </li>
 </ul>
@@ -3434,7 +3434,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>initializeStores</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1005">initializeStores</a>(<a href="../../../../../org/apache/hadoop/hbase/util/CancelableProgressable.html" title="interface in org.apache.hadoop.hbase.util">CancelableProgressable</a>&nbsp;reporter,
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1008">initializeStores</a>(<a href="../../../../../org/apache/hadoop/hbase/util/CancelableProgressable.html" title="interface in org.apache.hadoop.hbase.util">CancelableProgressable</a>&nbsp;reporter,
                               <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Open all Stores.</div>
@@ -3455,7 +3455,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>initializeWarmup</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1079">initializeWarmup</a>(<a href="../../../../../org/apache/hadoop/hbase/util/CancelableProgressable.html" title="interface in org.apache.hadoop.hbase.util">CancelableProgressable</a>&nbsp;reporter)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1082">initializeWarmup</a>(<a href="../../../../../org/apache/hadoop/hbase/util/CancelableProgressable.html" title="interface in org.apache.hadoop.hbase.util">CancelableProgressable</a>&nbsp;reporter)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -3469,7 +3469,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreFiles</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1093">getStoreFiles</a>()</pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1096">getStoreFiles</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Map of StoreFiles by column family</dd>
@@ -3482,7 +3482,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>writeRegionOpenMarker</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1110">writeRegionOpenMarker</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1113">writeRegionOpenMarker</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
                                      long&nbsp;openSeqId)
                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -3497,7 +3497,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>writeRegionCloseMarker</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1119">writeRegionCloseMarker</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1122">writeRegionCloseMarker</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal)
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -3511,7 +3511,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>hasReferences</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1139">hasReferences</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1142">hasReferences</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if this region has references.</dd>
@@ -3524,7 +3524,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>blockUpdates</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1143">blockUpdates</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1146">blockUpdates</a>()</pre>
 </li>
 </ul>
 <a name="unblockUpdates--">
@@ -3533,7 +3533,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>unblockUpdates</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1147">unblockUpdates</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1150">unblockUpdates</a>()</pre>
 </li>
 </ul>
 <a name="getHDFSBlocksDistribution--">
@@ -3542,7 +3542,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getHDFSBlocksDistribution</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1151">getHDFSBlocksDistribution</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1154">getHDFSBlocksDistribution</a>()</pre>
 </li>
 </ul>
 <a name="computeHDFSBlocksDistribution-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.RegionInfo-">
@@ -3551,7 +3551,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>computeHDFSBlocksDistribution</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1167">computeHDFSBlocksDistribution</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1170">computeHDFSBlocksDistribution</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                                    <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;tableDescriptor,
                                                                    <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)
                                                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -3574,7 +3574,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>computeHDFSBlocksDistribution</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1182">computeHDFSBlocksDistribution</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1185">computeHDFSBlocksDistribution</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                                    <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;tableDescriptor,
                                                                    <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
                                                                    org.apache.hadoop.fs.Path&nbsp;tablePath)
@@ -3599,7 +3599,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>incMemStoreSize</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1221">incMemStoreSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;mss)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1224">incMemStoreSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;mss)</pre>
 <div class="block">Increase the size of mem store in this region and the size of global mem
  store</div>
 </li>
@@ -3610,7 +3610,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>incMemStoreSize</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1225">incMemStoreSize</a>(long&nbsp;dataSizeDelta,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1228">incMemStoreSize</a>(long&nbsp;dataSizeDelta,
                      long&nbsp;heapSizeDelta,
                      long&nbsp;offHeapSizeDelta)</pre>
 </li>
@@ -3621,7 +3621,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>decrMemStoreSize</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1234">decrMemStoreSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;mss)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1237">decrMemStoreSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;mss)</pre>
 </li>
 </ul>
 <a name="decrMemStoreSize-long-long-long-">
@@ -3630,7 +3630,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>decrMemStoreSize</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1238">decrMemStoreSize</a>(long&nbsp;dataSizeDelta,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1241">decrMemStoreSize</a>(long&nbsp;dataSizeDelta,
                       long&nbsp;heapSizeDelta,
                       long&nbsp;offHeapSizeDelta)</pre>
 </li>
@@ -3641,7 +3641,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>checkNegativeMemStoreDataSize</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1247">checkNegativeMemStoreDataSize</a>(long&nbsp;memStoreDataSize,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1250">checkNegativeMemStoreDataSize</a>(long&nbsp;memStoreDataSize,
                                            long&nbsp;delta)</pre>
 </li>
 </ul>
@@ -3651,7 +3651,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionInfo</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1258">getRegionInfo</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1261">getRegionInfo</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getRegionInfo--">getRegionInfo</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3666,7 +3666,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionServerServices</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1266">getRegionServerServices</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionServerServices</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1269">getRegionServerServices</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Instance of <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html" title="interface in org.apache.hadoop.hbase.regionserver"><code>RegionServerServices</code></a> used by this HRegion.
@@ -3680,7 +3680,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getReadRequestsCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1271">getReadRequestsCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1274">getReadRequestsCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getReadRequestsCount--">getReadRequestsCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3695,7 +3695,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getCpRequestsCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1276">getCpRequestsCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1279">getCpRequestsCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getCpRequestsCount--">getCpRequestsCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3710,7 +3710,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getFilteredReadRequestsCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1281">getFilteredReadRequestsCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1284">getFilteredReadRequestsCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getFilteredReadRequestsCount--">getFilteredReadRequestsCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3725,7 +3725,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getWriteRequestsCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1286">getWriteRequestsCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1289">getWriteRequestsCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getWriteRequestsCount--">getWriteRequestsCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3740,7 +3740,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getMemStoreDataSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1291">getMemStoreDataSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1294">getMemStoreDataSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getMemStoreDataSize--">getMemStoreDataSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3757,7 +3757,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getMemStoreHeapSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1296">getMemStoreHeapSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1299">getMemStoreHeapSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getMemStoreHeapSize--">getMemStoreHeapSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3774,7 +3774,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getMemStoreOffHeapSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1301">getMemStoreOffHeapSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1304">getMemStoreOffHeapSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getMemStoreOffHeapSize--">getMemStoreOffHeapSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3791,7 +3791,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionServicesForStores</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1306">getRegionServicesForStores</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1309">getRegionServicesForStores</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>store services for this region, to access services required by store level needs</dd>
@@ -3804,7 +3804,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumMutationsWithoutWAL</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1311">getNumMutationsWithoutWAL</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1314">getNumMutationsWithoutWAL</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getNumMutationsWithoutWAL--">getNumMutationsWithoutWAL</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3819,7 +3819,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataInMemoryWithoutWAL</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1316">getDataInMemoryWithoutWAL</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1319">getDataInMemoryWithoutWAL</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getDataInMemoryWithoutWAL--">getDataInMemoryWithoutWAL</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3834,7 +3834,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getBlockedRequestsCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1321">getBlockedRequestsCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1324">getBlockedRequestsCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getBlockedRequestsCount--">getBlockedRequestsCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3849,7 +3849,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getCheckAndMutateChecksPassed</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1326">getCheckAndMutateChecksPassed</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1329">getCheckAndMutateChecksPassed</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getCheckAndMutateChecksPassed--">getCheckAndMutateChecksPassed</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3864,7 +3864,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getCheckAndMutateChecksFailed</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1331">getCheckAndMutateChecksFailed</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1334">getCheckAndMutateChecksFailed</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getCheckAndMutateChecksFailed--">getCheckAndMutateChecksFailed</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3879,7 +3879,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetrics</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegion.html" title="class in org.apache.hadoop.hbase.regionserver">MetricsRegion</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1338">getMetrics</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegion.html" title="class in org.apache.hadoop.hbase.regionserver">MetricsRegion</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1341">getMetrics</a>()</pre>
 </li>
 </ul>
 <a name="isClosed--">
@@ -3888,7 +3888,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>isClosed</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1343">isClosed</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1346">isClosed</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#isClosed--">isClosed</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3903,7 +3903,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>isClosing</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1348">isClosing</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1351">isClosing</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#isClosing--">isClosing</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3918,7 +3918,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>isReadOnly</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1353">isReadOnly</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1356">isReadOnly</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#isReadOnly--">isReadOnly</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3933,7 +3933,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>isAvailable</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1358">isAvailable</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1361">isAvailable</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#isAvailable--">isAvailable</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3948,7 +3948,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>isSplittable</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1363">isSplittable</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1366">isSplittable</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#isSplittable--">isSplittable</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3963,7 +3963,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>isMergeable</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1368">isMergeable</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1371">isMergeable</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#isMergeable--">isMergeable</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -3978,7 +3978,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>areWritesEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1383">areWritesEnabled</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1386">areWritesEnabled</a>()</pre>
 </li>
 </ul>
 <a name="getMVCC--">
@@ -3987,7 +3987,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getMVCC</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1390">getMVCC</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1393">getMVCC</a>()</pre>
 </li>
 </ul>
 <a name="getMaxFlushedSeqId--">
@@ -3996,7 +3996,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxFlushedSeqId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1395">getMaxFlushedSeqId</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1398">getMaxFlushedSeqId</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getMaxFlushedSeqId--">getMaxFlushedSeqId</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -4012,7 +4012,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getReadPoint</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1402">getReadPoint</a>(<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client">IsolationLevel</a>&nbsp;isolationLevel)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1405">getReadPoint</a>(<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client">IsolationLevel</a>&nbsp;isolationLevel)</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>readpoint considering given IsolationLevel. Pass <code>null</code> for default</dd>
@@ -4025,7 +4025,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>isLoadingCfsOnDemandDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1410">isLoadingCfsOnDemandDefault</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1413">isLoadingCfsOnDemandDefault</a>()</pre>
 </li>
 </ul>
 <a name="close--">
@@ -4034,7 +4034,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1430">close</a>()
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1433">close</a>()
                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Close down this HRegion.  Flush the cache, shut down each HStore, don't
  service any more calls.
@@ -4060,7 +4060,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1471">close</a>(boolean&nbsp;abort)
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1474">close</a>(boolean&nbsp;abort)
                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Close down this HRegion.  Flush the cache unless abort parameter is true,
  Shut down each HStore, don't service any more calls.
@@ -4088,7 +4088,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>setClosing</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1492">setClosing</a>(boolean&nbsp;closing)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1495">setClosing</a>(boolean&nbsp;closing)</pre>
 <div class="block">Exposed for some very specific unit tests.</div>
 </li>
 </ul>
@@ -4098,7 +4098,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>setTimeoutForWriteLock</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1502">setTimeoutForWriteLock</a>(long&nbsp;timeoutForWriteLock)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1505">setTimeoutForWriteLock</a>(long&nbsp;timeoutForWriteLock)</pre>
 <div class="block">The <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#doClose-boolean-org.apache.hadoop.hbase.monitoring.MonitoredTask-"><code>doClose(boolean, org.apache.hadoop.hbase.monitoring.MonitoredTask)</code></a> will block forever if someone tries proving the dead lock via the unit test.
  Instead of blocking, the <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#doClose-boolean-org.apache.hadoop.hbase.monitoring.MonitoredTask-"><code>doClose(boolean, org.apache.hadoop.hbase.monitoring.MonitoredTask)</code></a> will throw exception if you set the timeout.</div>
 <dl>
@@ -4113,7 +4113,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>doClose</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1509">doClose</a>(boolean&nbsp;abort,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1512">doClose</a>(boolean&nbsp;abort,
                                              <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -4128,7 +4128,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForFlushesAndCompactions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1691">waitForFlushesAndCompactions</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1697">waitForFlushesAndCompactions</a>()</pre>
 <div class="block">Wait for all current flushes and compactions of the region to complete</div>
 </li>
 </ul>
@@ -4138,7 +4138,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForFlushes</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1723">waitForFlushes</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1729">waitForFlushes</a>()</pre>
 <div class="block">Wait for all current flushes of the region to complete</div>
 </li>
 </ul>
@@ -4148,7 +4148,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForFlushes</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1728">waitForFlushes</a>(long&nbsp;timeout)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1734">waitForFlushes</a>(long&nbsp;timeout)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#waitForFlushes-long-">Region</a></code></span></div>
 <div class="block">Wait for all current flushes of the region to complete</div>
 <dl>
@@ -4168,7 +4168,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreOpenAndCloseThreadPool</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1765">getStoreOpenAndCloseThreadPool</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;threadNamePrefix)</pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1771">getStoreOpenAndCloseThreadPool</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;threadNamePrefix)</pre>
 </li>
 </ul>
 <a name="getStoreFileOpenAndCloseThreadPool-java.lang.String-">
@@ -4177,7 +4177,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreFileOpenAndCloseThreadPool</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1774">getStoreFileOpenAndCloseThreadPool</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;threadNamePrefix)</pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1780">getStoreFileOpenAndCloseThreadPool</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;threadNamePrefix)</pre>
 </li>
 </ul>
 <a name="getOpenAndCloseThreadPool-int-java.lang.String-">
@@ -4186,7 +4186,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getOpenAndCloseThreadPool</h4>
-<pre>static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1784">getOpenAndCloseThreadPool</a>(int&nbsp;maxThreads,
+<pre>static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1790">getOpenAndCloseThreadPool</a>(int&nbsp;maxThreads,
                                                     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;threadNamePrefix)</pre>
 </li>
 </ul>
@@ -4196,7 +4196,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>worthPreFlushing</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1800">worthPreFlushing</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1806">worthPreFlushing</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if its worth doing a flush before we put up the close flag.</dd>
@@ -4209,7 +4209,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableDescriptor</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1810">getTableDescriptor</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1816">getTableDescriptor</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getTableDescriptor--">getTableDescriptor</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -4224,7 +4224,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>setTableDescriptor</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1815">setTableDescriptor</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1821">setTableDescriptor</a>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</pre>
 </li>
 </ul>
 <a name="getWAL--">
@@ -4233,7 +4233,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getWAL</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1820">getWAL</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1826">getWAL</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>WAL in use for this region</dd>
@@ -4246,7 +4246,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplitPolicy</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">RegionSplitPolicy</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1827">getSplitPolicy</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">RegionSplitPolicy</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1833">getSplitPolicy</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>split policy for this region.</dd>
@@ -4259,7 +4259,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getBaseConf</h4>
-<pre>org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1838">getBaseConf</a>()</pre>
+<pre>org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1844">getBaseConf</a>()</pre>
 <div class="block">A split takes the config from the parent region & passes it to the daughter
  region's constructor. If 'conf' was passed, you would end up using the HTD
  of the parent region in addition to the new daughter HTD. Pass 'baseConf'
@@ -4276,7 +4276,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getFilesystem</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.FileSystem&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1843">getFilesystem</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.fs.FileSystem&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1849">getFilesystem</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd><code>FileSystem</code> being used by this region</dd>
@@ -4289,7 +4289,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionFileSystem</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1848">getRegionFileSystem</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1854">getRegionFileSystem</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver"><code>HRegionFileSystem</code></a> used by this region</dd>
@@ -4302,7 +4302,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getEarliestFlushTimeForAllStores</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1853">getEarliestFlushTimeForAllStores</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1859">getEarliestFlushTimeForAllStores</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getEarliestFlushTimeForAllStores--">getEarliestFlushTimeForAllStores</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
@@ -4319,7 +4319,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getOldestHfileTs</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1858">getOldestHfileTs</a>(boolean&nbsp;majorCompactionOnly)
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1864">getOldestHfileTs</a>(boolean&nbsp;majorCompactionOnly)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getOldestHfileTs-boolean-">Region</a></code></span></div>
 <div class="block">This can be used to determine the last time all files of this region were major compacted.</div>
@@ -4341,7 +4341,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>setCompleteSequenceId</h4>
-<pre>org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionLoad.Builder&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1886">setCompleteSequenceId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionLoad.Builder&nbsp;regionLoadBldr)</pre>
+<pre>org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionLoad.Builder&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1892">setCompleteSequenceId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionLoad.Builder&nbsp;regionLoadBldr)</pre>
 </li>
 </ul>
 <a name="doRegionCompactionPrep--">
@@ -4350,7 +4350,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>doRegionCompactionPrep</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1912">doRegionCompactionPrep</a>()
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1918">doRegionCompactionPrep</a>()
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Do preparation for pending compaction.</div>
 <dl>
@@ -4365,7 +4365,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>compact</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1928">compact</a>(boolean&nbsp;majorCompaction)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1934">compact</a>(boolean&nbsp;majorCompaction)
              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Synchronously compact all stores in the region.
  <p>This operation could block for a long time, so don't call it from a
@@ -4389,7 +4389,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>compactStores</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1953">compactStores</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1959">compactStores</a>()
                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">This is a helper function that compact all the stores synchronously.
  <p>
@@ -4406,7 +4406,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>compactStore</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1968">compactStore</a>(byte[]&nbsp;family,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1974">compactStore</a>(byte[]&nbsp;family,
                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/throttle/ThroughputController.html" title="interface in org.apache.hadoop.hbase.regionserver.throttle">ThroughputController</a>&nbsp;throughputController)
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">This is a helper function that compact the given store.
@@ -4424,7 +4424,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>compact</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1991">compact</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;compaction,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1997">compact</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;compaction,
                        <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
                        <a href="../../../../../org/apache/hadoop/hbase/regionserver/throttle/ThroughputController.html" title="interface in org.apache.hadoop.hbase.regionserver.throttle">ThroughputController</a>&nbsp;throughputController)
                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -4454,7 +4454,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldForbidMajorCompaction</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.1996">shouldForbidMajorCompaction</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2002">shouldForbidMajorCompaction</a>()</pre>
 </li>
 </ul>
 <a name="compact-org.apache.hadoop.hbase.regionserver.compactions.CompactionContext-org.apache.hadoop.hbase.regionserver.HStore-org.apache.hadoop.hbase.regionserver.throttle.ThroughputController-org.apache.hadoop.hbase.security.User-">
@@ -4463,7 +4463,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>compact</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2078">compact</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;compaction,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2084">compact</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;compaction,
                        <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
                        <a href="../../../../../org/apache/hadoop/hbase/regionserver/throttle/ThroughputController.html" title="interface in org.apache.hadoop.hbase.regionserver.throttle">ThroughputController</a>&nbsp;throughputController,
                        <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
@@ -4552,7 +4552,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>flush</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html" title="interface in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2181">flush</a>(boolean&nbsp;force)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html" title="interface in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2187">flush</a>(boolean&nbsp;force)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Flush the cache.
 
@@ -4584,7 +4584,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>flushcache</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.FlushResultImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2228">flushcache</a>(boolean&nbsp;forceFlushAllStores,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.FlushResultImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2234">flushcache</a>(boolean&nbsp;forceFlushAllStores,
                                           boolean&nbsp;writeFlushRequestWalMarker,
                                           <a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushLifeCycleTracker.html" title="interface in org.apache.hadoop.hbase.regionserver">FlushLifeCycleTracker</a>&nbsp;tracker)
                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -4621,7 +4621,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldFlushStore</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2311">shouldFlushStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store)</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2317">shouldFlushStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store)</pre>
 <div class="block">Should the store be flushed because it is old enough.
  <p>
  Every FlushPolicy should call this to determine whether a store is old enough to flush (except
@@ -4635,7 +4635,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldFlush</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2340">shouldFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;whyFlush)</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2346">shouldFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;whyFlush)</pre>
 <div class="block">Should the memstore be flushed now</div>
 </li>
 </ul>
@@ -4645,7 +4645,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>internalFlushcache</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html" title="interface in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2377">internalFlushcache</a>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html" title="interface in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2383">internalFlushcache</a>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
                                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Flushing all stores.</div>
 <dl>
@@ -4662,7 +4662,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>internalFlushcache</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.FlushResultImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2385">internalFlushcache</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&gt;&nbsp;storesToFlush,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.FlushResultImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2391">internalFlushcache</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&gt;&nbsp;storesToFlush,
                                                    <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status,
                                                    boolean&nbsp;writeFlushWalMarker,
                                                    <a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushLifeCycleTracker.html" title="interface in org.apache.hadoop.hbase.regionserver">FlushLifeCycleTracker</a>&nbsp;tracker)
@@ -4682,7 +4682,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>internalFlushcache</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.FlushResultImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2409">internalFlushcache</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.FlushResultImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2415">internalFlushcache</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
                                                      long&nbsp;myseqid,
                                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&gt;&nbsp;storesToFlush,
                                                      <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status,
@@ -4718,7 +4718,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>internalPrepareFlushCache</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.PrepareFlushResult</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2423">internalPrepareFlushCache</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.PrepareFlushResult</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2429">internalPrepareFlushCache</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
                                                                long&nbsp;myseqid,
                                                                <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&gt;&nbsp;storesToFlush,
                                                                <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status,
@@ -4737,7 +4737,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>logFatLineOnFlush</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2563">logFatLineOnFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&gt;&nbsp;storesToFlush,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2569">logFatLineOnFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&gt;&nbsp;storesToFlush,
                                long&nbsp;sequenceId)</pre>
 <div class="block">Utility method broken out of internalPrepareFlushCache so that method is smaller.</div>
 </li>
@@ -4748,7 +4748,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>doAbortFlushToWAL</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2591">doAbortFlushToWAL</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2597">doAbortFlushToWAL</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
                                long&nbsp;flushOpSeqId,
                                <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in j

<TRUNCATED>

[19/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html
new file mode 100644
index 0000000..9c85343
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html
@@ -0,0 +1,450 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>ReplicationStatusTmpl (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ReplicationStatusTmpl (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ReplicationStatusTmpl.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatusTmpl.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.tmpl.regionserver</div>
+<h2 title="Class ReplicationStatusTmpl" class="title">Class ReplicationStatusTmpl</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.jamon.AbstractTemplateProxy</li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#line.21">ReplicationStatusTmpl</a>
+extends org.jamon.AbstractTemplateProxy</pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
+<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static interface&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.Intf</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.jamon.AbstractTemplateProxy">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.jamon.AbstractTemplateProxy</h3>
+<code>org.jamon.AbstractTemplateProxy.ImplDataCompatible&lt;T extends org.jamon.AbstractTemplateProxy.ImplData&gt;, org.jamon.AbstractTemplateProxy.ReplacementConstructor</code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#ReplicationStatusTmpl--">ReplicationStatusTmpl</a></span>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#ReplicationStatusTmpl-java.lang.String-">ReplicationStatusTmpl</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_path)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#ReplicationStatusTmpl-org.jamon.TemplateManager-">ReplicationStatusTmpl</a></span>(org.jamon.TemplateManager&nbsp;p_manager)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>protected org.jamon.AbstractTemplateImpl</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#constructImpl--">constructImpl</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>org.jamon.AbstractTemplateImpl</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#constructImpl-java.lang.Class-">constructImpl</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends org.jamon.AbstractTemplateImpl&gt;&nbsp;p_class)</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#getImplData--">getImplData</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>protected org.jamon.AbstractTemplateProxy.ImplData</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#makeImplData--">makeImplData</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>org.jamon.Renderer</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#makeRenderer-org.apache.hadoop.hbase.regionserver.HRegionServer-">makeRenderer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer)</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#render-java.io.Writer-org.apache.hadoop.hbase.regionserver.HRegionServer-">render</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+      <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer)</code>&nbsp;</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#renderNoFlush-java.io.Writer-org.apache.hadoop.hbase.regionserver.HRegionServer-">renderNoFlush</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+             <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer)</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.jamon.AbstractTemplateProxy">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.jamon.AbstractTemplateProxy</h3>
+<code>getTemplateManager, reset</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="ReplicationStatusTmpl-org.jamon.TemplateManager-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ReplicationStatusTmpl</h4>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#line.25">ReplicationStatusTmpl</a>(org.jamon.TemplateManager&nbsp;p_manager)</pre>
+</li>
+</ul>
+<a name="ReplicationStatusTmpl-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ReplicationStatusTmpl</h4>
+<pre>protected&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#line.30">ReplicationStatusTmpl</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_path)</pre>
+</li>
+</ul>
+<a name="ReplicationStatusTmpl--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ReplicationStatusTmpl</h4>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#line.35">ReplicationStatusTmpl</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="makeImplData--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>makeImplData</h4>
+<pre>protected&nbsp;org.jamon.AbstractTemplateProxy.ImplData&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#line.63">makeImplData</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>makeImplData</code>&nbsp;in class&nbsp;<code>org.jamon.AbstractTemplateProxy</code></dd>
+</dl>
+</li>
+</ul>
+<a name="getImplData--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getImplData</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#line.67">getImplData</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>getImplData</code>&nbsp;in class&nbsp;<code>org.jamon.AbstractTemplateProxy</code></dd>
+</dl>
+</li>
+</ul>
+<a name="constructImpl-java.lang.Class-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>constructImpl</h4>
+<pre>public&nbsp;org.jamon.AbstractTemplateImpl&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#line.74">constructImpl</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends org.jamon.AbstractTemplateImpl&gt;&nbsp;p_class)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>constructImpl</code>&nbsp;in class&nbsp;<code>org.jamon.AbstractTemplateProxy</code></dd>
+</dl>
+</li>
+</ul>
+<a name="constructImpl--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>constructImpl</h4>
+<pre>protected&nbsp;org.jamon.AbstractTemplateImpl&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#line.92">constructImpl</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>constructImpl</code>&nbsp;in class&nbsp;<code>org.jamon.AbstractTemplateProxy</code></dd>
+</dl>
+</li>
+</ul>
+<a name="makeRenderer-org.apache.hadoop.hbase.regionserver.HRegionServer-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>makeRenderer</h4>
+<pre>public&nbsp;org.jamon.Renderer&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#line.95">makeRenderer</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer)</pre>
+</li>
+</ul>
+<a name="render-java.io.Writer-org.apache.hadoop.hbase.regionserver.HRegionServer-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>render</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#line.107">render</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+                   <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer)
+            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="renderNoFlush-java.io.Writer-org.apache.hadoop.hbase.regionserver.HRegionServer-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>renderNoFlush</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#line.113">renderNoFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+                          <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer)
+                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ReplicationStatusTmpl.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatusTmpl.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html
new file mode 100644
index 0000000..d968fad
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html
@@ -0,0 +1,387 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>ReplicationStatusTmplImpl (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ReplicationStatusTmplImpl (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":9,"i3":10};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ReplicationStatusTmplImpl.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatusTmplImpl.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.tmpl.regionserver</div>
+<h2 title="Class ReplicationStatusTmplImpl" class="title">Class ReplicationStatusTmplImpl</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.jamon.AbstractTemplateImpl</li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmplImpl</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.Intf</a>, org.jamon.AbstractTemplateProxy.Intf</dd>
+</dl>
+<hr>
+<br>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#line.17">ReplicationStatusTmplImpl</a>
+extends org.jamon.AbstractTemplateImpl
+implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.Intf</a></pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#regionServer">regionServer</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#ReplicationStatusTmplImpl-org.jamon.TemplateManager-org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl.ImplData-">ReplicationStatusTmplImpl</a></span>(org.jamon.TemplateManager&nbsp;p_templateManager,
+                         <a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a>&nbsp;p_implData)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#Z:Z__jamon_innerUnit__currentLog-java.io.Writer-java.util.Map-">__jamon_innerUnit__currentLog</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+                             <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a>&gt;&nbsp;metrics)</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#Z:Z__jamon_innerUnit__replicationDelay-java.io.Writer-java.util.Map-">__jamon_innerUnit__replicationDelay</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a>&gt;&nbsp;metrics)</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>protected static <a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#Z:Z__jamon_setOptionalArguments-org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl.ImplData-">__jamon_setOptionalArguments</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a>&nbsp;p_implData)</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#renderNoFlush-java.io.Writer-">renderNoFlush</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.jamon.AbstractTemplateImpl">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.jamon.AbstractTemplateImpl</h3>
+<code>getTemplateManager</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="regionServer">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>regionServer</h4>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#line.22">regionServer</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="ReplicationStatusTmplImpl-org.jamon.TemplateManager-org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl.ImplData-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ReplicationStatusTmplImpl</h4>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#line.27">ReplicationStatusTmplImpl</a>(org.jamon.TemplateManager&nbsp;p_templateManager,
+                                 <a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a>&nbsp;p_implData)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="Z:Z__jamon_setOptionalArguments-org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl.ImplData-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>__jamon_setOptionalArguments</h4>
+<pre>protected static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#line.23">__jamon_setOptionalArguments</a>(<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a>&nbsp;p_implData)</pre>
+</li>
+</ul>
+<a name="renderNoFlush-java.io.Writer-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>renderNoFlush</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#line.33">renderNoFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
+                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html#renderNoFlush-java.io.Writer-">renderNoFlush</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.Intf</a></code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="Z:Z__jamon_innerUnit__currentLog-java.io.Writer-java.util.Map-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>__jamon_innerUnit__currentLog</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#line.72">__jamon_innerUnit__currentLog</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+                                           <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a>&gt;&nbsp;metrics)
+                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="Z:Z__jamon_innerUnit__replicationDelay-java.io.Writer-java.util.Map-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>__jamon_innerUnit__replicationDelay</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#line.113">__jamon_innerUnit__replicationDelay</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+                                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a>&gt;&nbsp;metrics)
+                                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ReplicationStatusTmplImpl.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatusTmplImpl.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.ImplData.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.ImplData.html
new file mode 100644
index 0000000..a445efc
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.ImplData.html
@@ -0,0 +1,194 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl.ImplData (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl.ImplData (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.ImplData.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatusTmpl.ImplData.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl.ImplData" class="title">Uses of Class<br>org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl.ImplData</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.tmpl.regionserver">org.apache.hadoop.hbase.tmpl.regionserver</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.tmpl.regionserver">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a> in <a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/package-summary.html">org.apache.hadoop.hbase.tmpl.regionserver</a></h3>
+<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/tmpl/regionserver/package-summary.html">org.apache.hadoop.hbase.tmpl.regionserver</a> that return <a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</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>protected static <a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatusTmplImpl.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#Z:Z__jamon_setOptionalArguments-org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl.ImplData-">__jamon_setOptionalArguments</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a>&nbsp;p_implData)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatusTmpl.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html#getImplData--">getImplData</a></span>()</code>&nbsp;</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/tmpl/regionserver/package-summary.html">org.apache.hadoop.hbase.tmpl.regionserver</a> with parameters of type <a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</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>protected static <a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationStatusTmplImpl.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#Z:Z__jamon_setOptionalArguments-org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl.ImplData-">__jamon_setOptionalArguments</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a>&nbsp;p_implData)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">
+<caption><span>Constructors in <a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/package-summary.html">org.apache.hadoop.hbase.tmpl.regionserver</a> with parameters of type <a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html#ReplicationStatusTmplImpl-org.jamon.TemplateManager-org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl.ImplData-">ReplicationStatusTmplImpl</a></span>(org.jamon.TemplateManager&nbsp;p_templateManager,
+                         <a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a>&nbsp;p_implData)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.ImplData.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatusTmpl.ImplData.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.Intf.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.Intf.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.Intf.html
new file mode 100644
index 0000000..2193fcc
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.Intf.html
@@ -0,0 +1,165 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Interface org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl.Intf (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Interface org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl.Intf (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.Intf.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatusTmpl.Intf.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Interface org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl.Intf" class="title">Uses of Interface<br>org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl.Intf</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.Intf</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.tmpl.regionserver">org.apache.hadoop.hbase.tmpl.regionserver</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.tmpl.regionserver">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.Intf</a> in <a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/package-summary.html">org.apache.hadoop.hbase.tmpl.regionserver</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
+<caption><span>Classes in <a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/package-summary.html">org.apache.hadoop.hbase.tmpl.regionserver</a> that implement <a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.Intf</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmplImpl</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.Intf.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatusTmpl.Intf.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.html
new file mode 100644
index 0000000..1d09def
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatusTmpl.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl" class="title">Uses of Class<br>org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmpl</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmpl.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatusTmpl.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmplImpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmplImpl.html
new file mode 100644
index 0000000..cec7c4a
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmplImpl.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmplImpl (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmplImpl (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmplImpl.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatusTmplImpl.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmplImpl" class="title">Uses of Class<br>org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmplImpl</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.tmpl.regionserver.ReplicationStatusTmplImpl</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/tmpl/regionserver/class-use/ReplicationStatusTmplImpl.html" target="_top">Frames</a></li>
+<li><a href="ReplicationStatusTmplImpl.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-frame.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-frame.html
index a0bdbde..5fb9d48 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-frame.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-frame.html
@@ -16,6 +16,7 @@
 <li><a href="BlockCacheTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame"><span class="interfaceName">BlockCacheTmpl.Intf</span></a></li>
 <li><a href="BlockCacheViewTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame"><span class="interfaceName">BlockCacheViewTmpl.Intf</span></a></li>
 <li><a href="RegionListTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame"><span class="interfaceName">RegionListTmpl.Intf</span></a></li>
+<li><a href="ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame"><span class="interfaceName">ReplicationStatusTmpl.Intf</span></a></li>
 <li><a href="RSStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame"><span class="interfaceName">RSStatusTmpl.Intf</span></a></li>
 <li><a href="ServerMetricsTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame"><span class="interfaceName">ServerMetricsTmpl.Intf</span></a></li>
 </ul>
@@ -30,6 +31,9 @@
 <li><a href="RegionListTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame">RegionListTmpl</a></li>
 <li><a href="RegionListTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame">RegionListTmpl.ImplData</a></li>
 <li><a href="RegionListTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame">RegionListTmplImpl</a></li>
+<li><a href="ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame">ReplicationStatusTmpl</a></li>
+<li><a href="ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame">ReplicationStatusTmpl.ImplData</a></li>
+<li><a href="ReplicationStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame">ReplicationStatusTmplImpl</a></li>
 <li><a href="RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame">RSStatusTmpl</a></li>
 <li><a href="RSStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame">RSStatusTmpl.ImplData</a></li>
 <li><a href="RSStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver" target="classFrame">RSStatusTmplImpl</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-summary.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-summary.html
index c762cae..01a6669 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/package-summary.html
@@ -95,10 +95,14 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl.Intf</a></td>
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.Intf</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl.Intf</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.regionserver">ServerMetricsTmpl.Intf</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
@@ -150,26 +154,38 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a></td>
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl.ImplData</a></td>
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmpl.ImplData</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmplImpl</a></td>
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ReplicationStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ReplicationStatusTmplImpl</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ServerMetricsTmpl</a></td>
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ServerMetricsTmpl.ImplData</a></td>
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl.ImplData</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmplImpl</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ServerMetricsTmpl</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ServerMetricsTmpl.ImplData</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ServerMetricsTmplImpl</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>


[11/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler.html
index 05e032c..40ef9f4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslUnwrapHandler.html
@@ -25,767 +25,805 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.io.asyncfs;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.21"></a>
 <span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import com.google.protobuf.CodedOutputStream;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.io.IOException;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.lang.reflect.Field;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.lang.reflect.InvocationTargetException;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.lang.reflect.Method;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.net.InetAddress;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import java.net.InetSocketAddress;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import java.nio.ByteBuffer;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import java.security.GeneralSecurityException;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import java.util.Arrays;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import java.util.Collections;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import java.util.List;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import java.util.Map;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import java.util.Set;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import java.util.concurrent.TimeUnit;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>import javax.security.auth.callback.Callback;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import javax.security.auth.callback.CallbackHandler;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import javax.security.auth.callback.NameCallback;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import javax.security.auth.callback.PasswordCallback;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import javax.security.sasl.RealmCallback;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import javax.security.sasl.Sasl;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import javax.security.sasl.SaslClient;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import javax.security.sasl.SaslException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.commons.codec.binary.Base64;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.commons.lang3.StringUtils;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.conf.Configuration;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.slf4j.Logger;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.slf4j.LoggerFactory;<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>import com.google.protobuf.ByteString;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.security.token.Token;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>/**<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> */<a name="line.108"></a>
-<span class="sourceLineNo">109</span>@InterfaceAudience.Private<a name="line.109"></a>
-<span class="sourceLineNo">110</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private static final Logger LOG =<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.112"></a>
+<span class="sourceLineNo">023</span>import com.google.protobuf.ByteString;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import com.google.protobuf.CodedOutputStream;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.lang.reflect.Field;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.lang.reflect.InvocationTargetException;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.lang.reflect.Method;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.InetAddress;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.net.InetSocketAddress;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.nio.ByteBuffer;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.security.GeneralSecurityException;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Arrays;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Collections;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.List;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Map;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Set;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.concurrent.TimeUnit;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import javax.security.auth.callback.Callback;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import javax.security.auth.callback.CallbackHandler;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import javax.security.auth.callback.NameCallback;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import javax.security.auth.callback.PasswordCallback;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import javax.security.sasl.RealmCallback;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import javax.security.sasl.Sasl;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import javax.security.sasl.SaslClient;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import javax.security.sasl.SaslException;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.commons.codec.binary.Base64;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.commons.lang3.StringUtils;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.crypto.key.KeyProvider;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.security.token.Token;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.slf4j.Logger;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.LoggerFactory;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>/**<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.104"></a>
+<span class="sourceLineNo">105</span> */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>@InterfaceAudience.Private<a name="line.106"></a>
+<span class="sourceLineNo">107</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private static final Logger LOG =<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private static final String SERVER_NAME = "0";<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  private static final String PROTOCOL = "hdfs";<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  private static final String NAME_DELIMITER = " ";<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  private interface SaslAdaptor {<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.127"></a>
+<span class="sourceLineNo">114</span>  private static final String SERVER_NAME = "0";<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final String PROTOCOL = "hdfs";<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private static final String NAME_DELIMITER = " ";<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  private interface SaslAdaptor {<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
 <span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.132"></a>
+<span class="sourceLineNo">129</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  // helper class for convert protos.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private interface PBHelper {<a name="line.132"></a>
 <span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  // helper class for convert protos.<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  private interface PBHelper {<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.137"></a>
+<span class="sourceLineNo">134</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
 <span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final PBHelper PB_HELPER;<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private interface TransparentCryptoHelper {<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        throws IOException;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    Field saslPropsResolverField =<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    saslPropsResolverField.setAccessible(true);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    Field trustedChannelResolverField =<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    trustedChannelResolverField.setAccessible(true);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Field fallbackToSimpleAuthField =<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return new SaslAdaptor() {<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>      @Override<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        try {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        } catch (IllegalAccessException e) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>          throw new RuntimeException(e);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        }<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        try {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        } catch (IllegalAccessException e) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          throw new RuntimeException(e);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      }<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>      @Override<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        try {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (IllegalAccessException e) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          throw new RuntimeException(e);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    };<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    Class&lt;?&gt; helperClass;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    try {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } catch (ClassNotFoundException e) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    Method convertCipherOptionProtosMethod =<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    return new PBHelper() {<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>      @SuppressWarnings("unchecked")<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      @Override<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        try {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          throw new RuntimeException(e);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>      @SuppressWarnings("unchecked")<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      @Override<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        try {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>          throw new RuntimeException(e);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      }<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    };<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      throws NoSuchMethodException {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    return new TransparentCryptoHelper() {<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>      @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          DFSClient client) throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        try {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          KeyVersion decryptedKey =<a name="line.240"></a>
-<span class="sourceLineNo">241</span>              (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          return encryptor;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        } catch (InvocationTargetException e) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          throw new RuntimeException(e.getTargetException());<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        } catch (GeneralSecurityException e) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          throw new IOException(e);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        } catch (IllegalAccessException e) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          throw new RuntimeException(e);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      }<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    };<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  static {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    try {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      PB_HELPER = createPBHelper();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    } catch (Exception e) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          + "HBASE-16110 for more information.";<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      LOG.error(msg, e);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      throw new Error(msg, e);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>  /**<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    private final char[] password;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    private final String userName;<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>     * Creates a new SaslClientCallbackHandler.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>     * @param userName SASL user name<a name="line.282"></a>
-<span class="sourceLineNo">283</span>     * @Param password SASL password<a name="line.283"></a>
-<span class="sourceLineNo">284</span>     */<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      this.password = password;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      this.userName = userName;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    @Override<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      NameCallback nc = null;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      PasswordCallback pc = null;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      RealmCallback rc = null;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      for (Callback callback : callbacks) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          continue;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        } else if (callback instanceof NameCallback) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          nc = (NameCallback) callback;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        } else if (callback instanceof PasswordCallback) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>          pc = (PasswordCallback) callback;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        } else if (callback instanceof RealmCallback) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          rc = (RealmCallback) callback;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        } else {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      if (nc != null) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        nc.setName(userName);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      if (pc != null) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        pc.setPassword(password);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      if (rc != null) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        rc.setText(rc.getDefaultText());<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private final Configuration conf;<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    private final SaslClient saslClient;<a name="line.326"></a>
+<span class="sourceLineNo">139</span>  private static final PBHelper PB_HELPER;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  private interface TransparentCryptoHelper {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        throws IOException;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    Field saslPropsResolverField =<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    saslPropsResolverField.setAccessible(true);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    Field trustedChannelResolverField =<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    trustedChannelResolverField.setAccessible(true);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Field fallbackToSimpleAuthField =<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return new SaslAdaptor() {<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>      @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        try {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        } catch (IllegalAccessException e) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          throw new RuntimeException(e);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>      @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        try {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        } catch (IllegalAccessException e) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          throw new RuntimeException(e);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      }<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>      @Override<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        } catch (IllegalAccessException e) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          throw new RuntimeException(e);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    Class&lt;?&gt; helperClass;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    try {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    } catch (ClassNotFoundException e) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Method convertCipherOptionProtosMethod =<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    return new PBHelper() {<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>      @SuppressWarnings("unchecked")<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      @Override<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        try {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          throw new RuntimeException(e);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        }<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      }<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>      @SuppressWarnings("unchecked")<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          throw new RuntimeException(e);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    };<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  private static TransparentCryptoHelper createTransparentCryptoHelper27()<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      throws NoSuchMethodException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    return new TransparentCryptoHelper() {<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          DFSClient client) throws IOException {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          KeyVersion decryptedKey =<a name="line.237"></a>
+<span class="sourceLineNo">238</span>            (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          return encryptor;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        } catch (InvocationTargetException e) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          throw new RuntimeException(e.getTargetException());<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        } catch (GeneralSecurityException e) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          throw new IOException(e);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        } catch (IllegalAccessException e) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          throw new RuntimeException(e);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    };<a name="line.252"></a>
+<span class="sourceLineNo">253</span>  }<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>  private static TransparentCryptoHelper createTransparentCryptoHelper28()<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      throws ClassNotFoundException, NoSuchMethodException {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Class&lt;?&gt; hdfsKMSUtilCls = Class.forName("org.apache.hadoop.hdfs.HdfsKMSUtil");<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Method decryptEncryptedDataEncryptionKeyMethod = hdfsKMSUtilCls.getDeclaredMethod(<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      "decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class, KeyProvider.class);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    return new TransparentCryptoHelper() {<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>      @Override<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          DFSClient client) throws IOException {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        try {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          KeyVersion decryptedKey = (KeyVersion) decryptEncryptedDataEncryptionKeyMethod<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            .invoke(null, feInfo, client.getKeyProvider());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          return encryptor;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        } catch (InvocationTargetException e) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          throw new RuntimeException(e.getTargetException());<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        } catch (GeneralSecurityException e) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          throw new IOException(e);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        } catch (IllegalAccessException e) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>          throw new RuntimeException(e);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    };<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      throws NoSuchMethodException, ClassNotFoundException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      return createTransparentCryptoHelper27();<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    } catch (NoSuchMethodException e) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      LOG.debug("No decryptEncryptedDataEncryptionKey method in DFSClient, should be hadoop 2.8+",<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        e);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    return createTransparentCryptoHelper28();<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  static {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    try {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      PB_HELPER = createPBHelper();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    } catch (Exception e) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          + "HBASE-16110 for more information.";<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      LOG.error(msg, e);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      throw new Error(msg, e);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  }<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /**<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   */<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    private final char[] password;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    private final String userName;<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>    /**<a name="line.318"></a>
+<span class="sourceLineNo">319</span>     * Creates a new SaslClientCallbackHandler.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>     * @param userName SASL user name<a name="line.320"></a>
+<span class="sourceLineNo">321</span>     * @Param password SASL password<a name="line.321"></a>
+<span class="sourceLineNo">322</span>     */<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      this.password = password;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      this.userName = userName;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>    private final int timeoutMs;<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    private final Promise&lt;Void&gt; promise;<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>    private int step = 0;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      this.conf = conf;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      this.saslProps = saslProps;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      this.timeoutMs = timeoutMs;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      this.promise = promise;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    }<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      sendSaslMessage(ctx, payload, null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      // values for future expansion.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        return null;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    }<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      if (payload != null) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        // and we want to keep that out of hbase-server.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      }<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (options != null) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      int size = proto.getSerializedSize();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      ctx.write(buf);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>    @Override<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      ctx.flush();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      step++;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    }<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      saslClient.dispose();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        throw new IOException(proto.getMessage());<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    private String getNegotiatedQop() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>    private boolean isNegotiatedQopPrivacy() {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      String qop = getNegotiatedQop();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      return qop != null &amp;&amp; "auth-conf".equalsIgnoreCase(qop);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>    private boolean requestedQopContainsPrivacy() {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      Set&lt;String&gt; requestedQop =<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      return requestedQop.contains("auth-conf");<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>    private void checkSaslComplete() throws IOException {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      if (!saslClient.isComplete()) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        throw new IOException("Failed to complete SASL handshake");<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      Set&lt;String&gt; requestedQop =<a name="line.424"></a>
-<span class="sourceLineNo">425</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      String negotiatedQop = getNegotiatedQop();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      LOG.debug(<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        "Verifying QOP, requested QOP = " + requestedQop + ", negotiated QOP = " + negotiatedQop);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (!requestedQop.contains(negotiatedQop)) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        throw new IOException(String.format("SASL handshake completed, but "<a name="line.430"></a>
-<span class="sourceLineNo">431</span>            + "channel does not have acceptable quality of protection, "<a name="line.431"></a>
-<span class="sourceLineNo">432</span>            + "requested = %s, negotiated = %s",<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          requestedQop, negotiatedQop));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>    private boolean useWrap() {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      String qop = (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      return qop != null &amp;&amp; !"auth".equalsIgnoreCase(qop);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    private CipherOption unwrap(CipherOption option, SaslClient saslClient) throws IOException {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      byte[] inKey = option.getInKey();<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      if (inKey != null) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        inKey = saslClient.unwrap(inKey, 0, inKey.length);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      byte[] outKey = option.getOutKey();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      if (outKey != null) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        outKey = saslClient.unwrap(outKey, 0, outKey.length);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      }<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return new CipherOption(option.getCipherSuite(), inKey, option.getInIv(), outKey,<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          option.getOutIv());<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    }<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    private CipherOption getCipherOption(DataTransferEncryptorMessageProto proto,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        boolean isNegotiatedQopPrivacy, SaslClient saslClient) throws IOException {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      List&lt;CipherOption&gt; cipherOptions =<a name="line.457"></a>
-<span class="sourceLineNo">458</span>          PB_HELPER.convertCipherOptionProtos(proto.getCipherOptionList());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      if (cipherOptions == null || cipherOptions.isEmpty()) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        return null;<a name="line.460"></a>
+<span class="sourceLineNo">328</span>    @Override<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      NameCallback nc = null;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      PasswordCallback pc = null;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      RealmCallback rc = null;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      for (Callback callback : callbacks) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>          continue;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        } else if (callback instanceof NameCallback) {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          nc = (NameCallback) callback;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        } else if (callback instanceof PasswordCallback) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>          pc = (PasswordCallback) callback;<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        } else if (callback instanceof RealmCallback) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          rc = (RealmCallback) callback;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        } else {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      if (nc != null) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        nc.setName(userName);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      if (pc != null) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        pc.setPassword(password);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      if (rc != null) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        rc.setText(rc.getDefaultText());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>    private final Configuration conf;<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>    private final SaslClient saslClient;<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    private final int timeoutMs;<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>    private final Promise&lt;Void&gt; promise;<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>    private int step = 0;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      this.conf = conf;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      this.saslProps = saslProps;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      this.timeoutMs = timeoutMs;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      this.promise = promise;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      sendSaslMessage(ctx, payload, null);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      // values for future expansion.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        return null;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.395"></a>
+<span class="sourceLineNo">396</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      if (payload != null) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        // and we want to keep that out of hbase-server.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      if (options != null) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      int size = proto.getSerializedSize();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      ctx.write(buf);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>    @Override<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      ctx.flush();<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      step++;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    @Override<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      saslClient.dispose();<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        throw new IOException(proto.getMessage());<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    private String getNegotiatedQop() {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>    private boolean isNegotiatedQopPrivacy()

<TRUNCATED>

[32/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
index 30d4887..47ab720 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
@@ -121,7 +121,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.6209">HRegion.RegionScannerImpl</a>
+<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.6215">HRegion.RegionScannerImpl</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Shipper.html" title="interface in org.apache.hadoop.hbase.regionserver">Shipper</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcCallback.html" title="interface in org.apache.hadoop.hbase.ipc">RpcCallback</a></pre>
 <div class="block">RegionScannerImpl is used to combine scanners from multiple Stores (aka column families).</div>
@@ -425,7 +425,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>storeHeap</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6212">storeHeap</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6218">storeHeap</a></pre>
 </li>
 </ul>
 <a name="joinedHeap">
@@ -434,7 +434,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>joinedHeap</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6215">joinedHeap</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6221">joinedHeap</a></pre>
 <div class="block">Heap of key-values that are not essential for the provided filters and are thus read
  on demand, if on-demand column family loading is enabled.</div>
 </li>
@@ -445,7 +445,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>joinedContinuationRow</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6219">joinedContinuationRow</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6225">joinedContinuationRow</a></pre>
 <div class="block">If the joined heap data gathering is interrupted due to scan limits, this will
  contain the row for which we are populating the values.</div>
 </li>
@@ -456,7 +456,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>filterClosed</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6220">filterClosed</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6226">filterClosed</a></pre>
 </li>
 </ul>
 <a name="stopRow">
@@ -465,7 +465,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>stopRow</h4>
-<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6222">stopRow</a></pre>
+<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6228">stopRow</a></pre>
 </li>
 </ul>
 <a name="includeStopRow">
@@ -474,7 +474,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>includeStopRow</h4>
-<pre>protected final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6223">includeStopRow</a></pre>
+<pre>protected final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6229">includeStopRow</a></pre>
 </li>
 </ul>
 <a name="region">
@@ -483,7 +483,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6224">region</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6230">region</a></pre>
 </li>
 </ul>
 <a name="comparator">
@@ -492,7 +492,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>comparator</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6225">comparator</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6231">comparator</a></pre>
 </li>
 </ul>
 <a name="readPt">
@@ -501,7 +501,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>readPt</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6227">readPt</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6233">readPt</a></pre>
 </li>
 </ul>
 <a name="maxResultSize">
@@ -510,7 +510,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>maxResultSize</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6228">maxResultSize</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6234">maxResultSize</a></pre>
 </li>
 </ul>
 <a name="defaultScannerContext">
@@ -519,7 +519,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>defaultScannerContext</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6229">defaultScannerContext</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6235">defaultScannerContext</a></pre>
 </li>
 </ul>
 <a name="filter">
@@ -528,7 +528,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockListLast">
 <li class="blockList">
 <h4>filter</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.html" title="class in org.apache.hadoop.hbase.filter">FilterWrapper</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6230">filter</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.html" title="class in org.apache.hadoop.hbase.filter">FilterWrapper</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6236">filter</a></pre>
 </li>
 </ul>
 </li>
@@ -545,7 +545,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>RegionScannerImpl</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6237">RegionScannerImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6243">RegionScannerImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;additionalScanners,
                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -561,7 +561,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RegionScannerImpl</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6242">RegionScannerImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6248">RegionScannerImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;additionalScanners,
                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                   long&nbsp;nonceGroup,
@@ -587,7 +587,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionInfo</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6233">getRegionInfo</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6239">getRegionInfo</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html#getRegionInfo--">getRegionInfo</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a></code></dd>
@@ -602,7 +602,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>initializeScanners</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6280">initializeScanners</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6286">initializeScanners</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;additionalScanners)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -617,7 +617,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>initializeKVHeap</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6312">initializeKVHeap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6318">initializeKVHeap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;joinedScanners,
                                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)
                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -633,7 +633,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>handleException</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6321">handleException</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;instantiatedScanners,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6327">handleException</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;instantiatedScanners,
                                     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;t)</pre>
 </li>
 </ul>
@@ -643,7 +643,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxResultSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6342">getMaxResultSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6348">getMaxResultSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html#getMaxResultSize--">getMaxResultSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a></code></dd>
@@ -659,7 +659,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>getMvccReadPoint</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6347">getMvccReadPoint</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6353">getMvccReadPoint</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html#getMvccReadPoint--">getMvccReadPoint</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a></code></dd>
@@ -674,7 +674,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>getBatch</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6352">getBatch</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6358">getBatch</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html#getBatch--">getBatch</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a></code></dd>
@@ -690,7 +690,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>resetFilters</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6361">resetFilters</a>()
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6367">resetFilters</a>()
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Reset both the filter and the old filter.</div>
 <dl>
@@ -705,7 +705,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>next</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6368">next</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6374">next</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults)
              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html#next-java.util.List-">InternalScanner</a></code></span></div>
 <div class="block">Grab the next row's worth of values.</div>
@@ -727,7 +727,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>next</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6375">next</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6381">next</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults,
                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)
              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html#next-java.util.List-org.apache.hadoop.hbase.regionserver.ScannerContext-">InternalScanner</a></code></span></div>
@@ -750,7 +750,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>nextRaw</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6391">nextRaw</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6397">nextRaw</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults)
                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html#nextRaw-java.util.List-">RegionScanner</a></code></span></div>
 <div class="block">Grab the next row's worth of values. This is a special internal method to be called from
@@ -775,7 +775,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>nextRaw</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6397">nextRaw</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6403">nextRaw</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults,
                        <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)
                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html#nextRaw-java.util.List-org.apache.hadoop.hbase.regionserver.ScannerContext-">RegionScanner</a></code></span></div>
@@ -821,7 +821,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>populateFromJoinedHeap</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6434">populateFromJoinedHeap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6440">populateFromJoinedHeap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
                                        <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)
                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -838,7 +838,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>populateResult</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6458">populateResult</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6464">populateResult</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
                                <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a>&nbsp;heap,
                                <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext,
                                <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)
@@ -863,7 +863,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>moreCellsInRow</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6499">moreCellsInRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;nextKv,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6505">moreCellsInRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;nextKv,
                                <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)</pre>
 <div class="block">Based on the nextKv in the heap, and the current row, decide whether or not there are more
  cells to be read in the heap. If the row of the nextKv in the heap matches the current row
@@ -883,7 +883,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>isFilterDone</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6507">isFilterDone</a>()
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6513">isFilterDone</a>()
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -901,7 +901,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>isFilterDoneInternal</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6511">isFilterDoneInternal</a>()
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6517">isFilterDoneInternal</a>()
                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -915,7 +915,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>nextInternal</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6515">nextInternal</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6521">nextInternal</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -930,7 +930,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>incrementCountOfRowsFilteredMetric</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6738">incrementCountOfRowsFilteredMetric</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6744">incrementCountOfRowsFilteredMetric</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)</pre>
 </li>
 </ul>
 <a name="incrementCountOfRowsScannedMetric-org.apache.hadoop.hbase.regionserver.ScannerContext-">
@@ -939,7 +939,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>incrementCountOfRowsScannedMetric</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6746">incrementCountOfRowsScannedMetric</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6752">incrementCountOfRowsScannedMetric</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)</pre>
 </li>
 </ul>
 <a name="joinedHeapMayHaveData-org.apache.hadoop.hbase.Cell-">
@@ -948,7 +948,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>joinedHeapMayHaveData</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6757">joinedHeapMayHaveData</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6763">joinedHeapMayHaveData</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -966,7 +966,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>filterRow</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6784">filterRow</a>()
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6790">filterRow</a>()
                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">This function is to maintain backward compatibility for 0.94 filters. HBASE-6429 combines
  both filterRow & filterRow(<code>List&lt;KeyValue&gt; kvs</code>) functions. While 0.94 code or older,
@@ -985,7 +985,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>filterRowKey</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6791">filterRowKey</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;current)
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6797">filterRowKey</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;current)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -999,7 +999,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>nextRow</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6795">nextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6801">nextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext,
                           <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;curRowCell)
                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -1014,7 +1014,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldStop</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6810">shouldStop</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6816">shouldStop</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)</pre>
 </li>
 </ul>
 <a name="close--">
@@ -1023,7 +1023,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6822">close</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6828">close</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html#close--">InternalScanner</a></code></span></div>
 <div class="block">Closes the scanner and releases any resources it has allocated</div>
 <dl>
@@ -1042,7 +1042,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreHeapForTesting</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6836">getStoreHeapForTesting</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6842">getStoreHeapForTesting</a>()</pre>
 </li>
 </ul>
 <a name="reseek-byte:A-">
@@ -1051,7 +1051,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>reseek</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6841">reseek</a>(byte[]&nbsp;row)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6847">reseek</a>(byte[]&nbsp;row)
                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html#reseek-byte:A-">RegionScanner</a></code></span></div>
 <div class="block">Do a reseek to the required row. Should not be used to seek to a key which
@@ -1071,7 +1071,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>shipped</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6861">shipped</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6867">shipped</a>()
              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Shipper.html#shipped--">Shipper</a></code></span></div>
 <div class="block">Called after a batch of rows scanned and set to be returned to client. Any in between cleanup
@@ -1090,7 +1090,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6871">run</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6877">run</a>()
          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcCallback.html#run--">RpcCallback</a></code></span></div>
 <div class="block">Called at the end of an Rpc Call <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcCallContext.html" title="interface in org.apache.hadoop.hbase.ipc"><code>RpcCallContext</code></a></div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
index 97fe0c3..6ac285d 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3757">HRegion.ReplayBatchOperation</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3763">HRegion.ReplayBatchOperation</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>&gt;</pre>
 <div class="block">Batch of mutations for replay. Base class is shared with <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver"><code>HRegion.MutationBatchOperation</code></a> as most
  of the logic is same.</div>
@@ -306,7 +306,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>origLogSeqNum</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3758">origLogSeqNum</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3764">origLogSeqNum</a></pre>
 </li>
 </ul>
 </li>
@@ -323,7 +323,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ReplayBatchOperation</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3759">ReplayBatchOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3765">ReplayBatchOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                             <a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>[]&nbsp;operations,
                             long&nbsp;origLogSeqNum)</pre>
 </li>
@@ -342,7 +342,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutation</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3766">getMutation</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3772">getMutation</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getMutation-int-">getMutation</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>&gt;</code></dd>
@@ -355,7 +355,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonceGroup</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3771">getNonceGroup</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3777">getNonceGroup</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getNonceGroup-int-">getNonceGroup</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>&gt;</code></dd>
@@ -368,7 +368,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonce</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3776">getNonce</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3782">getNonce</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getNonce-int-">getNonce</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>&gt;</code></dd>
@@ -381,7 +381,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutationsForCoprocs</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3781">getMutationsForCoprocs</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3787">getMutationsForCoprocs</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getMutationsForCoprocs--">HRegion.BatchOperation</a></code></span></div>
 <div class="block">This method is potentially expensive and useful mostly for non-replay CP path.</div>
 <dl>
@@ -396,7 +396,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>isInReplay</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3786">isInReplay</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3792">isInReplay</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#isInReplay--">isInReplay</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>&gt;</code></dd>
@@ -409,7 +409,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getOrigLogSeqNum</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3791">getOrigLogSeqNum</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3797">getOrigLogSeqNum</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getOrigLogSeqNum--">getOrigLogSeqNum</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>&gt;</code></dd>
@@ -422,7 +422,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>startRegionOperation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3796">startRegionOperation</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3802">startRegionOperation</a>()
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -438,7 +438,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>closeRegionOperation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3801">closeRegionOperation</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3807">closeRegionOperation</a>()
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -454,7 +454,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPreparePut</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3810">checkAndPreparePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3816">checkAndPreparePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">During replay, there could exist column families which are removed between region server
  failure and replay</div>
@@ -472,7 +472,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPrepare</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3831">checkAndPrepare</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3837">checkAndPrepare</a>()
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#checkAndPrepare--">HRegion.BatchOperation</a></code></span></div>
 <div class="block">Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs
@@ -494,7 +494,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareMiniBatchOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3840">prepareMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3846">prepareMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                        long&nbsp;timestamp,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&gt;&nbsp;acquiredRowLocks)
                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -515,7 +515,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>writeMiniBatchOperationsToMemStore</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3852">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3858">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                                                                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;writeEntry)
                                                                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#writeMiniBatchOperationsToMemStore-org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress-org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry-">HRegion.BatchOperation</a></code></span></div>
@@ -534,7 +534,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>completeMiniBatchOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3860">completeMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3866">completeMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;writeEntry)
                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#completeMiniBatchOperations-org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress-org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry-">HRegion.BatchOperation</a></code></span></div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
index d61c88c..d6ef4ef 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5817">HRegion.RowLockContext</a>
+<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5823">HRegion.RowLockContext</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -241,7 +241,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>row</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/HashedBytes.html" title="class in org.apache.hadoop.hbase.util">HashedBytes</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5818">row</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/HashedBytes.html" title="class in org.apache.hadoop.hbase.util">HashedBytes</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5824">row</a></pre>
 </li>
 </ul>
 <a name="readWriteLock">
@@ -250,7 +250,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>readWriteLock</h4>
-<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReadWriteLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5819">readWriteLock</a></pre>
+<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReadWriteLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5825">readWriteLock</a></pre>
 </li>
 </ul>
 <a name="usable">
@@ -259,7 +259,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>usable</h4>
-<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5820">usable</a></pre>
+<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5826">usable</a></pre>
 </li>
 </ul>
 <a name="count">
@@ -268,7 +268,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>count</h4>
-<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5821">count</a></pre>
+<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5827">count</a></pre>
 </li>
 </ul>
 <a name="lock">
@@ -277,7 +277,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>lock</h4>
-<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5822">lock</a></pre>
+<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5828">lock</a></pre>
 </li>
 </ul>
 <a name="threadName">
@@ -286,7 +286,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>threadName</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5823">threadName</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5829">threadName</a></pre>
 </li>
 </ul>
 </li>
@@ -303,7 +303,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RowLockContext</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5825">RowLockContext</a>(<a href="../../../../../org/apache/hadoop/hbase/util/HashedBytes.html" title="class in org.apache.hadoop.hbase.util">HashedBytes</a>&nbsp;row)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5831">RowLockContext</a>(<a href="../../../../../org/apache/hadoop/hbase/util/HashedBytes.html" title="class in org.apache.hadoop.hbase.util">HashedBytes</a>&nbsp;row)</pre>
 </li>
 </ul>
 </li>
@@ -320,7 +320,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>newWriteLock</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5829">newWriteLock</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5835">newWriteLock</a>()</pre>
 </li>
 </ul>
 <a name="newReadLock--">
@@ -329,7 +329,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>newReadLock</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5833">newReadLock</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5839">newReadLock</a>()</pre>
 </li>
 </ul>
 <a name="getRowLock-java.util.concurrent.locks.Lock-">
@@ -338,7 +338,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowLock</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5838">getRowLock</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;l)</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5844">getRowLock</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;l)</pre>
 </li>
 </ul>
 <a name="cleanUp--">
@@ -347,7 +347,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanUp</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5849">cleanUp</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5855">cleanUp</a>()</pre>
 </li>
 </ul>
 <a name="setThreadName-java.lang.String-">
@@ -356,7 +356,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setThreadName</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5862">setThreadName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;threadName)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5868">setThreadName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;threadName)</pre>
 </li>
 </ul>
 <a name="toString--">
@@ -365,7 +365,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5867">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5873">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
index de133d2..e42049f 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5880">HRegion.RowLockImpl</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5886">HRegion.RowLockImpl</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a></pre>
 <div class="block">Class used to represent a lock on a row.</div>
@@ -226,7 +226,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockList">
 <li class="blockList">
 <h4>context</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5881">context</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5887">context</a></pre>
 </li>
 </ul>
 <a name="lock">
@@ -235,7 +235,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockListLast">
 <li class="blockList">
 <h4>lock</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5882">lock</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5888">lock</a></pre>
 </li>
 </ul>
 </li>
@@ -252,7 +252,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RowLockImpl</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5884">RowLockImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a>&nbsp;context,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5890">RowLockImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a>&nbsp;context,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;lock)</pre>
 </li>
 </ul>
@@ -270,7 +270,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockList">
 <li class="blockList">
 <h4>getLock</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5889">getLock</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5895">getLock</a>()</pre>
 </li>
 </ul>
 <a name="getContext--">
@@ -279,7 +279,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockList">
 <li class="blockList">
 <h4>getContext</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5894">getContext</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5900">getContext</a>()</pre>
 </li>
 </ul>
 <a name="release--">
@@ -288,7 +288,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockList">
 <li class="blockList">
 <h4>release</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5899">release</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5905">release</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html#release--">Region.RowLock</a></code></span></div>
 <div class="block">Release the given lock.  If there are no remaining locks held by the current thread
  then unlock the row and allow other threads to acquire the lock.</div>
@@ -304,7 +304,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5905">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5911">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>


[22/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html
index 550e16d..92f8ac3 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":18,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":18,"i14":18,"i15":6,"i16":18,"i17":6,"i18":6,"i19":6,"i20":6,"i21":6};
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":18,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":18,"i13":6,"i14":18,"i15":18,"i16":6,"i17":18,"i18":6,"i19":6,"i20":6,"i21":6,"i22":6};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],16:["t5","Default Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -106,7 +106,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.43">ReplicationSourceInterface</a></pre>
+public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.45">ReplicationSourceInterface</a></pre>
 <div class="block">Interface that defines a replication source</div>
 </li>
 </ul>
@@ -194,6 +194,12 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#getWALFileLengthProvider--">getWALFileLengthProvider</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i12" class="altColor">
+<td class="colFirst"><code>default <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#getWalGroupStatus--">getWalGroupStatus</a></span>()</code>
+<div class="block">get the stat of replication for each wal group.</div>
+</td>
+</tr>
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#init-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceManager-org.apache.hadoop.hbase.replication.ReplicationQueueStorage-org.apache.hadoop.hbase.replication.ReplicationPeer-org.apache.hadoop.hbase.Server-java.lang.String-java.util.UUID-org.apache.hadoop.hbase.replication.regionserver.WALFileLengthProvider-org.apache.hadoop.hbase.replication.regionserver.MetricsSource-">init</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
     org.apache.hadoop.fs.FileSystem&nbsp;fs,
@@ -208,49 +214,49 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <div class="block">Initializer for the source</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>default boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#isPeerEnabled--">isPeerEnabled</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>default boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#isRecovered--">isRecovered</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#isSourceActive--">isSourceActive</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>default boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#isSyncReplication--">isSyncReplication</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#postShipEdits-java.util.List-int-">postShipEdits</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&gt;&nbsp;entries,
              int&nbsp;batchSize)</code>
 <div class="block">Call this after the shipper thread ship some entries to peer cluster.</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#startup--">startup</a></span>()</code>
 <div class="block">Start the replication</div>
 </td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#terminate-java.lang.String-">terminate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;reason)</code>
 <div class="block">End the replication</div>
 </td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#terminate-java.lang.String-java.lang.Exception-">terminate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;reason,
          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;cause)</code>
 <div class="block">End the replication</div>
 </td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#tryThrottle-int-">tryThrottle</a></span>(int&nbsp;batchSize)</code>
 <div class="block">Try to throttle when the peer config with a bandwidth</div>
@@ -277,7 +283,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>init</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.52">init</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.54">init</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
           org.apache.hadoop.fs.FileSystem&nbsp;fs,
           <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceManager</a>&nbsp;manager,
           <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueueStorage</a>&nbsp;queueStorage,
@@ -306,7 +312,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>enqueueLog</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.61">enqueueLog</a>(org.apache.hadoop.fs.Path&nbsp;log)</pre>
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.63">enqueueLog</a>(org.apache.hadoop.fs.Path&nbsp;log)</pre>
 <div class="block">Add a log to the list of logs to replicate</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -320,7 +326,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>addHFileRefs</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.71">addHFileRefs</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.73">addHFileRefs</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                   byte[]&nbsp;family,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path&gt;&gt;&nbsp;pairs)
            throws <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
@@ -342,7 +348,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>startup</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.77">startup</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.79">startup</a>()</pre>
 <div class="block">Start the replication</div>
 </li>
 </ul>
@@ -352,7 +358,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>terminate</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.83">terminate</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;reason)</pre>
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.85">terminate</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;reason)</pre>
 <div class="block">End the replication</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -366,7 +372,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>terminate</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.90">terminate</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;reason,
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.92">terminate</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;reason,
                <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;cause)</pre>
 <div class="block">End the replication</div>
 <dl>
@@ -382,7 +388,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentPath</h4>
-<pre>org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.96">getCurrentPath</a>()</pre>
+<pre>org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.98">getCurrentPath</a>()</pre>
 <div class="block">Get the current log that's replicated</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -396,7 +402,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>getQueueId</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.103">getQueueId</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.105">getQueueId</a>()</pre>
 <div class="block">Get the queue id that the source is replicating to</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -410,7 +416,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>getPeerId</h4>
-<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.109">getPeerId</a>()</pre>
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.111">getPeerId</a>()</pre>
 <div class="block">Get the id that the source is replicating to.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -424,7 +430,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>getPeer</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeer</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.117">getPeer</a>()</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeer</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.119">getPeer</a>()</pre>
 <div class="block">Get the replication peer instance.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -438,7 +444,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>getStats</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.124">getStats</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.126">getStats</a>()</pre>
 <div class="block">Get a string representation of the current statistics
  for this source</div>
 <dl>
@@ -453,7 +459,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>isPeerEnabled</h4>
-<pre>default&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.129">isPeerEnabled</a>()</pre>
+<pre>default&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.131">isPeerEnabled</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>peer enabled or not</dd>
@@ -466,7 +472,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>isSyncReplication</h4>
-<pre>default&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.136">isSyncReplication</a>()</pre>
+<pre>default&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.138">isSyncReplication</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>whether this is sync replication peer.</dd>
@@ -479,7 +485,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>isSourceActive</h4>
-<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.142">isSourceActive</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.144">isSourceActive</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>active or not</dd>
@@ -492,7 +498,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>getSourceMetrics</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsSource</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.147">getSourceMetrics</a>()</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsSource</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.149">getSourceMetrics</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>metrics of this replication source</dd>
@@ -505,7 +511,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicationEndpoint</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.152">getReplicationEndpoint</a>()</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationEndpoint</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.154">getReplicationEndpoint</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the replication endpoint used by this replication source</dd>
@@ -518,7 +524,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>getSourceManager</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.157">getSourceManager</a>()</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.159">getSourceManager</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the replication source manager</dd>
@@ -531,7 +537,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>getWALFileLengthProvider</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALFileLengthProvider.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">WALFileLengthProvider</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.162">getWALFileLengthProvider</a>()</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALFileLengthProvider.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">WALFileLengthProvider</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.164">getWALFileLengthProvider</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the wal file length provider</dd>
@@ -544,7 +550,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>tryThrottle</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.169">tryThrottle</a>(int&nbsp;batchSize)
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.171">tryThrottle</a>(int&nbsp;batchSize)
           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Try to throttle when the peer config with a bandwidth</div>
 <dl>
@@ -561,7 +567,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>postShipEdits</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.176">postShipEdits</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&gt;&nbsp;entries,
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.178">postShipEdits</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&gt;&nbsp;entries,
                    int&nbsp;batchSize)</pre>
 <div class="block">Call this after the shipper thread ship some entries to peer cluster.</div>
 <dl>
@@ -577,7 +583,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerWALsBelongTo</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.183">getServerWALsBelongTo</a>()</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.185">getServerWALsBelongTo</a>()</pre>
 <div class="block">The queue of WALs only belong to one region server. This will return the server name which all
  WALs belong to.</div>
 <dl>
@@ -586,13 +592,27 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/rep
 </dl>
 </li>
 </ul>
+<a name="getWalGroupStatus--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getWalGroupStatus</h4>
+<pre>default&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationStatus</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.191">getWalGroupStatus</a>()</pre>
+<div class="block">get the stat of replication for each wal group.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>stat of replication</dd>
+</dl>
+</li>
+</ul>
 <a name="isRecovered--">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isRecovered</h4>
-<pre>default&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.188">isRecovered</a>()</pre>
+<pre>default&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceInterface.html#line.198">isRecovered</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>whether this is a replication source for recovery.</dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html
index ea2196f..03a0103 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html
@@ -184,9 +184,17 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#currentPosition">currentPosition</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#DEFAULT_TIMEOUT">DEFAULT_TIMEOUT</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceWALReader</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#entryReader">entryReader</a></span></code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#getEntriesTimeout">getEntriesTimeout</a></span></code>&nbsp;</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>private static org.slf4j.Logger</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#LOG">LOG</a></span></code>&nbsp;</td>
@@ -447,12 +455,34 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <a name="maxRetriesMultiplier">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>maxRetriesMultiplier</h4>
 <pre>protected final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.74">maxRetriesMultiplier</a></pre>
 </li>
 </ul>
+<a name="DEFAULT_TIMEOUT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DEFAULT_TIMEOUT</h4>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.75">DEFAULT_TIMEOUT</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceShipper.DEFAULT_TIMEOUT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="getEntriesTimeout">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getEntriesTimeout</h4>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.76">getEntriesTimeout</a></pre>
+</li>
+</ul>
 </li>
 </ul>
 <!-- ========= CONSTRUCTOR DETAIL ======== -->
@@ -467,7 +497,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ReplicationSourceShipper</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.76">ReplicationSourceShipper</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.78">ReplicationSourceShipper</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroupId,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/PriorityBlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">PriorityBlockingQueue</a>&lt;org.apache.hadoop.fs.Path&gt;&nbsp;queue,
                                 <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSource</a>&nbsp;source)</pre>
@@ -487,7 +517,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>run</h4>
-<pre>public final&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.89">run</a>()</pre>
+<pre>public final&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.93">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>
@@ -502,7 +532,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>noMoreData</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.122">noMoreData</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.132">noMoreData</a>()</pre>
 </li>
 </ul>
 <a name="postFinish--">
@@ -511,7 +541,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>postFinish</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.134">postFinish</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.144">postFinish</a>()</pre>
 </li>
 </ul>
 <a name="getBatchEntrySizeExcludeBulkLoad-org.apache.hadoop.hbase.replication.regionserver.WALEntryBatch-">
@@ -520,7 +550,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getBatchEntrySizeExcludeBulkLoad</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.141">getBatchEntrySizeExcludeBulkLoad</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;entryBatch)</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.151">getBatchEntrySizeExcludeBulkLoad</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;entryBatch)</pre>
 <div class="block">get batchEntry size excludes bulk load file sizes.
  Uses ReplicationSourceWALReader's static method.</div>
 </li>
@@ -531,7 +561,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>shipEdits</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.152">shipEdits</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;entryBatch)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.162">shipEdits</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;entryBatch)</pre>
 <div class="block">Do the shipping logic</div>
 </li>
 </ul>
@@ -541,7 +571,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanUpHFileRefs</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.232">cleanUpHFileRefs</a>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;edit)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.242">cleanUpHFileRefs</a>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;edit)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -555,7 +585,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>updateLogPosition</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.256">updateLogPosition</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;batch)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.266">updateLogPosition</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;batch)</pre>
 </li>
 </ul>
 <a name="startup-java.lang.Thread.UncaughtExceptionHandler-">
@@ -564,7 +594,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>startup</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.280">startup</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.UncaughtExceptionHandler.html?is-external=true" title="class or interface in java.lang">Thread.UncaughtExceptionHandler</a>&nbsp;handler)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.290">startup</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.UncaughtExceptionHandler.html?is-external=true" title="class or interface in java.lang">Thread.UncaughtExceptionHandler</a>&nbsp;handler)</pre>
 </li>
 </ul>
 <a name="getCurrentPath--">
@@ -573,7 +603,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentPath</h4>
-<pre>org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.286">getCurrentPath</a>()</pre>
+<pre>org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.296">getCurrentPath</a>()</pre>
 </li>
 </ul>
 <a name="getCurrentPosition--">
@@ -582,7 +612,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentPosition</h4>
-<pre>long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.290">getCurrentPosition</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.300">getCurrentPosition</a>()</pre>
 </li>
 </ul>
 <a name="setWALReader-org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceWALReader-">
@@ -591,7 +621,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setWALReader</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.294">setWALReader</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceWALReader</a>&nbsp;entryReader)</pre>
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.304">setWALReader</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceWALReader</a>&nbsp;entryReader)</pre>
 </li>
 </ul>
 <a name="getStartPosition--">
@@ -600,7 +630,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getStartPosition</h4>
-<pre>long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.298">getStartPosition</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.308">getStartPosition</a>()</pre>
 </li>
 </ul>
 <a name="isActive--">
@@ -609,7 +639,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isActive</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.302">isActive</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.312">isActive</a>()</pre>
 </li>
 </ul>
 <a name="setWorkerState-org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceShipper.WorkerState-">
@@ -618,7 +648,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setWorkerState</h4>
-<pre>protected final&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.306">setWorkerState</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.WorkerState.html" title="enum in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceShipper.WorkerState</a>&nbsp;state)</pre>
+<pre>protected final&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.316">setWorkerState</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.WorkerState.html" title="enum in org.apache.hadoop.hbase.replication.regionserver">ReplicationSourceShipper.WorkerState</a>&nbsp;state)</pre>
 </li>
 </ul>
 <a name="stopWorker--">
@@ -627,7 +657,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>stopWorker</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.310">stopWorker</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.320">stopWorker</a>()</pre>
 </li>
 </ul>
 <a name="isFinished--">
@@ -636,7 +666,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isFinished</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.314">isFinished</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.html#line.324">isFinished</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html
index 2384450..97295e8 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":9,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":9,"i17":10,"i18":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":9,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":9,"i18":10,"i19":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALActionListener.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSyncUp.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html" target="_top">Frames</a></li>
@@ -124,7 +124,7 @@ var activeTableTab = "activeTableTab";
 <br>
 <pre>@InterfaceAudience.Private
  @InterfaceStability.Evolving
-class <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.54">ReplicationSourceWALReader</a>
+class <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.55">ReplicationSourceWALReader</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></pre>
 <div class="block">Reads and filters WAL entries, groups the filtered entries into batches, and puts the batches
  onto a queue</div>
@@ -323,36 +323,40 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#isReaderRunning--">isReaderRunning</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i12" class="altColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#poll-long-">poll</a></span>(long&nbsp;timeout)</code>&nbsp;</td>
+</tr>
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#readWALEntries-org.apache.hadoop.hbase.replication.regionserver.WALEntryStream-">readWALEntries</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryStream</a>&nbsp;entryStream)</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#run--">run</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#setReaderRunning-boolean-">setReaderRunning</a></span>(boolean&nbsp;readerRunning)</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#sizeOfStoreFilesIncludeBulkLoad-org.apache.hadoop.hbase.wal.WALEdit-">sizeOfStoreFilesIncludeBulkLoad</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;edit)</code>
 <div class="block">Calculate the total size of all the store files</div>
 </td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>protected static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#switched-org.apache.hadoop.hbase.replication.regionserver.WALEntryStream-org.apache.hadoop.fs.Path-">switched</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryStream</a>&nbsp;entryStream,
         org.apache.hadoop.fs.Path&nbsp;path)</code>&nbsp;</td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#take--">take</a></span>()</code>
 <div class="block">Retrieves the next batch of WAL entries from the queue, waiting up to the specified time for a
  batch to become available</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#updateBatchStats-org.apache.hadoop.hbase.replication.regionserver.WALEntryBatch-org.apache.hadoop.hbase.wal.WAL.Entry-long-">updateBatchStats</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;batch,
                 <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;entry,
@@ -393,7 +397,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.55">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.56">LOG</a></pre>
 </li>
 </ul>
 <a name="logQueue">
@@ -402,7 +406,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>logQueue</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/PriorityBlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">PriorityBlockingQueue</a>&lt;org.apache.hadoop.fs.Path&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.57">logQueue</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/PriorityBlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">PriorityBlockingQueue</a>&lt;org.apache.hadoop.fs.Path&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.58">logQueue</a></pre>
 </li>
 </ul>
 <a name="fs">
@@ -411,7 +415,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>fs</h4>
-<pre>private final&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.58">fs</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.59">fs</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -420,7 +424,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>private final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.59">conf</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.60">conf</a></pre>
 </li>
 </ul>
 <a name="filter">
@@ -429,7 +433,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>filter</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/WALEntryFilter.html" title="interface in org.apache.hadoop.hbase.replication">WALEntryFilter</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.60">filter</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/WALEntryFilter.html" title="interface in org.apache.hadoop.hbase.replication">WALEntryFilter</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.61">filter</a></pre>
 </li>
 </ul>
 <a name="source">
@@ -438,7 +442,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>source</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSource</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.61">source</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSource</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.62">source</a></pre>
 </li>
 </ul>
 <a name="entryBatchQueue">
@@ -447,7 +451,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>entryBatchQueue</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.63">entryBatchQueue</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.64">entryBatchQueue</a></pre>
 </li>
 </ul>
 <a name="replicationBatchSizeCapacity">
@@ -456,7 +460,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>replicationBatchSizeCapacity</h4>
-<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.65">replicationBatchSizeCapacity</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.66">replicationBatchSizeCapacity</a></pre>
 </li>
 </ul>
 <a name="replicationBatchCountCapacity">
@@ -465,7 +469,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>replicationBatchCountCapacity</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.67">replicationBatchCountCapacity</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.68">replicationBatchCountCapacity</a></pre>
 </li>
 </ul>
 <a name="currentPosition">
@@ -474,7 +478,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>currentPosition</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.69">currentPosition</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.70">currentPosition</a></pre>
 </li>
 </ul>
 <a name="sleepForRetries">
@@ -483,7 +487,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>sleepForRetries</h4>
-<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.70">sleepForRetries</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.71">sleepForRetries</a></pre>
 </li>
 </ul>
 <a name="maxRetriesMultiplier">
@@ -492,7 +496,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>maxRetriesMultiplier</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.71">maxRetriesMultiplier</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.72">maxRetriesMultiplier</a></pre>
 </li>
 </ul>
 <a name="eofAutoRecovery">
@@ -501,7 +505,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>eofAutoRecovery</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.72">eofAutoRecovery</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.73">eofAutoRecovery</a></pre>
 </li>
 </ul>
 <a name="isReaderRunning">
@@ -510,7 +514,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isReaderRunning</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.75">isReaderRunning</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.76">isReaderRunning</a></pre>
 </li>
 </ul>
 <a name="totalBufferUsed">
@@ -519,7 +523,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>totalBufferUsed</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.77">totalBufferUsed</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.78">totalBufferUsed</a></pre>
 </li>
 </ul>
 <a name="totalBufferQuota">
@@ -528,7 +532,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>totalBufferQuota</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.78">totalBufferQuota</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.79">totalBufferQuota</a></pre>
 </li>
 </ul>
 </li>
@@ -545,7 +549,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ReplicationSourceWALReader</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.90">ReplicationSourceWALReader</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.91">ReplicationSourceWALReader</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                                   org.apache.hadoop.conf.Configuration&nbsp;conf,
                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/PriorityBlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">PriorityBlockingQueue</a>&lt;org.apache.hadoop.fs.Path&gt;&nbsp;logQueue,
                                   long&nbsp;startPosition,
@@ -578,7 +582,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.122">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.123">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>
@@ -593,7 +597,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addEntryToBatch</h4>
-<pre>protected final&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.167">addEntryToBatch</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;batch,
+<pre>protected final&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.168">addEntryToBatch</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;batch,
                                         <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;entry)</pre>
 </li>
 </ul>
@@ -603,7 +607,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>switched</h4>
-<pre>protected static final&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.183">switched</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryStream</a>&nbsp;entryStream,
+<pre>protected static final&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.184">switched</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryStream</a>&nbsp;entryStream,
                                         org.apache.hadoop.fs.Path&nbsp;path)</pre>
 </li>
 </ul>
@@ -613,7 +617,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>readWALEntries</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.188">readWALEntries</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryStream</a>&nbsp;entryStream)
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.189">readWALEntries</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryStream</a>&nbsp;entryStream)
                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -629,7 +633,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>handleEmptyWALEntryBatch</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.230">handleEmptyWALEntryBatch</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.231">handleEmptyWALEntryBatch</a>()
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -643,7 +647,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>handleEofException</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.246">handleEofException</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;e)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.247">handleEofException</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;e)</pre>
 </li>
 </ul>
 <a name="getCurrentPath--">
@@ -652,7 +656,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentPath</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.261">getCurrentPath</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.262">getCurrentPath</a>()</pre>
 </li>
 </ul>
 <a name="checkQuota--">
@@ -661,7 +665,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkQuota</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.272">checkQuota</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.273">checkQuota</a>()</pre>
 </li>
 </ul>
 <a name="createBatch-org.apache.hadoop.hbase.replication.regionserver.WALEntryStream-">
@@ -670,7 +674,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createBatch</h4>
-<pre>protected final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.281">createBatch</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryStream</a>&nbsp;entryStream)</pre>
+<pre>protected final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.282">createBatch</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryStream</a>&nbsp;entryStream)</pre>
 </li>
 </ul>
 <a name="filterEntry-org.apache.hadoop.hbase.wal.WAL.Entry-">
@@ -679,7 +683,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>filterEntry</h4>
-<pre>protected final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.285">filterEntry</a>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;entry)</pre>
+<pre>protected final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.286">filterEntry</a>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;entry)</pre>
 </li>
 </ul>
 <a name="take--">
@@ -688,7 +692,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>take</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.299">take</a>()
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.300">take</a>()
                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Retrieves the next batch of WAL entries from the queue, waiting up to the specified time for a
  batch to become available</div>
@@ -700,13 +704,27 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 </dl>
 </li>
 </ul>
+<a name="poll-long-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>poll</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.304">poll</a>(long&nbsp;timeout)
+                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="getEntrySizeIncludeBulkLoad-org.apache.hadoop.hbase.wal.WAL.Entry-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getEntrySizeIncludeBulkLoad</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.303">getEntrySizeIncludeBulkLoad</a>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;entry)</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.308">getEntrySizeIncludeBulkLoad</a>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;entry)</pre>
 </li>
 </ul>
 <a name="getEntrySizeExcludeBulkLoad-org.apache.hadoop.hbase.wal.WAL.Entry-">
@@ -715,7 +733,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getEntrySizeExcludeBulkLoad</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.310">getEntrySizeExcludeBulkLoad</a>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;entry)</pre>
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.315">getEntrySizeExcludeBulkLoad</a>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;entry)</pre>
 </li>
 </ul>
 <a name="updateBatchStats-org.apache.hadoop.hbase.replication.regionserver.WALEntryBatch-org.apache.hadoop.hbase.wal.WAL.Entry-long-">
@@ -724,7 +742,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>updateBatchStats</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.317">updateBatchStats</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;batch,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.322">updateBatchStats</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a>&nbsp;batch,
                               <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;entry,
                               long&nbsp;entrySize)</pre>
 </li>
@@ -735,7 +753,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>countDistinctRowKeysAndHFiles</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.331">countDistinctRowKeysAndHFiles</a>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;edit)</pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.336">countDistinctRowKeysAndHFiles</a>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;edit)</pre>
 <div class="block">Count the number of different row keys in the given edit because of mini-batching. We assume
  that there's at least one Cell in the WALEdit.</div>
 <dl>
@@ -752,7 +770,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>sizeOfStoreFilesIncludeBulkLoad</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.369">sizeOfStoreFilesIncludeBulkLoad</a>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;edit)</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.374">sizeOfStoreFilesIncludeBulkLoad</a>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;edit)</pre>
 <div class="block">Calculate the total size of all the store files</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -768,7 +786,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>acquireBufferQuota</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.399">acquireBufferQuota</a>(long&nbsp;size)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.404">acquireBufferQuota</a>(long&nbsp;size)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>size</code> - delta size for grown buffer</dd>
@@ -783,7 +801,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isReaderRunning</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.406">isReaderRunning</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.411">isReaderRunning</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>whether the reader thread is running</dd>
@@ -796,7 +814,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>setReaderRunning</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.413">setReaderRunning</a>(boolean&nbsp;readerRunning)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html#line.418">setReaderRunning</a>(boolean&nbsp;readerRunning)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>readerRunning</code> - the readerRunning to set</dd>
@@ -832,7 +850,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALActionListener.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSyncUp.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceWALReader.html" target="_top">Frames</a></li>


[15/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper.html
index 05e032c..40ef9f4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper.html
@@ -25,767 +25,805 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.io.asyncfs;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.21"></a>
 <span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import com.google.protobuf.CodedOutputStream;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.io.IOException;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.lang.reflect.Field;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.lang.reflect.InvocationTargetException;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.lang.reflect.Method;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.net.InetAddress;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import java.net.InetSocketAddress;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import java.nio.ByteBuffer;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import java.security.GeneralSecurityException;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import java.util.Arrays;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import java.util.Collections;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import java.util.List;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import java.util.Map;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import java.util.Set;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import java.util.concurrent.TimeUnit;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>import javax.security.auth.callback.Callback;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import javax.security.auth.callback.CallbackHandler;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import javax.security.auth.callback.NameCallback;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import javax.security.auth.callback.PasswordCallback;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import javax.security.sasl.RealmCallback;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import javax.security.sasl.Sasl;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import javax.security.sasl.SaslClient;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import javax.security.sasl.SaslException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.commons.codec.binary.Base64;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.commons.lang3.StringUtils;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.conf.Configuration;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.slf4j.Logger;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.slf4j.LoggerFactory;<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>import com.google.protobuf.ByteString;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.security.token.Token;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>/**<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> */<a name="line.108"></a>
-<span class="sourceLineNo">109</span>@InterfaceAudience.Private<a name="line.109"></a>
-<span class="sourceLineNo">110</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private static final Logger LOG =<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.112"></a>
+<span class="sourceLineNo">023</span>import com.google.protobuf.ByteString;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import com.google.protobuf.CodedOutputStream;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.lang.reflect.Field;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.lang.reflect.InvocationTargetException;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.lang.reflect.Method;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.InetAddress;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.net.InetSocketAddress;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.nio.ByteBuffer;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.security.GeneralSecurityException;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Arrays;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Collections;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.List;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Map;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Set;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.concurrent.TimeUnit;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import javax.security.auth.callback.Callback;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import javax.security.auth.callback.CallbackHandler;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import javax.security.auth.callback.NameCallback;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import javax.security.auth.callback.PasswordCallback;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import javax.security.sasl.RealmCallback;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import javax.security.sasl.Sasl;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import javax.security.sasl.SaslClient;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import javax.security.sasl.SaslException;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.commons.codec.binary.Base64;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.commons.lang3.StringUtils;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.crypto.key.KeyProvider;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.security.token.Token;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.slf4j.Logger;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.LoggerFactory;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>/**<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.104"></a>
+<span class="sourceLineNo">105</span> */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>@InterfaceAudience.Private<a name="line.106"></a>
+<span class="sourceLineNo">107</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private static final Logger LOG =<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private static final String SERVER_NAME = "0";<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  private static final String PROTOCOL = "hdfs";<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  private static final String NAME_DELIMITER = " ";<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  private interface SaslAdaptor {<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.127"></a>
+<span class="sourceLineNo">114</span>  private static final String SERVER_NAME = "0";<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final String PROTOCOL = "hdfs";<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private static final String NAME_DELIMITER = " ";<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  private interface SaslAdaptor {<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
 <span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.132"></a>
+<span class="sourceLineNo">129</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  // helper class for convert protos.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private interface PBHelper {<a name="line.132"></a>
 <span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  // helper class for convert protos.<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  private interface PBHelper {<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.137"></a>
+<span class="sourceLineNo">134</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
 <span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final PBHelper PB_HELPER;<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private interface TransparentCryptoHelper {<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        throws IOException;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    Field saslPropsResolverField =<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    saslPropsResolverField.setAccessible(true);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    Field trustedChannelResolverField =<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    trustedChannelResolverField.setAccessible(true);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Field fallbackToSimpleAuthField =<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return new SaslAdaptor() {<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>      @Override<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        try {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        } catch (IllegalAccessException e) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>          throw new RuntimeException(e);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        }<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        try {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        } catch (IllegalAccessException e) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          throw new RuntimeException(e);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      }<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>      @Override<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        try {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (IllegalAccessException e) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          throw new RuntimeException(e);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    };<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    Class&lt;?&gt; helperClass;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    try {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } catch (ClassNotFoundException e) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    Method convertCipherOptionProtosMethod =<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    return new PBHelper() {<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>      @SuppressWarnings("unchecked")<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      @Override<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        try {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          throw new RuntimeException(e);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>      @SuppressWarnings("unchecked")<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      @Override<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        try {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>          throw new RuntimeException(e);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      }<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    };<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      throws NoSuchMethodException {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    return new TransparentCryptoHelper() {<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>      @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          DFSClient client) throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        try {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          KeyVersion decryptedKey =<a name="line.240"></a>
-<span class="sourceLineNo">241</span>              (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          return encryptor;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        } catch (InvocationTargetException e) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          throw new RuntimeException(e.getTargetException());<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        } catch (GeneralSecurityException e) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          throw new IOException(e);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        } catch (IllegalAccessException e) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          throw new RuntimeException(e);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      }<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    };<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  static {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    try {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      PB_HELPER = createPBHelper();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    } catch (Exception e) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          + "HBASE-16110 for more information.";<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      LOG.error(msg, e);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      throw new Error(msg, e);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>  /**<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    private final char[] password;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    private final String userName;<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>     * Creates a new SaslClientCallbackHandler.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>     * @param userName SASL user name<a name="line.282"></a>
-<span class="sourceLineNo">283</span>     * @Param password SASL password<a name="line.283"></a>
-<span class="sourceLineNo">284</span>     */<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      this.password = password;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      this.userName = userName;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    @Override<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      NameCallback nc = null;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      PasswordCallback pc = null;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      RealmCallback rc = null;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      for (Callback callback : callbacks) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          continue;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        } else if (callback instanceof NameCallback) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          nc = (NameCallback) callback;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        } else if (callback instanceof PasswordCallback) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>          pc = (PasswordCallback) callback;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        } else if (callback instanceof RealmCallback) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          rc = (RealmCallback) callback;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        } else {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      if (nc != null) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        nc.setName(userName);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      if (pc != null) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        pc.setPassword(password);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      if (rc != null) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        rc.setText(rc.getDefaultText());<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private final Configuration conf;<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    private final SaslClient saslClient;<a name="line.326"></a>
+<span class="sourceLineNo">139</span>  private static final PBHelper PB_HELPER;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  private interface TransparentCryptoHelper {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        throws IOException;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    Field saslPropsResolverField =<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    saslPropsResolverField.setAccessible(true);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    Field trustedChannelResolverField =<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    trustedChannelResolverField.setAccessible(true);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Field fallbackToSimpleAuthField =<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return new SaslAdaptor() {<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>      @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        try {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        } catch (IllegalAccessException e) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          throw new RuntimeException(e);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>      @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        try {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        } catch (IllegalAccessException e) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          throw new RuntimeException(e);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      }<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>      @Override<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        } catch (IllegalAccessException e) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          throw new RuntimeException(e);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    Class&lt;?&gt; helperClass;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    try {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    } catch (ClassNotFoundException e) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Method convertCipherOptionProtosMethod =<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    return new PBHelper() {<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>      @SuppressWarnings("unchecked")<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      @Override<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        try {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          throw new RuntimeException(e);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        }<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      }<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>      @SuppressWarnings("unchecked")<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          throw new RuntimeException(e);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    };<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  private static TransparentCryptoHelper createTransparentCryptoHelper27()<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      throws NoSuchMethodException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    return new TransparentCryptoHelper() {<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          DFSClient client) throws IOException {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          KeyVersion decryptedKey =<a name="line.237"></a>
+<span class="sourceLineNo">238</span>            (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          return encryptor;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        } catch (InvocationTargetException e) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          throw new RuntimeException(e.getTargetException());<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        } catch (GeneralSecurityException e) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          throw new IOException(e);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        } catch (IllegalAccessException e) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          throw new RuntimeException(e);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    };<a name="line.252"></a>
+<span class="sourceLineNo">253</span>  }<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>  private static TransparentCryptoHelper createTransparentCryptoHelper28()<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      throws ClassNotFoundException, NoSuchMethodException {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Class&lt;?&gt; hdfsKMSUtilCls = Class.forName("org.apache.hadoop.hdfs.HdfsKMSUtil");<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Method decryptEncryptedDataEncryptionKeyMethod = hdfsKMSUtilCls.getDeclaredMethod(<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      "decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class, KeyProvider.class);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    return new TransparentCryptoHelper() {<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>      @Override<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          DFSClient client) throws IOException {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        try {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          KeyVersion decryptedKey = (KeyVersion) decryptEncryptedDataEncryptionKeyMethod<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            .invoke(null, feInfo, client.getKeyProvider());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          return encryptor;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        } catch (InvocationTargetException e) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          throw new RuntimeException(e.getTargetException());<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        } catch (GeneralSecurityException e) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          throw new IOException(e);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        } catch (IllegalAccessException e) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>          throw new RuntimeException(e);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    };<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      throws NoSuchMethodException, ClassNotFoundException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      return createTransparentCryptoHelper27();<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    } catch (NoSuchMethodException e) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      LOG.debug("No decryptEncryptedDataEncryptionKey method in DFSClient, should be hadoop 2.8+",<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        e);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    return createTransparentCryptoHelper28();<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  static {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    try {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      PB_HELPER = createPBHelper();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    } catch (Exception e) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          + "HBASE-16110 for more information.";<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      LOG.error(msg, e);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      throw new Error(msg, e);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  }<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /**<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   */<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    private final char[] password;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    private final String userName;<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>    /**<a name="line.318"></a>
+<span class="sourceLineNo">319</span>     * Creates a new SaslClientCallbackHandler.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>     * @param userName SASL user name<a name="line.320"></a>
+<span class="sourceLineNo">321</span>     * @Param password SASL password<a name="line.321"></a>
+<span class="sourceLineNo">322</span>     */<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      this.password = password;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      this.userName = userName;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>    private final int timeoutMs;<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    private final Promise&lt;Void&gt; promise;<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>    private int step = 0;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      this.conf = conf;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      this.saslProps = saslProps;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      this.timeoutMs = timeoutMs;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      this.promise = promise;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    }<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      sendSaslMessage(ctx, payload, null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      // values for future expansion.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        return null;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    }<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      if (payload != null) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        // and we want to keep that out of hbase-server.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      }<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (options != null) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      int size = proto.getSerializedSize();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      ctx.write(buf);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>    @Override<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      ctx.flush();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      step++;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    }<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      saslClient.dispose();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        throw new IOException(proto.getMessage());<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    private String getNegotiatedQop() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>    private boolean isNegotiatedQopPrivacy() {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      String qop = getNegotiatedQop();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      return qop != null &amp;&amp; "auth-conf".equalsIgnoreCase(qop);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>    private boolean requestedQopContainsPrivacy() {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      Set&lt;String&gt; requestedQop =<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      return requestedQop.contains("auth-conf");<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>    private void checkSaslComplete() throws IOException {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      if (!saslClient.isComplete()) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        throw new IOException("Failed to complete SASL handshake");<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      Set&lt;String&gt; requestedQop =<a name="line.424"></a>
-<span class="sourceLineNo">425</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      String negotiatedQop = getNegotiatedQop();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      LOG.debug(<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        "Verifying QOP, requested QOP = " + requestedQop + ", negotiated QOP = " + negotiatedQop);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (!requestedQop.contains(negotiatedQop)) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        throw new IOException(String.format("SASL handshake completed, but "<a name="line.430"></a>
-<span class="sourceLineNo">431</span>            + "channel does not have acceptable quality of protection, "<a name="line.431"></a>
-<span class="sourceLineNo">432</span>            + "requested = %s, negotiated = %s",<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          requestedQop, negotiatedQop));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>    private boolean useWrap() {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      String qop = (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      return qop != null &amp;&amp; !"auth".equalsIgnoreCase(qop);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    private CipherOption unwrap(CipherOption option, SaslClient saslClient) throws IOException {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      byte[] inKey = option.getInKey();<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      if (inKey != null) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        inKey = saslClient.unwrap(inKey, 0, inKey.length);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      byte[] outKey = option.getOutKey();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      if (outKey != null) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        outKey = saslClient.unwrap(outKey, 0, outKey.length);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      }<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return new CipherOption(option.getCipherSuite(), inKey, option.getInIv(), outKey,<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          option.getOutIv());<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    }<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    private CipherOption getCipherOption(DataTransferEncryptorMessageProto proto,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        boolean isNegotiatedQopPrivacy, SaslClient saslClient) throws IOException {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      List&lt;CipherOption&gt; cipherOptions =<a name="line.457"></a>
-<span class="sourceLineNo">458</span>          PB_HELPER.convertCipherOptionProtos(proto.getCipherOptionList());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      if (cipherOptions == null || cipherOptions.isEmpty()) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        return null;<a name="line.460"></a>
+<span class="sourceLineNo">328</span>    @Override<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      NameCallback nc = null;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      PasswordCallback pc = null;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      RealmCallback rc = null;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      for (Callback callback : callbacks) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>          continue;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        } else if (callback instanceof NameCallback) {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          nc = (NameCallback) callback;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        } else if (callback instanceof PasswordCallback) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>          pc = (PasswordCallback) callback;<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        } else if (callback instanceof RealmCallback) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          rc = (RealmCallback) callback;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        } else {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      if (nc != null) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        nc.setName(userName);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      if (pc != null) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        pc.setPassword(password);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      if (rc != null) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        rc.setText(rc.getDefaultText());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>    private final Configuration conf;<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>    private final SaslClient saslClient;<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    private final int timeoutMs;<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>    private final Promise&lt;Void&gt; promise;<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>    private int step = 0;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      this.conf = conf;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      this.saslProps = saslProps;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      this.timeoutMs = timeoutMs;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      this.promise = promise;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      sendSaslMessage(ctx, payload, null);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      // values for future expansion.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        return null;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.395"></a>
+<span class="sourceLineNo">396</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      if (payload != null) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        // and we want to keep that out of hbase-server.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      if (options != null) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      int size = proto.getSerializedSize();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      ctx.write(buf);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>    @Override<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      ctx.flush();<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      step++;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    @Override<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      saslClient.dispose();<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        throw new IOException(proto.getMessage());<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    private String getNegotiatedQop() {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>    private boolean isNegotiatedQopPrivacy() {<a name="line.447"></a>
+<span class="sourc

<TRUNCATED>

[08/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html
index 05e032c..40ef9f4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html
@@ -25,767 +25,805 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.io.asyncfs;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.21"></a>
 <span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import com.google.protobuf.CodedOutputStream;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.io.IOException;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.lang.reflect.Field;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.lang.reflect.InvocationTargetException;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.lang.reflect.Method;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.net.InetAddress;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import java.net.InetSocketAddress;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import java.nio.ByteBuffer;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import java.security.GeneralSecurityException;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import java.util.Arrays;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import java.util.Collections;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import java.util.List;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import java.util.Map;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import java.util.Set;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import java.util.concurrent.TimeUnit;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>import javax.security.auth.callback.Callback;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import javax.security.auth.callback.CallbackHandler;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import javax.security.auth.callback.NameCallback;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import javax.security.auth.callback.PasswordCallback;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import javax.security.sasl.RealmCallback;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import javax.security.sasl.Sasl;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import javax.security.sasl.SaslClient;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import javax.security.sasl.SaslException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.commons.codec.binary.Base64;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.commons.lang3.StringUtils;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.conf.Configuration;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.slf4j.Logger;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.slf4j.LoggerFactory;<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>import com.google.protobuf.ByteString;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.security.token.Token;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>/**<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> */<a name="line.108"></a>
-<span class="sourceLineNo">109</span>@InterfaceAudience.Private<a name="line.109"></a>
-<span class="sourceLineNo">110</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private static final Logger LOG =<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.112"></a>
+<span class="sourceLineNo">023</span>import com.google.protobuf.ByteString;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import com.google.protobuf.CodedOutputStream;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.lang.reflect.Field;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.lang.reflect.InvocationTargetException;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.lang.reflect.Method;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.InetAddress;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.net.InetSocketAddress;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.nio.ByteBuffer;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.security.GeneralSecurityException;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Arrays;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Collections;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.List;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Map;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Set;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.concurrent.TimeUnit;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import javax.security.auth.callback.Callback;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import javax.security.auth.callback.CallbackHandler;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import javax.security.auth.callback.NameCallback;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import javax.security.auth.callback.PasswordCallback;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import javax.security.sasl.RealmCallback;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import javax.security.sasl.Sasl;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import javax.security.sasl.SaslClient;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import javax.security.sasl.SaslException;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.commons.codec.binary.Base64;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.commons.lang3.StringUtils;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.crypto.key.KeyProvider;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.security.token.Token;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.slf4j.Logger;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.LoggerFactory;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>/**<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.104"></a>
+<span class="sourceLineNo">105</span> */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>@InterfaceAudience.Private<a name="line.106"></a>
+<span class="sourceLineNo">107</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private static final Logger LOG =<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private static final String SERVER_NAME = "0";<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  private static final String PROTOCOL = "hdfs";<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  private static final String NAME_DELIMITER = " ";<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  private interface SaslAdaptor {<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.127"></a>
+<span class="sourceLineNo">114</span>  private static final String SERVER_NAME = "0";<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final String PROTOCOL = "hdfs";<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private static final String NAME_DELIMITER = " ";<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  private interface SaslAdaptor {<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
 <span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.132"></a>
+<span class="sourceLineNo">129</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  // helper class for convert protos.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private interface PBHelper {<a name="line.132"></a>
 <span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  // helper class for convert protos.<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  private interface PBHelper {<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.137"></a>
+<span class="sourceLineNo">134</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
 <span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final PBHelper PB_HELPER;<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private interface TransparentCryptoHelper {<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        throws IOException;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    Field saslPropsResolverField =<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    saslPropsResolverField.setAccessible(true);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    Field trustedChannelResolverField =<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    trustedChannelResolverField.setAccessible(true);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Field fallbackToSimpleAuthField =<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return new SaslAdaptor() {<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>      @Override<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        try {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        } catch (IllegalAccessException e) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>          throw new RuntimeException(e);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        }<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        try {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        } catch (IllegalAccessException e) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          throw new RuntimeException(e);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      }<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>      @Override<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        try {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (IllegalAccessException e) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          throw new RuntimeException(e);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    };<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    Class&lt;?&gt; helperClass;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    try {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } catch (ClassNotFoundException e) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    Method convertCipherOptionProtosMethod =<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    return new PBHelper() {<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>      @SuppressWarnings("unchecked")<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      @Override<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        try {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          throw new RuntimeException(e);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>      @SuppressWarnings("unchecked")<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      @Override<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        try {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>          throw new RuntimeException(e);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      }<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    };<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      throws NoSuchMethodException {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    return new TransparentCryptoHelper() {<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>      @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          DFSClient client) throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        try {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          KeyVersion decryptedKey =<a name="line.240"></a>
-<span class="sourceLineNo">241</span>              (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          return encryptor;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        } catch (InvocationTargetException e) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          throw new RuntimeException(e.getTargetException());<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        } catch (GeneralSecurityException e) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          throw new IOException(e);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        } catch (IllegalAccessException e) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          throw new RuntimeException(e);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      }<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    };<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  static {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    try {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      PB_HELPER = createPBHelper();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    } catch (Exception e) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          + "HBASE-16110 for more information.";<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      LOG.error(msg, e);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      throw new Error(msg, e);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>  /**<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    private final char[] password;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    private final String userName;<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>     * Creates a new SaslClientCallbackHandler.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>     * @param userName SASL user name<a name="line.282"></a>
-<span class="sourceLineNo">283</span>     * @Param password SASL password<a name="line.283"></a>
-<span class="sourceLineNo">284</span>     */<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      this.password = password;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      this.userName = userName;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    @Override<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      NameCallback nc = null;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      PasswordCallback pc = null;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      RealmCallback rc = null;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      for (Callback callback : callbacks) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          continue;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        } else if (callback instanceof NameCallback) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          nc = (NameCallback) callback;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        } else if (callback instanceof PasswordCallback) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>          pc = (PasswordCallback) callback;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        } else if (callback instanceof RealmCallback) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          rc = (RealmCallback) callback;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        } else {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      if (nc != null) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        nc.setName(userName);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      if (pc != null) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        pc.setPassword(password);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      if (rc != null) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        rc.setText(rc.getDefaultText());<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private final Configuration conf;<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    private final SaslClient saslClient;<a name="line.326"></a>
+<span class="sourceLineNo">139</span>  private static final PBHelper PB_HELPER;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  private interface TransparentCryptoHelper {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        throws IOException;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    Field saslPropsResolverField =<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    saslPropsResolverField.setAccessible(true);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    Field trustedChannelResolverField =<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    trustedChannelResolverField.setAccessible(true);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Field fallbackToSimpleAuthField =<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return new SaslAdaptor() {<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>      @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        try {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        } catch (IllegalAccessException e) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          throw new RuntimeException(e);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>      @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        try {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        } catch (IllegalAccessException e) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          throw new RuntimeException(e);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      }<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>      @Override<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        } catch (IllegalAccessException e) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          throw new RuntimeException(e);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    Class&lt;?&gt; helperClass;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    try {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    } catch (ClassNotFoundException e) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Method convertCipherOptionProtosMethod =<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    return new PBHelper() {<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>      @SuppressWarnings("unchecked")<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      @Override<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        try {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          throw new RuntimeException(e);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        }<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      }<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>      @SuppressWarnings("unchecked")<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          throw new RuntimeException(e);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    };<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  private static TransparentCryptoHelper createTransparentCryptoHelper27()<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      throws NoSuchMethodException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    return new TransparentCryptoHelper() {<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          DFSClient client) throws IOException {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          KeyVersion decryptedKey =<a name="line.237"></a>
+<span class="sourceLineNo">238</span>            (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          return encryptor;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        } catch (InvocationTargetException e) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          throw new RuntimeException(e.getTargetException());<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        } catch (GeneralSecurityException e) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          throw new IOException(e);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        } catch (IllegalAccessException e) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          throw new RuntimeException(e);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    };<a name="line.252"></a>
+<span class="sourceLineNo">253</span>  }<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>  private static TransparentCryptoHelper createTransparentCryptoHelper28()<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      throws ClassNotFoundException, NoSuchMethodException {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Class&lt;?&gt; hdfsKMSUtilCls = Class.forName("org.apache.hadoop.hdfs.HdfsKMSUtil");<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Method decryptEncryptedDataEncryptionKeyMethod = hdfsKMSUtilCls.getDeclaredMethod(<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      "decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class, KeyProvider.class);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    return new TransparentCryptoHelper() {<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>      @Override<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          DFSClient client) throws IOException {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        try {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          KeyVersion decryptedKey = (KeyVersion) decryptEncryptedDataEncryptionKeyMethod<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            .invoke(null, feInfo, client.getKeyProvider());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          return encryptor;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        } catch (InvocationTargetException e) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          throw new RuntimeException(e.getTargetException());<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        } catch (GeneralSecurityException e) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          throw new IOException(e);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        } catch (IllegalAccessException e) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>          throw new RuntimeException(e);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    };<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      throws NoSuchMethodException, ClassNotFoundException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      return createTransparentCryptoHelper27();<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    } catch (NoSuchMethodException e) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      LOG.debug("No decryptEncryptedDataEncryptionKey method in DFSClient, should be hadoop 2.8+",<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        e);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    return createTransparentCryptoHelper28();<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  static {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    try {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      PB_HELPER = createPBHelper();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    } catch (Exception e) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          + "HBASE-16110 for more information.";<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      LOG.error(msg, e);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      throw new Error(msg, e);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  }<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /**<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   */<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    private final char[] password;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    private final String userName;<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>    /**<a name="line.318"></a>
+<span class="sourceLineNo">319</span>     * Creates a new SaslClientCallbackHandler.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>     * @param userName SASL user name<a name="line.320"></a>
+<span class="sourceLineNo">321</span>     * @Param password SASL password<a name="line.321"></a>
+<span class="sourceLineNo">322</span>     */<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      this.password = password;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      this.userName = userName;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>    private final int timeoutMs;<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    private final Promise&lt;Void&gt; promise;<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>    private int step = 0;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      this.conf = conf;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      this.saslProps = saslProps;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      this.timeoutMs = timeoutMs;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      this.promise = promise;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    }<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      sendSaslMessage(ctx, payload, null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      // values for future expansion.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        return null;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    }<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      if (payload != null) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        // and we want to keep that out of hbase-server.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      }<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (options != null) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      int size = proto.getSerializedSize();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      ctx.write(buf);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>    @Override<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      ctx.flush();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      step++;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    }<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      saslClient.dispose();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        throw new IOException(proto.getMessage());<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    private String getNegotiatedQop() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>    private boolean isNegotiatedQopPrivacy() {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      String qop = getNegotiatedQop();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      return qop != null &amp;&amp; "auth-conf".equalsIgnoreCase(qop);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>    private boolean requestedQopContainsPrivacy() {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      Set&lt;String&gt; requestedQop =<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      return requestedQop.contains("auth-conf");<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>    private void checkSaslComplete() throws IOException {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      if (!saslClient.isComplete()) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        throw new IOException("Failed to complete SASL handshake");<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      Set&lt;String&gt; requestedQop =<a name="line.424"></a>
-<span class="sourceLineNo">425</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      String negotiatedQop = getNegotiatedQop();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      LOG.debug(<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        "Verifying QOP, requested QOP = " + requestedQop + ", negotiated QOP = " + negotiatedQop);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (!requestedQop.contains(negotiatedQop)) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        throw new IOException(String.format("SASL handshake completed, but "<a name="line.430"></a>
-<span class="sourceLineNo">431</span>            + "channel does not have acceptable quality of protection, "<a name="line.431"></a>
-<span class="sourceLineNo">432</span>            + "requested = %s, negotiated = %s",<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          requestedQop, negotiatedQop));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>    private boolean useWrap() {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      String qop = (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      return qop != null &amp;&amp; !"auth".equalsIgnoreCase(qop);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    private CipherOption unwrap(CipherOption option, SaslClient saslClient) throws IOException {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      byte[] inKey = option.getInKey();<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      if (inKey != null) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        inKey = saslClient.unwrap(inKey, 0, inKey.length);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      byte[] outKey = option.getOutKey();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      if (outKey != null) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        outKey = saslClient.unwrap(outKey, 0, outKey.length);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      }<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return new CipherOption(option.getCipherSuite(), inKey, option.getInIv(), outKey,<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          option.getOutIv());<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    }<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    private CipherOption getCipherOption(DataTransferEncryptorMessageProto proto,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        boolean isNegotiatedQopPrivacy, SaslClient saslClient) throws IOException {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      List&lt;CipherOption&gt; cipherOptions =<a name="line.457"></a>
-<span class="sourceLineNo">458</span>          PB_HELPER.convertCipherOptionProtos(proto.getCipherOptionList());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      if (cipherOptions == null || cipherOptions.isEmpty()) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        return null;<a name="line.460"></a>
+<span class="sourceLineNo">328</span>    @Override<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      NameCallback nc = null;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      PasswordCallback pc = null;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      RealmCallback rc = null;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      for (Callback callback : callbacks) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>          continue;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        } else if (callback instanceof NameCallback) {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          nc = (NameCallback) callback;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        } else if (callback instanceof PasswordCallback) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>          pc = (PasswordCallback) callback;<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        } else if (callback instanceof RealmCallback) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          rc = (RealmCallback) callback;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        } else {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      if (nc != null) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        nc.setName(userName);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      if (pc != null) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        pc.setPassword(password);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      if (rc != null) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        rc.setText(rc.getDefaultText());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>    private final Configuration conf;<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>    private final SaslClient saslClient;<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    private final int timeoutMs;<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>    private final Promise&lt;Void&gt; promise;<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>    private int step = 0;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      this.conf = conf;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      this.saslProps = saslProps;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      this.timeoutMs = timeoutMs;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      this.promise = promise;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      sendSaslMessage(ctx, payload, null);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      // values for future expansion.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        return null;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.395"></a>
+<span class="sourceLineNo">396</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      if (payload != null) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        // and we want to keep that out of hbase-server.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      if (options != null) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      int size = proto.getSerializedSize();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      ctx.write(buf);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>    @Override<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      ctx.flush();<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      step++;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    @Override<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      saslClient.dispose();<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        throw new IOException(proto.getMessage());<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    private String getNegotiatedQop() {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>    private boolean isNegotiatedQopPrivacy() {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      String qop = getNego

<TRUNCATED>

[49/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index ba9351b..1eeeba8 100644
--- a/book.html
+++ b/book.html
@@ -17623,6 +17623,18 @@ See the above HDFS Architecture link for more information.</p>
 <div class="sect1">
 <h2 id="arch.timelineconsistent.reads"><a class="anchor" href="#arch.timelineconsistent.reads"></a>74. Timeline-consistent High Available Reads</h2>
 <div class="sectionbody">
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+The current <a href="#amv2">Assignment Manager V2</a> does not work well with region replica, so this feature maybe broken. Use it with caution.
+</td>
+</tr>
+</table>
+</div>
 <div class="sect2">
 <h3 id="casestudies.timelineconsistent.intro"><a class="anchor" href="#casestudies.timelineconsistent.intro"></a>74.1. Introduction</h3>
 <div class="paragraph">
@@ -40625,7 +40637,7 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2018-06-30 17:03:31 UTC
+Last updated 2018-07-03 19:46:59 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index d3c1104..de96b42 100644
--- a/bulk-loads.html
+++ b/bulk-loads.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="20180630" />
+    <meta name="Date-Revision-yyyymmdd" content="20180703" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -306,7 +306,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: 2018-06-30</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-07-03</li>
             </p>
                 </div>
 


[25/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index 4c32817..a2cfe64 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -165,7 +165,7 @@
 </li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.MemStoreChunkPool.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.MemStoreChunkPool</span></a> (implements org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HeapMemoryManager.HeapMemoryTuneObserver.html" title="interface in org.apache.hadoop.hbase.regionserver">HeapMemoryManager.HeapMemoryTuneObserver</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryFlushRunnable.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.InMemoryFlushRunnable</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.InMemoryCompactionRunnable.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.InMemoryCompactionRunnable</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.compactions.<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions"><span class="typeNameLink">CompactionContext</span></a>
 <ul>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DateTieredStoreEngine.DateTieredCompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DateTieredStoreEngine.DateTieredCompactionContext</span></a></li>
@@ -704,20 +704,20 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultHeapMemoryTuner.StepDirection.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DefaultHeapMemoryTuner.StepDirection</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
index 858ccf6..23060c2 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
@@ -130,8 +130,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">DeleteTracker.DeleteResult</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/StripeCompactionScanQueryMatcher.DropDeletesInOutput.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">StripeCompactionScanQueryMatcher.DropDeletesInOutput</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">DeleteTracker.DeleteResult</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">ScanQueryMatcher.MatchCode</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
index 46651a5..feee307 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
@@ -247,9 +247,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.Type.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">RingBufferTruck.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.WALHdrResult.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">ProtobufLogReader.WALHdrResult</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/CompressionContext.DictionaryIndex.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">CompressionContext.DictionaryIndex</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.Type.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">RingBufferTruck.Type</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html b/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
index f8e4b11..3c7146a 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
@@ -160,8 +160,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">SyncReplicationState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.PeerState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">ReplicationPeer.PeerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">SyncReplicationState</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html
index da73373..e77672f 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":42,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":42,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -138,30 +138,34 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#ageOfLastShippedOp">ageOfLastShippedOp</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSource.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSourceSource</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#globalSourceSource">globalSourceSource</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#id">id</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#lastHFileRefsQueueSize">lastHFileRefsQueueSize</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#lastTimestamps">lastTimestamps</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static org.slf4j.Logger</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSource.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSourceSource</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#singleSourceSource">singleSourceSource</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSource.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSourceSource</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#singleSourceSourceByTable">singleSourceSourceByTable</a></span></code>&nbsp;</td>
 </tr>
@@ -242,52 +246,64 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 </td>
 </tr>
 <tr id="i5" class="rowColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#getAgeofLastShippedOp-java.lang.String-">getAgeofLastShippedOp</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroup)</code>
+<div class="block">get age of last shipped op of given wal group.</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#getLastTimeStampOfWalGroup-java.lang.String-">getLastTimeStampOfWalGroup</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroup)</code>
+<div class="block">get the last timestamp of given wal group.</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#getMetricsContext--">getMetricsContext</a></span>()</code>
 <div class="block">Get the metrics context.</div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#getMetricsDescription--">getMetricsDescription</a></span>()</code>
 <div class="block">Get the description of what this source exposes.</div>
 </td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#getMetricsJmxContext--">getMetricsJmxContext</a></span>()</code>
 <div class="block">Get the name of the context in JMX that this source will be exposed through.</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#getMetricsName--">getMetricsName</a></span>()</code>
 <div class="block">Get the name of the metrics that are being exported by this source.</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#getPeerID--">getPeerID</a></span>()</code>
 <div class="block">Get the slave peer ID</div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSource.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSourceSource</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#getSingleSourceSourceByTable--">getSingleSourceSourceByTable</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#getSizeOfLogQueue--">getSizeOfLogQueue</a></span>()</code>
 <div class="block">Get the sizeOfLogQueue</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#getTimestampOfLastShippedOp--">getTimestampOfLastShippedOp</a></span>()</code>
 <div class="block">Get the timestampsOfLastShippedOp, if there are multiple groups, return the latest one</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#getTimeStampOfLastShippedOp--">getTimeStampOfLastShippedOp</a></span>()</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -295,135 +311,135 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 </div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#incCounters-java.lang.String-long-">incCounters</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;counterName,
            long&nbsp;delta)</code>
 <div class="block">Add some amount to a counter.</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#incGauge-java.lang.String-long-">incGauge</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;gaugeName,
         long&nbsp;delta)</code>
 <div class="block">Add some amount to a gauge.</div>
 </td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#incrBytesSkippedInUncleanlyClosedWALs-long-">incrBytesSkippedInUncleanlyClosedWALs</a></span>(long&nbsp;bytes)</code>&nbsp;</td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#incrCompletedRecoveryQueue--">incrCompletedRecoveryQueue</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#incrCompletedWAL--">incrCompletedWAL</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#incrLogEditsFiltered--">incrLogEditsFiltered</a></span>()</code>
 <div class="block">The number of log edits filtered out.</div>
 </td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#incrLogEditsFiltered-long-">incrLogEditsFiltered</a></span>(long&nbsp;delta)</code>
 <div class="block">Add on the number of log edits filtered</div>
 </td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#incrLogEditsRead--">incrLogEditsRead</a></span>()</code>
 <div class="block">Increment the number of log edits read by one.</div>
 </td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#incrLogEditsRead-long-">incrLogEditsRead</a></span>(long&nbsp;delta)</code>
 <div class="block">Add on the the number of log edits read</div>
 </td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#incrLogReadInBytes-long-">incrLogReadInBytes</a></span>(long&nbsp;readInBytes)</code>
 <div class="block">increase the byte number read by source from log file</div>
 </td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#incrRepeatedFileBytes-long-">incrRepeatedFileBytes</a></span>(long&nbsp;bytes)</code>&nbsp;</td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#incrRestartedWALReading--">incrRestartedWALReading</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#incrSizeOfHFileRefsQueue-long-">incrSizeOfHFileRefsQueue</a></span>(long&nbsp;size)</code>&nbsp;</td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#incrSizeOfLogQueue--">incrSizeOfLogQueue</a></span>()</code>
 <div class="block">Increment size of the log queue.</div>
 </td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#incrUncleanlyClosedWALs--">incrUncleanlyClosedWALs</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#incrUnknownFileLengthForClosedWAL--">incrUnknownFileLengthForClosedWAL</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i32" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#init--">init</a></span>()</code>
 <div class="block">Clear out the metrics and re-prepare the source.</div>
 </td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#refreshAgeOfLastShippedOp-java.lang.String-">refreshAgeOfLastShippedOp</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroupId)</code>
 <div class="block">Convenience method to use the last given timestamp to refresh the age of the last edit.</div>
 </td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#removeMetric-java.lang.String-">removeMetric</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</code>
 <div class="block">Remove a metric and no longer announce it.</div>
 </td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#setAgeOfLastShippedOp-long-java.lang.String-">setAgeOfLastShippedOp</a></span>(long&nbsp;timestamp,
                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroup)</code>
 <div class="block">Set the age of the last edit that was shipped</div>
 </td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i36" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#setAgeOfLastShippedOpByTable-long-java.lang.String-">setAgeOfLastShippedOpByTable</a></span>(long&nbsp;timestamp,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;tableName)</code>
 <div class="block">Set the age of the last edit that was shipped group by table</div>
 </td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i37" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#setGauge-java.lang.String-long-">setGauge</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;gaugeName,
         long&nbsp;value)</code>
 <div class="block">Set a gauge to a specific value.</div>
 </td>
 </tr>
-<tr id="i36" class="altColor">
+<tr id="i38" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#shipBatch-long-int-">shipBatch</a></span>(long&nbsp;batchSize,
          int&nbsp;sizeInBytes)</code>
 <div class="block">Convience method to apply changes to metrics do to shipping a batch of logs.</div>
 </td>
 </tr>
-<tr id="i37" class="rowColor">
+<tr id="i39" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#shipBatch-long-int-long-">shipBatch</a></span>(long&nbsp;batchSize,
          int&nbsp;sizeInBytes,
@@ -431,7 +447,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <div class="block">Convience method to apply changes to metrics do to shipping a batch of logs.</div>
 </td>
 </tr>
-<tr id="i38" class="altColor">
+<tr id="i40" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#updateHistogram-java.lang.String-long-">updateHistogram</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                long&nbsp;value)</code>
@@ -485,13 +501,22 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.44">lastTimestamps</a></pre>
 </li>
 </ul>
+<a name="ageOfLastShippedOp">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ageOfLastShippedOp</h4>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.45">ageOfLastShippedOp</a></pre>
+</li>
+</ul>
 <a name="lastHFileRefsQueueSize">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>lastHFileRefsQueueSize</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.45">lastHFileRefsQueueSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.46">lastHFileRefsQueueSize</a></pre>
 </li>
 </ul>
 <a name="id">
@@ -500,7 +525,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockList">
 <li class="blockList">
 <h4>id</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.46">id</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.47">id</a></pre>
 </li>
 </ul>
 <a name="singleSourceSource">
@@ -509,7 +534,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockList">
 <li class="blockList">
 <h4>singleSourceSource</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSource.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSourceSource</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.48">singleSourceSource</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSource.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSourceSource</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.49">singleSourceSource</a></pre>
 </li>
 </ul>
 <a name="globalSourceSource">
@@ -518,7 +543,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockList">
 <li class="blockList">
 <h4>globalSourceSource</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSource.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSourceSource</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.49">globalSourceSource</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSource.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSourceSource</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.50">globalSourceSource</a></pre>
 </li>
 </ul>
 <a name="singleSourceSourceByTable">
@@ -527,7 +552,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockListLast">
 <li class="blockList">
 <h4>singleSourceSourceByTable</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSource.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSourceSource</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.50">singleSourceSourceByTable</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSource.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSourceSource</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.51">singleSourceSourceByTable</a></pre>
 </li>
 </ul>
 </li>
@@ -544,7 +569,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockList">
 <li class="blockList">
 <h4>MetricsSource</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.57">MetricsSource</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.58">MetricsSource</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)</pre>
 <div class="block">Constructor used to register the metrics</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -558,7 +583,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MetricsSource</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.72">MetricsSource</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.73">MetricsSource</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id,
                      <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSource.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSourceSource</a>&nbsp;singleSourceSource,
                      <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSource.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSourceSource</a>&nbsp;globalSourceSource,
                      <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSource.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSourceSource</a>&gt;&nbsp;singleSourceSourceByTable)</pre>
@@ -585,7 +610,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockList">
 <li class="blockList">
 <h4>setAgeOfLastShippedOp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.86">setAgeOfLastShippedOp</a>(long&nbsp;timestamp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.87">setAgeOfLastShippedOp</a>(long&nbsp;timestamp,
                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroup)</pre>
 <div class="block">Set the age of the last edit that was shipped</div>
 <dl>
@@ -601,7 +626,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockList">
 <li class="blockList">
 <h4>setAgeOfLastShippedOpByTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.98">setAgeOfLastShippedOpByTable</a>(long&nbsp;timestamp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.100">setAgeOfLastShippedOpByTable</a>(long&nbsp;timestamp,
                                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;tableName)</pre>
 <div class="block">Set the age of the last edit that was shipped group by table</div>
 <dl>
@@ -611,13 +636,45 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 </dl>
 </li>
 </ul>
+<a name="getLastTimeStampOfWalGroup-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getLastTimeStampOfWalGroup</h4>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.113">getLastTimeStampOfWalGroup</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroup)</pre>
+<div class="block">get the last timestamp of given wal group. If the walGroup is null, return 0.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>walGroup</code> - which group we are getting</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>timeStamp</dd>
+</dl>
+</li>
+</ul>
+<a name="getAgeofLastShippedOp-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getAgeofLastShippedOp</h4>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.122">getAgeofLastShippedOp</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroup)</pre>
+<div class="block">get age of last shipped op of given wal group. If the walGroup is null, return 0</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>walGroup</code> - which group we are getting</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>age</dd>
+</dl>
+</li>
+</ul>
 <a name="refreshAgeOfLastShippedOp-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>refreshAgeOfLastShippedOp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.111">refreshAgeOfLastShippedOp</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroupId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.131">refreshAgeOfLastShippedOp</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walGroupId)</pre>
 <div class="block">Convenience method to use the last given timestamp to refresh the age of the last edit. Used
  when replication fails and need to keep that metric accurate.</div>
 <dl>
@@ -632,7 +689,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockList">
 <li class="blockList">
 <h4>incrSizeOfLogQueue</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.125">incrSizeOfLogQueue</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.145">incrSizeOfLogQueue</a>()</pre>
 <div class="block">Increment size of the log queue.</div>
 </li>
 </ul>
@@ -642,7 +699,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockList">
 <li class="blockList">
 <h4>decrSizeOfLogQueue</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.130">decrSizeOfLogQueue</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.150">decrSizeOfLogQueue</a>()</pre>
 </li>
 </ul>
 <a name="incrLogEditsRead-long-">
@@ -651,7 +708,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockList">
 <li class="blockList">
 <h4>incrLogEditsRead</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.140">incrLogEditsRead</a>(long&nbsp;delta)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.160">incrLogEditsRead</a>(long&nbsp;delta)</pre>
 <div class="block">Add on the the number of log edits read</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -665,7 +722,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockList">
 <li class="blockList">
 <h4>incrLogEditsRead</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.146">incrLogEditsRead</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.166">incrLogEditsRead</a>()</pre>
 <div class="block">Increment the number of log edits read by one.</div>
 </li>
 </ul>
@@ -675,7 +732,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockList">
 <li class="blockList">
 <h4>incrLogEditsFiltered</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.155">incrLogEditsFiltered</a>(long&nbsp;delta)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.175">incrLogEditsFiltered</a>(long&nbsp;delta)</pre>
 <div class="block">Add on the number of log edits filtered</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -689,7 +746,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockList">
 <li class="blockList">
 <h4>incrLogEditsFiltered</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.161">incrLogEditsFiltered</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.181">incrLogEditsFiltered</a>()</pre>
 <div class="block">The number of log edits filtered out.</div>
 </li>
 </ul>
@@ -699,7 +756,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockList">
 <li class="blockList">
 <h4>shipBatch</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.170">shipBatch</a>(long&nbsp;batchSize,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.190">shipBatch</a>(long&nbsp;batchSize,
                       int&nbsp;sizeInBytes)</pre>
 <div class="block">Convience method to apply changes to metrics do to shipping a batch of logs.</div>
 <dl>
@@ -714,7 +771,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockList">
 <li class="blockList">
 <h4>shipBatch</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.187">shipBatch</a>(long&nbsp;batchSize,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.207">shipBatch</a>(long&nbsp;batchSize,
                       int&nbsp;sizeInBytes,
                       long&nbsp;hfiles)</pre>
 <div class="block">Convience method to apply changes to metrics do to shipping a batch of logs.</div>
@@ -731,7 +788,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockList">
 <li class="blockList">
 <h4>incrLogReadInBytes</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.194">incrLogReadInBytes</a>(long&nbsp;readInBytes)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.214">incrLogReadInBytes</a>(long&nbsp;readInBytes)</pre>
 <div class="block">increase the byte number read by source from log file</div>
 </li>
 </ul>
@@ -741,7 +798,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockList">
 <li class="blockList">
 <h4>clear</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.200">clear</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.220">clear</a>()</pre>
 <div class="block">Removes all metrics about this Source.</div>
 </li>
 </ul>
@@ -751,7 +808,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockList">
 <li class="blockList">
 <h4>getAgeOfLastShippedOp</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.214">getAgeOfLastShippedOp</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.234">getAgeOfLastShippedOp</a>()</pre>
 <div class="block">Get AgeOfLastShippedOp</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -765,7 +822,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <ul class="blockList">
 <li class="blockList">
 <h4>getSizeOfLogQueue</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.222">getSizeOfLogQueue</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.242">getSizeOfLogQueue</a>()</pre>
 <div class="block">Get the sizeOfLogQueue</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -780,7 +837,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource
 <li class="blockList">
 <h4>getTimeStampOfLastShippedOp</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.233">getTimeStampOfLastShippedOp</a>()</pre>
+public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.253">getTimeStampOfLastShippedOp</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Since 2.0.0. Removed in 3.0.0.</span></div>
 <div class="block">Get the timeStampsOfLastShippedOp, if there are multiple groups, return the latest one</div>
 <dl>
@@ -797,7 +854,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getTimestampOfLastShippedOp</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.241">getTimestampOfLastShippedOp</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.261">getTimestampOfLastShippedOp</a>()</pre>
 <div class="block">Get the timestampsOfLastShippedOp, if there are multiple groups, return the latest one</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -811,7 +868,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getPeerID</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.255">getPeerID</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.275">getPeerID</a>()</pre>
 <div class="block">Get the slave peer ID</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -825,7 +882,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>incrSizeOfHFileRefsQueue</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.259">incrSizeOfHFileRefsQueue</a>(long&nbsp;size)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.279">incrSizeOfHFileRefsQueue</a>(long&nbsp;size)</pre>
 </li>
 </ul>
 <a name="decrSizeOfHFileRefsQueue-int-">
@@ -834,7 +891,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>decrSizeOfHFileRefsQueue</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.265">decrSizeOfHFileRefsQueue</a>(int&nbsp;size)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.285">decrSizeOfHFileRefsQueue</a>(int&nbsp;size)</pre>
 </li>
 </ul>
 <a name="incrUnknownFileLengthForClosedWAL--">
@@ -843,7 +900,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>incrUnknownFileLengthForClosedWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.274">incrUnknownFileLengthForClosedWAL</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.294">incrUnknownFileLengthForClosedWAL</a>()</pre>
 </li>
 </ul>
 <a name="incrUncleanlyClosedWALs--">
@@ -852,7 +909,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>incrUncleanlyClosedWALs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.279">incrUncleanlyClosedWALs</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.299">incrUncleanlyClosedWALs</a>()</pre>
 </li>
 </ul>
 <a name="incrBytesSkippedInUncleanlyClosedWALs-long-">
@@ -861,7 +918,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>incrBytesSkippedInUncleanlyClosedWALs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.284">incrBytesSkippedInUncleanlyClosedWALs</a>(long&nbsp;bytes)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.304">incrBytesSkippedInUncleanlyClosedWALs</a>(long&nbsp;bytes)</pre>
 </li>
 </ul>
 <a name="incrRestartedWALReading--">
@@ -870,7 +927,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>incrRestartedWALReading</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.289">incrRestartedWALReading</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.309">incrRestartedWALReading</a>()</pre>
 </li>
 </ul>
 <a name="incrRepeatedFileBytes-long-">
@@ -879,7 +936,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>incrRepeatedFileBytes</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.294">incrRepeatedFileBytes</a>(long&nbsp;bytes)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.314">incrRepeatedFileBytes</a>(long&nbsp;bytes)</pre>
 </li>
 </ul>
 <a name="incrCompletedWAL--">
@@ -888,7 +945,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>incrCompletedWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.299">incrCompletedWAL</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.319">incrCompletedWAL</a>()</pre>
 </li>
 </ul>
 <a name="incrCompletedRecoveryQueue--">
@@ -897,7 +954,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>incrCompletedRecoveryQueue</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.304">incrCompletedRecoveryQueue</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.324">incrCompletedRecoveryQueue</a>()</pre>
 </li>
 </ul>
 <a name="init--">
@@ -906,7 +963,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>init</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.310">init</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.330">init</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html#init--">BaseSource</a></code></span></div>
 <div class="block">Clear out the metrics and re-prepare the source.</div>
 <dl>
@@ -921,7 +978,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setGauge</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.316">setGauge</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;gaugeName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.336">setGauge</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;gaugeName,
                      long&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html#setGauge-java.lang.String-long-">BaseSource</a></code></span></div>
 <div class="block">Set a gauge to a specific value.</div>
@@ -940,7 +997,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>incGauge</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.322">incGauge</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;gaugeName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.342">incGauge</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;gaugeName,
                      long&nbsp;delta)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html#incGauge-java.lang.String-long-">BaseSource</a></code></span></div>
 <div class="block">Add some amount to a gauge.</div>
@@ -959,7 +1016,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>decGauge</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.328">decGauge</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;gaugeName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.348">decGauge</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;gaugeName,
                      long&nbsp;delta)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html#decGauge-java.lang.String-long-">BaseSource</a></code></span></div>
 <div class="block">Subtract some amount from a gauge.</div>
@@ -978,7 +1035,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>removeMetric</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.334">removeMetric</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.354">removeMetric</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html#removeMetric-java.lang.String-">BaseSource</a></code></span></div>
 <div class="block">Remove a metric and no longer announce it.</div>
 <dl>
@@ -995,7 +1052,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>incCounters</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.340">incCounters</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;counterName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.360">incCounters</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;counterName,
                         long&nbsp;delta)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html#incCounters-java.lang.String-long-">BaseSource</a></code></span></div>
 <div class="block">Add some amount to a counter.</div>
@@ -1014,7 +1071,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>updateHistogram</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.346">updateHistogram</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.366">updateHistogram</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                             long&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html#updateHistogram-java.lang.String-long-">BaseSource</a></code></span></div>
 <div class="block">Add some value to a histogram.</div>
@@ -1033,7 +1090,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetricsContext</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.352">getMetricsContext</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.372">getMetricsContext</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html#getMetricsContext--">BaseSource</a></code></span></div>
 <div class="block">Get the metrics context.  For hadoop metrics2 system this is usually an all lowercased string.
  eg. regionserver, master, thriftserver</div>
@@ -1051,7 +1108,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetricsDescription</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.357">getMetricsDescription</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.377">getMetricsDescription</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html#getMetricsDescription--">BaseSource</a></code></span></div>
 <div class="block">Get the description of what this source exposes.</div>
 <dl>
@@ -1066,7 +1123,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetricsJmxContext</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.362">getMetricsJmxContext</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.382">getMetricsJmxContext</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html#getMetricsJmxContext--">BaseSource</a></code></span></div>
 <div class="block">Get the name of the context in JMX that this source will be exposed through.
  This is in ObjectName format. With the default context being Hadoop -&gt; HBase</div>
@@ -1082,7 +1139,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetricsName</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.367">getMetricsName</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.387">getMetricsName</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/metrics/BaseSource.html#getMetricsName--">BaseSource</a></code></span></div>
 <div class="block">Get the name of the metrics that are being exported by this source.
  Eg. IPC, GC, WAL</div>
@@ -1098,7 +1155,7 @@ public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getSingleSourceSourceByTable</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSource.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSourceSource</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.372">getSingleSourceSourceByTable</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSource.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSourceSource</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html#line.392">getSingleSourceSourceByTable</a>()</pre>
 </li>
 </ul>
 </li>


[05/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html
index 67f4551..017124c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html
@@ -387,817 +387,804 @@
 <span class="sourceLineNo">379</span>    }<a name="line.379"></a>
 <span class="sourceLineNo">380</span><a name="line.380"></a>
 <span class="sourceLineNo">381</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    if (cb != null) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      int comparison = BlockCacheUtil.validateBlockAddition(cb.getBuffer(), buf, cacheKey);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      if (comparison != 0) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        if (comparison &lt; 0) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          LOG.warn("Cached block contents differ by nextBlockOnDiskSize. Keeping cached block.");<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          return;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        } else {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          LOG.warn("Cached block contents differ by nextBlockOnDiskSize. Caching new block.");<a name="line.389"></a>
-<span class="sourceLineNo">390</span>        }<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      } else {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        String msg = "Cached an already cached block: " + cacheKey + " cb:" + cb.getCacheKey();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        msg += ". This is harmless and can happen in rare cases (see HBASE-8547)";<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        LOG.debug(msg);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>        return;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    long currentSize = size.get();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    long currentAcceptableSize = acceptableSize();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    long hardLimitSize = (long) (hardCapacityLimitFactor * currentAcceptableSize);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    if (currentSize &gt;= hardLimitSize) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      stats.failInsert();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      if (LOG.isTraceEnabled()) {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        LOG.trace("LruBlockCache current size " + StringUtils.byteDesc(currentSize)<a name="line.404"></a>
-<span class="sourceLineNo">405</span>          + " has exceeded acceptable size " + StringUtils.byteDesc(currentAcceptableSize) + "."<a name="line.405"></a>
-<span class="sourceLineNo">406</span>          + " The hard limit size is " + StringUtils.byteDesc(hardLimitSize)<a name="line.406"></a>
-<span class="sourceLineNo">407</span>          + ", failed to put cacheKey:" + cacheKey + " into LruBlockCache.");<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      }<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      if (!evictionInProgress) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        runEviction();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      }<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      return;<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    cb = new LruCachedBlock(cacheKey, buf, count.incrementAndGet(), inMemory);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    long newSize = updateSizeMetrics(cb, false);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    map.put(cacheKey, cb);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    long val = elements.incrementAndGet();<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    if (buf.getBlockType().isData()) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>       dataBlockElements.increment();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    if (LOG.isTraceEnabled()) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      long size = map.size();<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      assertCounterSanity(size, val);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    if (newSize &gt; currentAcceptableSize &amp;&amp; !evictionInProgress) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      runEviction();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>  }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>  /**<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * Sanity-checking for parity between actual block cache content and metrics.<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   * Intended only for use with TRACE level logging and -ea JVM.<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   */<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  private static void assertCounterSanity(long mapSize, long counterVal) {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if (counterVal &lt; 0) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      LOG.trace("counterVal overflow. Assertions unreliable. counterVal=" + counterVal +<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        ", mapSize=" + mapSize);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      return;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    if (mapSize &lt; Integer.MAX_VALUE) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      double pct_diff = Math.abs((((double) counterVal) / ((double) mapSize)) - 1.);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      if (pct_diff &gt; 0.05) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        LOG.trace("delta between reported and actual size &gt; 5%. counterVal=" + counterVal +<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          ", mapSize=" + mapSize);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>  /**<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * Cache the block with the specified name and buffer.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * &lt;p&gt;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   *<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * @param cacheKey block's cache key<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @param buf      block buffer<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   */<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  @Override<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  public void cacheBlock(BlockCacheKey cacheKey, Cacheable buf) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    cacheBlock(cacheKey, buf, false);<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  }<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>  /**<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * Helper function that updates the local size counter and also updates any<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * per-cf or per-blocktype metrics it can discern from given<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * {@link LruCachedBlock}<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  private long updateSizeMetrics(LruCachedBlock cb, boolean evict) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    long heapsize = cb.heapSize();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    BlockType bt = cb.getBuffer().getBlockType();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    if (evict) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      heapsize *= -1;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    if (bt != null &amp;&amp; bt.isData()) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>       dataBlockSize.add(heapsize);<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    return size.addAndGet(heapsize);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  /**<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * Get the buffer of the block with the specified name.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   *<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @param cacheKey           block's cache key<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * @param caching            true if the caller caches blocks on cache misses<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @param repeat             Whether this is a repeat lookup for the same block<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   *                           (used to avoid double counting cache misses when doing double-check<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   *                           locking)<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @param updateCacheMetrics Whether to update cache metrics or not<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   *<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @return buffer of specified cache key, or null if not in cache<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  @Override<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  public Cacheable getBlock(BlockCacheKey cacheKey, boolean caching, boolean repeat,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      boolean updateCacheMetrics) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    if (cb == null) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      if (!repeat &amp;&amp; updateCacheMetrics) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        stats.miss(caching, cacheKey.isPrimary(), cacheKey.getBlockType());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      }<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      // If there is another block cache then try and read there.<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      // However if this is a retry ( second time in double checked locking )<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      // And it's already a miss then the l2 will also be a miss.<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      if (victimHandler != null &amp;&amp; !repeat) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>        Cacheable result = victimHandler.getBlock(cacheKey, caching, repeat, updateCacheMetrics);<a name="line.502"></a>
-<span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span>        // Promote this to L1.<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        if (result != null &amp;&amp; caching) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>          if (result instanceof HFileBlock &amp;&amp; ((HFileBlock) result).usesSharedMemory()) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>            result = ((HFileBlock) result).deepClone();<a name="line.507"></a>
-<span class="sourceLineNo">508</span>          }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>          cacheBlock(cacheKey, result, /* inMemory = */ false);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        return result;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      }<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      return null;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    if (updateCacheMetrics) stats.hit(caching, cacheKey.isPrimary(), cacheKey.getBlockType());<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    cb.access(count.incrementAndGet());<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    return cb.getBuffer();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>  /**<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * Whether the cache contains block with specified cacheKey<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   *<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @return true if contains the block<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   */<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  public boolean containsBlock(BlockCacheKey cacheKey) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    return map.containsKey(cacheKey);<a name="line.526"></a>
-<span class="sourceLineNo">527</span>  }<a name="line.527"></a>
-<span class="sourceLineNo">528</span><a name="line.528"></a>
-<span class="sourceLineNo">529</span>  @Override<a name="line.529"></a>
-<span class="sourceLineNo">530</span>  public boolean evictBlock(BlockCacheKey cacheKey) {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    return cb != null &amp;&amp; evictBlock(cb, false) &gt; 0;<a name="line.532"></a>
-<span class="sourceLineNo">533</span>  }<a name="line.533"></a>
-<span class="sourceLineNo">534</span><a name="line.534"></a>
-<span class="sourceLineNo">535</span>  /**<a name="line.535"></a>
-<span class="sourceLineNo">536</span>   * Evicts all blocks for a specific HFile. This is an<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * expensive operation implemented as a linear-time search through all blocks<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * in the cache. Ideally this should be a search in a log-access-time map.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   *<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * &lt;p&gt;<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   * This is used for evict-on-close to remove all blocks of a specific HFile.<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   *<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * @return the number of blocks evicted<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   */<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  @Override<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  public int evictBlocksByHfileName(String hfileName) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    int numEvicted = 0;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    for (BlockCacheKey key : map.keySet()) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      if (key.getHfileName().equals(hfileName)) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        if (evictBlock(key))<a name="line.550"></a>
-<span class="sourceLineNo">551</span>          ++numEvicted;<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      }<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    }<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    if (victimHandler != null) {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      numEvicted += victimHandler.evictBlocksByHfileName(hfileName);<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    }<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    return numEvicted;<a name="line.557"></a>
-<span class="sourceLineNo">558</span>  }<a name="line.558"></a>
-<span class="sourceLineNo">559</span><a name="line.559"></a>
-<span class="sourceLineNo">560</span>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * Evict the block, and it will be cached by the victim handler if exists &amp;amp;&amp;amp;<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * block may be read again later<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   *<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param evictedByEvictionProcess true if the given block is evicted by<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   *          EvictionThread<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   * @return the heap size of evicted block<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   */<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  protected long evictBlock(LruCachedBlock block, boolean evictedByEvictionProcess) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    boolean found = map.remove(block.getCacheKey()) != null;<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    if (!found) {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      return 0;<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    }<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    updateSizeMetrics(block, true);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    long val = elements.decrementAndGet();<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    if (LOG.isTraceEnabled()) {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      long size = map.size();<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      assertCounterSanity(size, val);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span>    if (block.getBuffer().getBlockType().isData()) {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>       dataBlockElements.decrement();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    if (evictedByEvictionProcess) {<a name="line.582"></a>
-<span class="sourceLineNo">583</span>      // When the eviction of the block happened because of invalidation of HFiles, no need to<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      // update the stats counter.<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      stats.evicted(block.getCachedTime(), block.getCacheKey().isPrimary());<a name="line.585"></a>
-<span class="sourceLineNo">586</span>      if (victimHandler != null) {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>        victimHandler.cacheBlock(block.getCacheKey(), block.getBuffer());<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      }<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    }<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    return block.heapSize();<a name="line.590"></a>
-<span class="sourceLineNo">591</span>  }<a name="line.591"></a>
-<span class="sourceLineNo">592</span><a name="line.592"></a>
-<span class="sourceLineNo">593</span>  /**<a name="line.593"></a>
-<span class="sourceLineNo">594</span>   * Multi-threaded call to run the eviction process.<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   */<a name="line.595"></a>
-<span class="sourceLineNo">596</span>  private void runEviction() {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    if (evictionThread == null) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      evict();<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    } else {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      evictionThread.evict();<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    }<a name="line.601"></a>
-<span class="sourceLineNo">602</span>  }<a name="line.602"></a>
-<span class="sourceLineNo">603</span><a name="line.603"></a>
-<span class="sourceLineNo">604</span>  @VisibleForTesting<a name="line.604"></a>
-<span class="sourceLineNo">605</span>  boolean isEvictionInProgress() {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    return evictionInProgress;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>  }<a name="line.607"></a>
+<span class="sourceLineNo">382</span>    if (cb != null &amp;&amp; !BlockCacheUtil.shouldReplaceExistingCacheBlock(this, cacheKey, buf)) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      return;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    long currentSize = size.get();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    long currentAcceptableSize = acceptableSize();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    long hardLimitSize = (long) (hardCapacityLimitFactor * currentAcceptableSize);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    if (currentSize &gt;= hardLimitSize) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      stats.failInsert();<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      if (LOG.isTraceEnabled()) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        LOG.trace("LruBlockCache current size " + StringUtils.byteDesc(currentSize)<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          + " has exceeded acceptable size " + StringUtils.byteDesc(currentAcceptableSize) + "."<a name="line.392"></a>
+<span class="sourceLineNo">393</span>          + " The hard limit size is " + StringUtils.byteDesc(hardLimitSize)<a name="line.393"></a>
+<span class="sourceLineNo">394</span>          + ", failed to put cacheKey:" + cacheKey + " into LruBlockCache.");<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      }<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      if (!evictionInProgress) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        runEviction();<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      }<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      return;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    cb = new LruCachedBlock(cacheKey, buf, count.incrementAndGet(), inMemory);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    long newSize = updateSizeMetrics(cb, false);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    map.put(cacheKey, cb);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    long val = elements.incrementAndGet();<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    if (buf.getBlockType().isData()) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>       dataBlockElements.increment();<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    if (LOG.isTraceEnabled()) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      long size = map.size();<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      assertCounterSanity(size, val);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    }<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    if (newSize &gt; currentAcceptableSize &amp;&amp; !evictionInProgress) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      runEviction();<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
+<span class="sourceLineNo">415</span>  }<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>  /**<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   * Sanity-checking for parity between actual block cache content and metrics.<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * Intended only for use with TRACE level logging and -ea JVM.<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  private static void assertCounterSanity(long mapSize, long counterVal) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    if (counterVal &lt; 0) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      LOG.trace("counterVal overflow. Assertions unreliable. counterVal=" + counterVal +<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        ", mapSize=" + mapSize);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      return;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    if (mapSize &lt; Integer.MAX_VALUE) {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      double pct_diff = Math.abs((((double) counterVal) / ((double) mapSize)) - 1.);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      if (pct_diff &gt; 0.05) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>        LOG.trace("delta between reported and actual size &gt; 5%. counterVal=" + counterVal +<a name="line.430"></a>
+<span class="sourceLineNo">431</span>          ", mapSize=" + mapSize);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  /**<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * Cache the block with the specified name and buffer.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   * &lt;p&gt;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   *<a name="line.439"></a>
+<span class="sourceLineNo">440</span>   * @param cacheKey block's cache key<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   * @param buf      block buffer<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   */<a name="line.442"></a>
+<span class="sourceLineNo">443</span>  @Override<a name="line.443"></a>
+<span class="sourceLineNo">444</span>  public void cacheBlock(BlockCacheKey cacheKey, Cacheable buf) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    cacheBlock(cacheKey, buf, false);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  /**<a name="line.448"></a>
+<span class="sourceLineNo">449</span>   * Helper function that updates the local size counter and also updates any<a name="line.449"></a>
+<span class="sourceLineNo">450</span>   * per-cf or per-blocktype metrics it can discern from given<a name="line.450"></a>
+<span class="sourceLineNo">451</span>   * {@link LruCachedBlock}<a name="line.451"></a>
+<span class="sourceLineNo">452</span>   */<a name="line.452"></a>
+<span class="sourceLineNo">453</span>  private long updateSizeMetrics(LruCachedBlock cb, boolean evict) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    long heapsize = cb.heapSize();<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    BlockType bt = cb.getBuffer().getBlockType();<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    if (evict) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      heapsize *= -1;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    if (bt != null &amp;&amp; bt.isData()) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>       dataBlockSize.add(heapsize);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    }<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    return size.addAndGet(heapsize);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>  /**<a name="line.465"></a>
+<span class="sourceLineNo">466</span>   * Get the buffer of the block with the specified name.<a name="line.466"></a>
+<span class="sourceLineNo">467</span>   *<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * @param cacheKey           block's cache key<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   * @param caching            true if the caller caches blocks on cache misses<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   * @param repeat             Whether this is a repeat lookup for the same block<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   *                           (used to avoid double counting cache misses when doing double-check<a name="line.471"></a>
+<span class="sourceLineNo">472</span>   *                           locking)<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * @param updateCacheMetrics Whether to update cache metrics or not<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   *<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * @return buffer of specified cache key, or null if not in cache<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   */<a name="line.476"></a>
+<span class="sourceLineNo">477</span>  @Override<a name="line.477"></a>
+<span class="sourceLineNo">478</span>  public Cacheable getBlock(BlockCacheKey cacheKey, boolean caching, boolean repeat,<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      boolean updateCacheMetrics) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    if (cb == null) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      if (!repeat &amp;&amp; updateCacheMetrics) {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>        stats.miss(caching, cacheKey.isPrimary(), cacheKey.getBlockType());<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      }<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      // If there is another block cache then try and read there.<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      // However if this is a retry ( second time in double checked locking )<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      // And it's already a miss then the l2 will also be a miss.<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      if (victimHandler != null &amp;&amp; !repeat) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>        Cacheable result = victimHandler.getBlock(cacheKey, caching, repeat, updateCacheMetrics);<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>        // Promote this to L1.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>        if (result != null &amp;&amp; caching) {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>          if (result instanceof HFileBlock &amp;&amp; ((HFileBlock) result).usesSharedMemory()) {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>            result = ((HFileBlock) result).deepClone();<a name="line.494"></a>
+<span class="sourceLineNo">495</span>          }<a name="line.495"></a>
+<span class="sourceLineNo">496</span>          cacheBlock(cacheKey, result, /* inMemory = */ false);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>        }<a name="line.497"></a>
+<span class="sourceLineNo">498</span>        return result;<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      }<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      return null;<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    if (updateCacheMetrics) stats.hit(caching, cacheKey.isPrimary(), cacheKey.getBlockType());<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    cb.access(count.incrementAndGet());<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    return cb.getBuffer();<a name="line.504"></a>
+<span class="sourceLineNo">505</span>  }<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>  /**<a name="line.507"></a>
+<span class="sourceLineNo">508</span>   * Whether the cache contains block with specified cacheKey<a name="line.508"></a>
+<span class="sourceLineNo">509</span>   *<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * @return true if contains the block<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  public boolean containsBlock(BlockCacheKey cacheKey) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    return map.containsKey(cacheKey);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>  }<a name="line.514"></a>
+<span class="sourceLineNo">515</span><a name="line.515"></a>
+<span class="sourceLineNo">516</span>  @Override<a name="line.516"></a>
+<span class="sourceLineNo">517</span>  public boolean evictBlock(BlockCacheKey cacheKey) {<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    return cb != null &amp;&amp; evictBlock(cb, false) &gt; 0;<a name="line.519"></a>
+<span class="sourceLineNo">520</span>  }<a name="line.520"></a>
+<span class="sourceLineNo">521</span><a name="line.521"></a>
+<span class="sourceLineNo">522</span>  /**<a name="line.522"></a>
+<span class="sourceLineNo">523</span>   * Evicts all blocks for a specific HFile. This is an<a name="line.523"></a>
+<span class="sourceLineNo">524</span>   * expensive operation implemented as a linear-time search through all blocks<a name="line.524"></a>
+<span class="sourceLineNo">525</span>   * in the cache. Ideally this should be a search in a log-access-time map.<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   *<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * &lt;p&gt;<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * This is used for evict-on-close to remove all blocks of a specific HFile.<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   *<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   * @return the number of blocks evicted<a name="line.530"></a>
+<span class="sourceLineNo">531</span>   */<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  @Override<a name="line.532"></a>
+<span class="sourceLineNo">533</span>  public int evictBlocksByHfileName(String hfileName) {<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    int numEvicted = 0;<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    for (BlockCacheKey key : map.keySet()) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      if (key.getHfileName().equals(hfileName)) {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>        if (evictBlock(key))<a name="line.537"></a>
+<span class="sourceLineNo">538</span>          ++numEvicted;<a name="line.538"></a>
+<span class="sourceLineNo">539</span>      }<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    }<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    if (victimHandler != null) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      numEvicted += victimHandler.evictBlocksByHfileName(hfileName);<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    return numEvicted;<a name="line.544"></a>
+<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
+<span class="sourceLineNo">546</span><a name="line.546"></a>
+<span class="sourceLineNo">547</span>  /**<a name="line.547"></a>
+<span class="sourceLineNo">548</span>   * Evict the block, and it will be cached by the victim handler if exists &amp;amp;&amp;amp;<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * block may be read again later<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   *<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * @param evictedByEvictionProcess true if the given block is evicted by<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   *          EvictionThread<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   * @return the heap size of evicted block<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   */<a name="line.554"></a>
+<span class="sourceLineNo">555</span>  protected long evictBlock(LruCachedBlock block, boolean evictedByEvictionProcess) {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    boolean found = map.remove(block.getCacheKey()) != null;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    if (!found) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      return 0;<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    }<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    updateSizeMetrics(block, true);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    long val = elements.decrementAndGet();<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    if (LOG.isTraceEnabled()) {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      long size = map.size();<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      assertCounterSanity(size, val);<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    }<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    if (block.getBuffer().getBlockType().isData()) {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>       dataBlockElements.decrement();<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    }<a name="line.568"></a>
+<span class="sourceLineNo">569</span>    if (evictedByEvictionProcess) {<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      // When the eviction of the block happened because of invalidation of HFiles, no need to<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      // update the stats counter.<a name="line.571"></a>
+<span class="sourceLineNo">572</span>      stats.evicted(block.getCachedTime(), block.getCacheKey().isPrimary());<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      if (victimHandler != null) {<a name="line.573"></a>
+<span class="sourceLineNo">574</span>        victimHandler.cacheBlock(block.getCacheKey(), block.getBuffer());<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      }<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    }<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    return block.heapSize();<a name="line.577"></a>
+<span class="sourceLineNo">578</span>  }<a name="line.578"></a>
+<span class="sourceLineNo">579</span><a name="line.579"></a>
+<span class="sourceLineNo">580</span>  /**<a name="line.580"></a>
+<span class="sourceLineNo">581</span>   * Multi-threaded call to run the eviction process.<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   */<a name="line.582"></a>
+<span class="sourceLineNo">583</span>  private void runEviction() {<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    if (evictionThread == null) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      evict();<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    } else {<a name="line.586"></a>
+<span class="sourceLineNo">587</span>      evictionThread.evict();<a name="line.587"></a>
+<span class="sourceLineNo">588</span>    }<a name="line.588"></a>
+<span class="sourceLineNo">589</span>  }<a name="line.589"></a>
+<span class="sourceLineNo">590</span><a name="line.590"></a>
+<span class="sourceLineNo">591</span>  @VisibleForTesting<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  boolean isEvictionInProgress() {<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    return evictionInProgress;<a name="line.593"></a>
+<span class="sourceLineNo">594</span>  }<a name="line.594"></a>
+<span class="sourceLineNo">595</span><a name="line.595"></a>
+<span class="sourceLineNo">596</span>  @VisibleForTesting<a name="line.596"></a>
+<span class="sourceLineNo">597</span>  long getOverhead() {<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    return overhead;<a name="line.598"></a>
+<span class="sourceLineNo">599</span>  }<a name="line.599"></a>
+<span class="sourceLineNo">600</span><a name="line.600"></a>
+<span class="sourceLineNo">601</span>  /**<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   * Eviction method.<a name="line.602"></a>
+<span class="sourceLineNo">603</span>   */<a name="line.603"></a>
+<span class="sourceLineNo">604</span>  void evict() {<a name="line.604"></a>
+<span class="sourceLineNo">605</span><a name="line.605"></a>
+<span class="sourceLineNo">606</span>    // Ensure only one eviction at a time<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    if(!evictionLock.tryLock()) return;<a name="line.607"></a>
 <span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>  @VisibleForTesting<a name="line.609"></a>
-<span class="sourceLineNo">610</span>  long getOverhead() {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    return overhead;<a name="line.611"></a>
-<span class="sourceLineNo">612</span>  }<a name="line.612"></a>
+<span class="sourceLineNo">609</span>    try {<a name="line.609"></a>
+<span class="sourceLineNo">610</span>      evictionInProgress = true;<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      long currentSize = this.size.get();<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      long bytesToFree = currentSize - minSize();<a name="line.612"></a>
 <span class="sourceLineNo">613</span><a name="line.613"></a>
-<span class="sourceLineNo">614</span>  /**<a name="line.614"></a>
-<span class="sourceLineNo">615</span>   * Eviction method.<a name="line.615"></a>
-<span class="sourceLineNo">616</span>   */<a name="line.616"></a>
-<span class="sourceLineNo">617</span>  void evict() {<a name="line.617"></a>
-<span class="sourceLineNo">618</span><a name="line.618"></a>
-<span class="sourceLineNo">619</span>    // Ensure only one eviction at a time<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    if(!evictionLock.tryLock()) return;<a name="line.620"></a>
+<span class="sourceLineNo">614</span>      if (LOG.isTraceEnabled()) {<a name="line.614"></a>
+<span class="sourceLineNo">615</span>        LOG.trace("Block cache LRU eviction started; Attempting to free " +<a name="line.615"></a>
+<span class="sourceLineNo">616</span>          StringUtils.byteDesc(bytesToFree) + " of total=" +<a name="line.616"></a>
+<span class="sourceLineNo">617</span>          StringUtils.byteDesc(currentSize));<a name="line.617"></a>
+<span class="sourceLineNo">618</span>      }<a name="line.618"></a>
+<span class="sourceLineNo">619</span><a name="line.619"></a>
+<span class="sourceLineNo">620</span>      if (bytesToFree &lt;= 0) return;<a name="line.620"></a>
 <span class="sourceLineNo">621</span><a name="line.621"></a>
-<span class="sourceLineNo">622</span>    try {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      evictionInProgress = true;<a name="line.623"></a>
-<span class="sourceLineNo">624</span>      long currentSize = this.size.get();<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      long bytesToFree = currentSize - minSize();<a name="line.625"></a>
+<span class="sourceLineNo">622</span>      // Instantiate priority buckets<a name="line.622"></a>
+<span class="sourceLineNo">623</span>      BlockBucket bucketSingle = new BlockBucket("single", bytesToFree, blockSize, singleSize());<a name="line.623"></a>
+<span class="sourceLineNo">624</span>      BlockBucket bucketMulti = new BlockBucket("multi", bytesToFree, blockSize, multiSize());<a name="line.624"></a>
+<span class="sourceLineNo">625</span>      BlockBucket bucketMemory = new BlockBucket("memory", bytesToFree, blockSize, memorySize());<a name="line.625"></a>
 <span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span>      if (LOG.isTraceEnabled()) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>        LOG.trace("Block cache LRU eviction started; Attempting to free " +<a name="line.628"></a>
-<span class="sourceLineNo">629</span>          StringUtils.byteDesc(bytesToFree) + " of total=" +<a name="line.629"></a>
-<span class="sourceLineNo">630</span>          StringUtils.byteDesc(currentSize));<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      }<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span>      if (bytesToFree &lt;= 0) return;<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
-<span class="sourceLineNo">635</span>      // Instantiate priority buckets<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      BlockBucket bucketSingle = new BlockBucket("single", bytesToFree, blockSize, singleSize());<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      BlockBucket bucketMulti = new BlockBucket("multi", bytesToFree, blockSize, multiSize());<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      BlockBucket bucketMemory = new BlockBucket("memory", bytesToFree, blockSize, memorySize());<a name="line.638"></a>
-<span class="sourceLineNo">639</span><a name="line.639"></a>
-<span class="sourceLineNo">640</span>      // Scan entire map putting into appropriate buckets<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      for (LruCachedBlock cachedBlock : map.values()) {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>        switch (cachedBlock.getPriority()) {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>          case SINGLE: {<a name="line.643"></a>
-<span class="sourceLineNo">644</span>            bucketSingle.add(cachedBlock);<a name="line.644"></a>
-<span class="sourceLineNo">645</span>            break;<a name="line.645"></a>
-<span class="sourceLineNo">646</span>          }<a name="line.646"></a>
-<span class="sourceLineNo">647</span>          case MULTI: {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>            bucketMulti.add(cachedBlock);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>            break;<a name="line.649"></a>
-<span class="sourceLineNo">650</span>          }<a name="line.650"></a>
-<span class="sourceLineNo">651</span>          case MEMORY: {<a name="line.651"></a>
-<span class="sourceLineNo">652</span>            bucketMemory.add(cachedBlock);<a name="line.652"></a>
-<span class="sourceLineNo">653</span>            break;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>          }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>        }<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
-<span class="sourceLineNo">657</span><a name="line.657"></a>
-<span class="sourceLineNo">658</span>      long bytesFreed = 0;<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      if (forceInMemory || memoryFactor &gt; 0.999f) {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        long s = bucketSingle.totalSize();<a name="line.660"></a>
-<span class="sourceLineNo">661</span>        long m = bucketMulti.totalSize();<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        if (bytesToFree &gt; (s + m)) {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>          // this means we need to evict blocks in memory bucket to make room,<a name="line.663"></a>
-<span class="sourceLineNo">664</span>          // so the single and multi buckets will be emptied<a name="line.664"></a>
-<span class="sourceLineNo">665</span>          bytesFreed = bucketSingle.free(s);<a name="line.665"></a>
-<span class="sourceLineNo">666</span>          bytesFreed += bucketMulti.free(m);<a name="line.666"></a>
-<span class="sourceLineNo">667</span>          if (LOG.isTraceEnabled()) {<a name="line.667"></a>
-<span class="sourceLineNo">668</span>            LOG.trace("freed " + StringUtils.byteDesc(bytesFreed) +<a name="line.668"></a>
-<span class="sourceLineNo">669</span>              " from single and multi buckets");<a name="line.669"></a>
-<span class="sourceLineNo">670</span>          }<a name="line.670"></a>
-<span class="sourceLineNo">671</span>          bytesFreed += bucketMemory.free(bytesToFree - bytesFreed);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>          if (LOG.isTraceEnabled()) {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>            LOG.trace("freed " + StringUtils.byteDesc(bytesFreed) +<a name="line.673"></a>
-<span class="sourceLineNo">674</span>              " total from all three buckets ");<a name="line.674"></a>
-<span class="sourceLineNo">675</span>          }<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        } else {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>          // this means no need to evict block in memory bucket,<a name="line.677"></a>
-<span class="sourceLineNo">678</span>          // and we try best to make the ratio between single-bucket and<a name="line.678"></a>
-<span class="sourceLineNo">679</span>          // multi-bucket is 1:2<a name="line.679"></a>
-<span class="sourceLineNo">680</span>          long bytesRemain = s + m - bytesToFree;<a name="line.680"></a>
-<span class="sourceLineNo">681</span>          if (3 * s &lt;= bytesRemain) {<a name="line.681"></a>
-<span class="sourceLineNo">682</span>            // single-bucket is small enough that no eviction happens for it<a name="line.682"></a>
-<span class="sourceLineNo">683</span>            // hence all eviction goes from multi-bucket<a name="line.683"></a>
-<span class="sourceLineNo">684</span>            bytesFreed = bucketMulti.free(bytesToFree);<a name="line.684"></a>
-<span class="sourceLineNo">685</span>          } else if (3 * m &lt;= 2 * bytesRemain) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>            // multi-bucket is small enough that no eviction happens for it<a name="line.686"></a>
-<span class="sourceLineNo">687</span>            // hence all eviction goes from single-bucket<a name="line.687"></a>
-<span class="sourceLineNo">688</span>            bytesFreed = bucketSingle.free(bytesToFree);<a name="line.688"></a>
-<span class="sourceLineNo">689</span>          } else {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>            // both buckets need to evict some blocks<a name="line.690"></a>
-<span class="sourceLineNo">691</span>            bytesFreed = bucketSingle.free(s - bytesRemain / 3);<a name="line.691"></a>
-<span class="sourceLineNo">692</span>            if (bytesFreed &lt; bytesToFree) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>              bytesFreed += bucketMulti.free(bytesToFree - bytesFreed);<a name="line.693"></a>
-<span class="sourceLineNo">694</span>            }<a name="line.694"></a>
-<span class="sourceLineNo">695</span>          }<a name="line.695"></a>
-<span class="sourceLineNo">696</span>        }<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      } else {<a name="line.697"></a>
-<span class="sourceLineNo">698</span>        PriorityQueue&lt;BlockBucket&gt; bucketQueue = new PriorityQueue&lt;&gt;(3);<a name="line.698"></a>
-<span class="sourceLineNo">699</span><a name="line.699"></a>
-<span class="sourceLineNo">700</span>        bucketQueue.add(bucketSingle);<a name="line.700"></a>
-<span class="sourceLineNo">701</span>        bucketQueue.add(bucketMulti);<a name="line.701"></a>
-<span class="sourceLineNo">702</span>        bucketQueue.add(bucketMemory);<a name="line.702"></a>
-<span class="sourceLineNo">703</span><a name="line.703"></a>
-<span class="sourceLineNo">704</span>        int remainingBuckets = 3;<a name="line.704"></a>
-<span class="sourceLineNo">705</span><a name="line.705"></a>
-<span class="sourceLineNo">706</span>        BlockBucket bucket;<a name="line.706"></a>
-<span class="sourceLineNo">707</span>        while ((bucket = bucketQueue.poll()) != null) {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>          long overflow = bucket.overflow();<a name="line.708"></a>
-<span class="sourceLineNo">709</span>          if (overflow &gt; 0) {<a name="line.709"></a>
-<span class="sourceLineNo">710</span>            long bucketBytesToFree =<a name="line.710"></a>
-<span class="sourceLineNo">711</span>                Math.min(overflow, (bytesToFree - bytesFreed) / remainingBuckets);<a name="line.711"></a>
-<span class="sourceLineNo">712</span>            bytesFreed += bucket.free(bucketBytesToFree);<a name="line.712"></a>
-<span class="sourceLineNo">713</span>          }<a name="line.713"></a>
-<span class="sourceLineNo">714</span>          remainingBuckets--;<a name="line.714"></a>
-<span class="sourceLineNo">715</span>        }<a name="line.715"></a>
-<span class="sourceLineNo">716</span>      }<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      if (LOG.isTraceEnabled()) {<a name="line.717"></a>
-<span class="sourceLineNo">718</span>        long single = bucketSingle.totalSize();<a name="line.718"></a>
-<span class="sourceLineNo">719</span>        long multi = bucketMulti.totalSize();<a name="line.719"></a>
-<span class="sourceLineNo">720</span>        long memory = bucketMemory.totalSize();<a name="line.720"></a>
-<span class="sourceLineNo">721</span>        LOG.trace("Block cache LRU eviction completed; " +<a name="line.721"></a>
-<span class="sourceLineNo">722</span>          "freed=" + StringUtils.byteDesc(bytesFreed) + ", " +<a name="line.722"></a>
-<span class="sourceLineNo">723</span>          "total=" + StringUtils.byteDesc(this.size.get()) + ", " +<a name="line.723"></a>
-<span class="sourceLineNo">724</span>          "single=" + StringUtils.byteDesc(single) + ", " +<a name="line.724"></a>
-<span class="sourceLineNo">725</span>          "multi=" + StringUtils.byteDesc(multi) + ", " +<a name="line.725"></a>
-<span class="sourceLineNo">726</span>          "memory=" + StringUtils.byteDesc(memory));<a name="line.726"></a>
-<span class="sourceLineNo">727</span>      }<a name="line.727"></a>
-<span class="sourceLineNo">728</span>    } finally {<a name="line.728"></a>
-<span class="sourceLineNo">729</span>      stats.evict();<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      evictionInProgress = false;<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      evictionLock.unlock();<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    }<a name="line.732"></a>
-<span class="sourceLineNo">733</span>  }<a name="line.733"></a>
-<span class="sourceLineNo">734</span><a name="line.734"></a>
-<span class="sourceLineNo">735</span>  @Override<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  public String toString() {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    return MoreObjects.toStringHelper(this)<a name="line.737"></a>
-<span class="sourceLineNo">738</span>      .add("blockCount", getBlockCount())<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      .add("currentSize", StringUtils.byteDesc(getCurrentSize()))<a name="line.739"></a>
-<span class="sourceLineNo">740</span>      .add("freeSize", StringUtils.byteDesc(getFreeSize()))<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      .add("maxSize", StringUtils.byteDesc(getMaxSize()))<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      .add("heapSize", StringUtils.byteDesc(heapSize()))<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      .add("minSize", StringUtils.byteDesc(minSize()))<a name="line.743"></a>
-<span class="sourceLineNo">744</span>      .add("minFactor", minFactor)<a name="line.744"></a>
-<span class="sourceLineNo">745</span>      .add("multiSize", StringUtils.byteDesc(multiSize()))<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      .add("multiFactor", multiFactor)<a name="line.746"></a>
-<span class="sourceLineNo">747</span>      .add("singleSize", StringUtils.byteDesc(singleSize()))<a name="line.747"></a>
-<span class="sourceLineNo">748</span>      .add("singleFactor", singleFactor)<a name="line.748"></a>
-<span class="sourceLineNo">749</span>      .toString();<a name="line.749"></a>
-<span class="sourceLineNo">750</span>  }<a name="line.750"></a>
+<span class="sourceLineNo">627</span>      // Scan entire map putting into appropriate buckets<a name="line.627"></a>
+<span class="sourceLineNo">628</span>      for (LruCachedBlock cachedBlock : map.values()) {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>        switch (cachedBlock.getPriority()) {<a name="line.629"></a>
+<span class="sourceLineNo">630</span>          case SINGLE: {<a name="line.630"></a>
+<span class="sourceLineNo">631</span>            bucketSingle.add(cachedBlock);<a name="line.631"></a>
+<span class="sourceLineNo">632</span>            break;<a name="line.632"></a>
+<span class="sourceLineNo">633</span>          }<a name="line.633"></a>
+<span class="sourceLineNo">634</span>          case MULTI: {<a name="line.634"></a>
+<span class="sourceLineNo">635</span>            bucketMulti.add(cachedBlock);<a name="line.635"></a>
+<span class="sourceLineNo">636</span>            break;<a name="line.636"></a>
+<span class="sourceLineNo">637</span>          }<a name="line.637"></a>
+<span class="sourceLineNo">638</span>          case MEMORY: {<a name="line.638"></a>
+<span class="sourceLineNo">639</span>            bucketMemory.add(cachedBlock);<a name="line.639"></a>
+<span class="sourceLineNo">640</span>            break;<a name="line.640"></a>
+<span class="sourceLineNo">641</span>          }<a name="line.641"></a>
+<span class="sourceLineNo">642</span>        }<a name="line.642"></a>
+<span class="sourceLineNo">643</span>      }<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>      long bytesFreed = 0;<a name="line.645"></a>
+<span class="sourceLineNo">646</span>      if (forceInMemory || memoryFactor &gt; 0.999f) {<a name="line.646"></a>
+<span class="sourceLineNo">647</span>        long s = bucketSingle.totalSize();<a name="line.647"></a>
+<span class="sourceLineNo">648</span>        long m = bucketMulti.totalSize();<a name="line.648"></a>
+<span class="sourceLineNo">649</span>        if (bytesToFree &gt; (s + m)) {<a name="line.649"></a>
+<span class="sourceLineNo">650</span>          // this means we need to evict blocks in memory bucket to make room,<a name="line.650"></a>
+<span class="sourceLineNo">651</span>          // so the single and multi buckets will be emptied<a name="line.651"></a>
+<span class="sourceLineNo">652</span>          bytesFreed = bucketSingle.free(s);<a name="line.652"></a>
+<span class="sourceLineNo">653</span>          bytesFreed += bucketMulti.free(m);<a name="line.653"></a>
+<span class="sourceLineNo">654</span>          if (LOG.isTraceEnabled()) {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>            LOG.trace("freed " + StringUtils.byteDesc(bytesFreed) +<a name="line.655"></a>
+<span class="sourceLineNo">656</span>              " from single and multi buckets");<a name="line.656"></a>
+<span class="sourceLineNo">657</span>          }<a name="line.657"></a>
+<span class="sourceLineNo">658</span>          bytesFreed += bucketMemory.free(bytesToFree - bytesFreed);<a name="line.658"></a>
+<span class="sourceLineNo">659</span>          if (LOG.isTraceEnabled()) {<a name="line.659"></a>
+<span class="sourceLineNo">660</span>            LOG.trace("freed " + StringUtils.byteDesc(bytesFreed) +<a name="line.660"></a>
+<span class="sourceLineNo">661</span>              " total from all three buckets ");<a name="line.661"></a>
+<span class="sourceLineNo">662</span>          }<a name="line.662"></a>
+<span class="sourceLineNo">663</span>        } else {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>          // this means no need to evict block in memory bucket,<a name="line.664"></a>
+<span class="sourceLineNo">665</span>          // and we try best to make the ratio between single-bucket and<a name="line.665"></a>
+<span class="sourceLineNo">666</span>          // multi-bucket is 1:2<a name="line.666"></a>
+<span class="sourceLineNo">667</span>          long bytesRemain = s + m - bytesToFree;<a name="line.667"></a>
+<span class="sourceLineNo">668</span>          if (3 * s &lt;= bytesRemain) {<a name="line.668"></a>
+<span class="sourceLineNo">669</span>            // single-bucket is small enough that no eviction happens for it<a name="line.669"></a>
+<span class="sourceLineNo">670</span>            // hence all eviction goes from multi-bucket<a name="line.670"></a>
+<span class="sourceLineNo">671</span>            bytesFreed = bucketMulti.free(bytesToFree);<a name="line.671"></a>
+<span class="sourceLineNo">672</span>          } else if (3 * m &lt;= 2 * bytesRemain) {<a name="line.672"></a>
+<span class="sourceLineNo">673</span>            // multi-bucket is small enough that no eviction happens for it<a name="line.673"></a>
+<span class="sourceLineNo">674</span>            // hence all eviction goes from single-bucket<a name="line.674"></a>
+<span class="sourceLineNo">675</span>            bytesFreed = bucketSingle.free(bytesToFree);<a name="line.675"></a>
+<span class="sourceLineNo">676</span>          } else {<a name="line.676"></a>
+<span class="sourceLineNo">677</span>            // both buckets need to evict some blocks<a name="line.677"></a>
+<span class="sourceLineNo">678</span>            bytesFreed = bucketSingle.free(s - bytesRemain / 3);<a name="line.678"></a>
+<span class="sourceLineNo">679</span>            if (bytesFreed &lt; bytesToFree) {<a name="line.679"></a>
+<span class="sourceLineNo">680</span>              bytesFreed += bucketMulti.free(bytesToFree - bytesFreed);<a name="line.680"></a>
+<span class="sourceLineNo">681</span>            }<a name="line.681"></a>
+<span class="sourceLineNo">682</span>          }<a name="line.682"></a>
+<span class="sourceLineNo">683</span>        }<a name="line.683"></a>
+<span class="sourceLineNo">684</span>      } else {<a name="line.684"></a>
+<span class="sourceLineNo">685</span>        PriorityQueue&lt;BlockBucket&gt; bucketQueue = new PriorityQueue&lt;&gt;(3);<a name="line.685"></a>
+<span class="sourceLineNo">686</span><a name="line.686"></a>
+<span class="sourceLineNo">687</span>        bucketQueue.add(bucketSingle);<a name="line.687"></a>
+<span class="sourceLineNo">688</span>        bucketQueue.add(bucketMulti);<a name="line.688"></a>
+<span class="sourceLineNo">689</span>        bucketQueue.add(bucketMemory);<a name="line.689"></a>
+<span class="sourceLineNo">690</span><a name="line.690"></a>
+<span class="sourceLineNo">691</span>        int remainingBuckets = 3;<a name="line.691"></a>
+<span class="sourceLineNo">692</span><a name="line.692"></a>
+<span class="sourceLineNo">693</span>        BlockBucket bucket;<a name="line.693"></a>
+<span class="sourceLineNo">694</span>        while ((bucket = bucketQueue.poll()) != null) {<a name="line.694"></a>
+<span class="sourceLineNo">695</span>          long overflow = bucket.overflow();<a name="line.695"></a>
+<span class="sourceLineNo">696</span>          if (overflow &gt; 0) {<a name="line.696"></a>
+<span class="sourceLineNo">697</span>            long bucketBytesToFree =<a name="line.697"></a>
+<span class="sourceLineNo">698</span>                Math.min(overflow, (bytesToFree - bytesFreed) / remainingBuckets);<a name="line.698"></a>
+<span class="sourceLineNo">699</span>            bytesFreed += bucket.free(bucketBytesToFree);<a name="line.699"></a>
+<span class="sourceLineNo">700</span>          }<a name="line.700"></a>
+<span class="sourceLineNo">701</span>          remainingBuckets--;<a name="line.701"></a>
+<span class="sourceLineNo">702</span>        }<a name="line.702"></a>
+<span class="sourceLineNo">703</span>      }<a name="line.703"></a>
+<span class="sourceLineNo">704</span>      if (LOG.isTraceEnabled()) {<a name="line.704"></a>
+<span class="sourceLineNo">705</span>        long single = bucketSingle.totalSize();<a name="line.705"></a>
+<span class="sourceLineNo">706</span>        long multi = bucketMulti.totalSize();<a name="line.706"></a>
+<span class="sourceLineNo">707</span>        long memory = bucketMemory.totalSize();<a name="line.707"></a>
+<span class="sourceLineNo">708</span>        LOG.trace("Block cache LRU eviction completed; " +<a name="line.708"></a>
+<span class="sourceLineNo">709</span>          "freed=" + StringUtils.byteDesc(bytesFreed) + ", " +<a name="line.709"></a>
+<span class="sourceLineNo">710</span>          "total=" + StringUtils.byteDesc(this.size.get()) + ", " +<a name="line.710"></a>
+<span class="sourceLineNo">711</span>          "single=" + StringUtils.byteDesc(single) + ", " +<a name="line.711"></a>
+<span class="sourceLineNo">712</span>          "multi=" + StringUtils.byteDesc(multi) + ", " +<a name="line.712"></a>
+<span class="sourceLineNo">713</span>          "memory=" + StringUtils.byteDesc(memory));<a name="line.713"></a>
+<span class="sourceLineNo">714</span>      }<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    } finally {<a name="line.715"></a>
+<span class="sourceLineNo">716</span>      stats.evict();<a name="line.716"></a>
+<span class="sourceLineNo">717</span>      evictionInProgress = false;<a name="line.717"></a>
+<span class="sourceLineNo">718</span>      evictionLock.unlock();<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    }<a name="line.719"></a>
+<span class="sourceLineNo">720</span>  }<a name="line.720"></a>
+<span class="sourceLineNo">721</span><a name="line.721"></a>
+<span class="sourceLineNo">722</span>  @Override<a name="line.722"></a>
+<span class="sourceLineNo">723</span>  public String toString() {<a name="line.723"></a>
+<span class="sourceLineNo">724</span>    return MoreObjects.toStringHelper(this)<a name="line.724"></a>
+<span class="sourceLineNo">725</span>      .add("blockCount", getBlockCount())<a name="line.725"></a>
+<span class="sourceLineNo">726</span>      .add("currentSize", StringUtils.byteDesc(getCurrentSize()))<a name="line.726"></a>
+<span class="sourceLineNo">727</span>      .add("freeSize", StringUtils.byteDesc(getFreeSize()))<a name="line.727"></a>
+<span class="sourceLineNo">728</span>      .add("maxSize", StringUtils.byteDesc(getMaxSize()))<a name="line.728"></a>
+<span class="sourceLineNo">729</span>      .add("heapSize", StringUtils.byteDesc(heapSize()))<a name="line.729"></a>
+<span class="sourceLineNo">730</span>      .add("minSize", StringUtils.byteDesc(minSize()))<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      .add("minFactor", minFactor)<a name="line.731"></a>
+<span class="sourceLineNo">732</span>      .add("multiSize", StringUtils.byteDesc(multiSize()))<a name="line.732"></a>
+<span class="sourceLineNo">733</span>      .add("multiFactor", multiFactor)<a name="line.733"></a>
+<span class="sourceLineNo">734</span>      .add("singleSize", StringUtils.byteDesc(singleSize()))<a name="line.734"></a>
+<span class="sourceLineNo">735</span>      .add("singleFactor", singleFactor)<a name="line.735"></a>
+<span class="sourceLineNo">736</span>      .toString();<a name="line.736"></a>
+<span class="sourceLineNo">737</span>  }<a name="line.737"></a>
+<span class="sourceLineNo">738</span><a name="line.738"></a>
+<span class="sourceLineNo">739</span>  /**<a name="line.739"></a>
+<span class="sourceLineNo">740</span>   * Used to group blocks into priority buckets.  There will be a BlockBucket<a name="line.740"></a>
+<span class="sourceLineNo">741</span>   * for each priority (single, multi, memory).  Once bucketed, the eviction<a name="line.741"></a>
+<span class="sourceLineNo">742</span>   * algorithm takes the appropriate number of elements out of each according<a name="line.742"></a>
+<span class="sourceLineNo">743</span>   * to configuration parameters and their relatives sizes.<a name="line.743"></a>
+<span class="sourceLineNo">744</span>   */<a name="line.744"></a>
+<span class="sourceLineNo">745</span>  private class BlockBucket implements Comparable&lt;BlockBucket&gt; {<a name="line.745"></a>
+<span class="sourceLineNo">746</span><a name="line.746"></a>
+<span class="sourceLineNo">747</span>    private final String name;<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    private LruCachedBlockQueue queue;<a name="line.748"></a>
+<span class="sourceLineNo">749</span>    private long totalSize = 0;<a name="line.749"></a>
+<span class="sourceLineNo">750</span>    private long bucketSize;<a name="line.750"></a>
 <span class="sourceLineNo">751</span><a name="line.751"></a>
-<span class="sourceLineNo">752</span>  /**<a name="line.752"></a>
-<span class="sourceLineNo">753</span>   * Used to group blocks into priority buckets.  There will be a BlockBucket<a name="line.753"></a>
-<span class="sourceLineNo">754</span>   * for each priority (single, multi, memory).  Once bucketed, the eviction<a name="line.754"></a>
-<span class="sourceLineNo">755</span>   * algorithm takes the appropriate number of elements out of each according<a name="line.755"></a>
-<span class="sourceLineNo">756</span>   * to configuration parameters and their relatives sizes.<a name="line.756"></a>
-<span class="sourceLineNo">757</span>   */<a name="line.757"></a>
-<span class="sourceLineNo">758</span>  private class BlockBucket implements Comparable&lt;BlockBucket&gt; {<a name="line.758"></a>
-<span class="sourceLineNo">759</span><a name="line.759"></a>
-<span class="sourceLineNo">760</span>    private final String name;<a name="line.760"></a>
-<span class="sourceLineNo">761</span>    private LruCachedBlockQueue queue;<a name="line.761"></a>
-<span class="sourceLineNo">762</span>    private long totalSize = 0;<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    private long bucketSize;<a name="line.763"></a>
-<span class="sourceLineNo">764</span><a name="line.764"></a>
-<span class="sourceLineNo">765</span>    public BlockBucket(String name, long bytesToFree, long blockSize, long bucketSize) {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      this.name = name;<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      this.bucketSize = bucketSize;<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      queue = new LruCachedBlockQueue(bytesToFree, blockSize);<a name="line.768"></a>
-<span class="sourceLineNo">769</span>      totalSize = 0;<a name="line.769"></a>
-<span class="sourceLineNo">770</span>    }<a name="line.770"></a>
-<span class="sourceLineNo">771</span><a name="line.771"></a>
-<span class="sourceLineNo">772</span>    public void add(LruCachedBlock block) {<a name="line.772"></a>
-<span class="sourceLineNo">773</span>      totalSize += block.heapSize();<a name="line.773"></a>
-<span class="sourceLineNo">774</span>      queue.add(block);<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    }<a name="line.775"></a>
-<span class="sourceLineNo">776</span><a name="line.776"></a>
-<span class="sourceLineNo">777</span>    public long free(long toFree) {<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      if (LOG.isTraceEnabled()) {<a name="line.778"></a>
-<span class="sourceLineNo">779</span>        LOG.trace("freeing " + StringUtils.byteDesc(toFree) + " from " + this);<a name="line.779"></a>
-<span class="sourceLineNo">780</span>      }<a name="line.780"></a>
-<span class="sourceLineNo">781</span>      LruCachedBlock cb;<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      long freedBytes = 0;<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      while ((cb = queue.pollLast()) != null) {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>        freedBytes += evictBlock(cb, true);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>        if (freedBytes &gt;= toFree) {<a name="line.785"></a>
-<span class="sourceLineNo">786</span>          return freedBytes;<a name="line.786"></a>
-<span class="sourceLineNo">787</span>        }<a name="line.787"></a>
-<span class="sourceLineNo">788</span>      }<a name="line.788"></a>
-<span class="sourceLineNo">789</span>      if (LOG.isTraceEnabled()) {<a name="line.789"></a>
-<span class="sourceLineNo">790</span>        LOG.trace("freed " + StringUtils.byteDesc(freedBytes) + " from " + this);<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      }<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      return freedBytes;<a name="line.792"></a>
+<span class="sourceLineNo">752</span>    public BlockBucket(String name, long bytesToFree, long blockSize, long bucketSize) {<a name="line.752"></a>
+<span class="sourceLineNo">753</span>      this.name = name;<a name="line.753"></a>
+<span class="sourceLineNo">754</span>      this.bucketSize = bucketSize;<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      queue = new LruCachedBlockQueue(bytesToFree, blockSize);<a name="line.755"></a>
+<span class="sourceLineNo">756</span>      totalSize = 0;<a name="line.756"></a>
+<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
+<span class="sourceLineNo">758</span><a name="line.758"></a>
+<span class="sourceLineNo">759</span>    public void add(LruCachedBlock block) {<a name="line.759"></a>
+<span class="sourceLineNo">760</span>      totalSize += block.heapSize();<a name="line.760"></a>
+<span class="sourceLineNo">761</span>      queue.add(block);<a name="line.761"></a>
+<span class="sourceLineNo">762</span>    }<a name="line.762"></a>
+<span class="sourceLineNo">763</span><a name="line.763"></a>
+<span class="sourceLineNo">764</span>    public long free(long toFree) {<a name="line.764"></a>
+<span class="sourceLineNo">765</span>      if (LOG.isTraceEnabled()) {<a name="line.765"></a>
+<span class="sourceLineNo">766</span>        LOG.trace("freeing " + StringUtils.byteDesc(toFree) + " from " + this);<a name="line.766"></a>
+<span class="sourceLineNo">767</span>      }<a name="line.767"></a>
+<span class="sourceLineNo">768</span>      LruCachedBlock cb;<a name="line.768"></a>
+<span class="sourceLineNo">769</span>      long freedBytes = 0;<a name="line.769"></a>
+<span class="sourceLineNo">770</span>      while ((cb = queue.pollLast()) != null) {<a name="line.770"></a>
+<span class="sourceLineNo">771</span>        freedBytes += evictBlock(cb, true);<a name="line.771"></a>
+<span class="sourceLineNo">772</span>        if (freedBytes &gt;= toFree) {<a name="line.772"></a>
+<span class="sourceLineNo">773</span>          return freedBytes;<a name="line.773"></a>
+<span class="sourceLineNo">774</span>        }<a name="line.774"></a>
+<span class="sourceLineNo">775</span>      }<a name="line.775"></a>
+<span class="sourceLineNo">776</span>      if (LOG.isTraceEnabled()) {<a name="line.776"></a>
+<span class="sourceLineNo">777</span>        LOG.trace("freed " + StringUtils.byteDesc(freedBytes) + " from " + this);<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      }<a name="line.778"></a>
+<span class="sourceLineNo">779</span>      return freedBytes;<a name="line.779"></a>
+<span class="sourceLineNo">780</span>    }<a name="line.780"></a>
+<span class="sourceLineNo">781</span><a name="line.781"></a>
+<span class="sourceLineNo">782</span>    public long overflow() {<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      return totalSize - bucketSize;<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    }<a name="line.784"></a>
+<span class="sourceLineNo">785</span><a name="line.785"></a>
+<span class="sourceLineNo">786</span>    public long totalSize() {<a name="line.786"></a>
+<span class="sourceLineNo">787</span>      return totalSize;<a name="line.787"></a>
+<span class="sourceLineNo">788</span>    }<a name="line.788"></a>
+<span class="sourceLineNo">789</span><a name="line.789"></a>
+<span class="sourceLineNo">790</span>    @Override<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    public int compareTo(BlockBucket that) {<a name="line.791"></a>
+<span class="sourceLineNo">792</span>      return Long.compare(this.overflow(), that.overflow());<a name="line.792"></a>
 <span class="sourceLineNo">793</span>    }<a name="line.793"></a>
 <span class="sourceLineNo">794</span><a name="line.794"></a>
-<span class="sourceLineNo">795</span>    public long overflow() {<a name="line.795"></a>
-<span class="sourceLineNo">796</span>      return totalSize - bucketSize;<a name="line.796"></a>
-<span class="sourceLineNo">797</span>    }<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span>    public long totalSize() {<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      return totalSize;<a name="line.800"></a>
+<span class="sourceLineNo">795</span>    @Override<a name="line.795"></a>
+<span class="sourceLineNo">796</span>    public boolean equals(Object that) {<a name="line.796"></a>
+<span class="sourceLineNo">797</span>      if (that == null || !(that instanceof BlockBucket)) {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>        return false;<a name="line.798"></a>
+<span class="sourceLineNo">799</span>      }<a name="line.799"></a>
+<span class="sourceLineNo">800</span>      return compareTo((BlockBucket)that) == 0;<a name="line.800"></a>
 <span class="sourceLineNo">801</span>    }<a name="line.801"></a>
 <span class="sourceLineNo">802</span><a name="line.802"></a>
 <span class="sourceLineNo">803</span>    @Override<a name="line.803"></a>
-<span class="sourceLineNo">804</span>    public int compareTo(BlockBucket that) {<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      return Long.compare(this.overflow(), that.overflow());<a name="line.805"></a>
+<span class="sourceLineNo">804</span>    public int hashCode() {<a name="line.804"></a>
+<span class="sourceLineNo">805</span>      return Objects.hashCode(name, bucketSize, queue, totalSize);<a name="line.805"></a>
 <span class="sourceLineNo">806</span>    }<a name="line.806"></a>
 <span class="sourceLineNo">807</span><a name="line.807"></a>
 <span class="sourceLineNo">808</span>    @Override<a name="line.808"></a>
-<span class="sourceLineNo">809</span>    public boolean equals(Object that) {<a name="line.809"></a>
-<span class="sourceLineNo">810</span>      if (that == null || !(that instanceof BlockBucket)) {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>        return false;<a name="line.811"></a>
-<span class="sourceLineNo">812</span>      }<a name="line.812"></a>
-<span class="sourceLineNo">813</span>      return compareTo((BlockBucket)that) == 0;<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    }<a name="line.814"></a>
-<span class="sourceLineNo">815</span><a name="line.815"></a>
-<span class="sourceLineNo">816</span>    @Override<a name="line.816"></a>
-<span class="sourceLineNo">817</span>    public int hashCode() {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      return Objects.hashCode(name, bucketSize, queue, totalSize);<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    }<a name="line.819"></a>
-<span class="sourceLineNo">820</span><a name="line.820"></a>
-<span class="sourceLineNo">821</span>    @Override<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    public String toString() {<a name="line.822"></a>
-<span class="sourceLineNo">823</span>      return MoreObjects.toStringHelper(this)<a name="line.823"></a>
-<span class="sourceLineNo">824</span>        .add("name", name)<a name="line.824"></a>
-<span class="sourceLineNo">825</span>        .add("totalSize", StringUtils.byteDesc(totalSize))<a name="line.825"></a>
-<span class="sourceLineNo">826</span>        .add("bucketSize", StringUtils.byteDesc(bucketSize))<a name="line.826"></a>
-<span class="sourceLineNo">827</span>        .toString();<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    }<a name="line.828"></a>
-<span class="sourceLineNo">829</span>  }<a name="line.829"></a>
-<span class="sourceLineNo">830</span><a name="line.830"></a>
-<span class="sourceLineNo">831</span>  /**<a name="line.831"></a>
-<span class="sourceLineNo">832</span>   * Get the maximum size of this cache.<a name="line.832"></a>
-<span class="sourceLineNo">833</span>   *<a name="line.833"></a>
-<span class="sourceLineNo">834</span>   * @return max size in bytes<a name="line.834"></a>
-<span class="sourceLineNo">835</span>   */<a name="line.835"></a>
-<span class="sourceLineNo">836</span><a name="line.836"></a>
-<span class="sourceLineNo">837</span>  @Override<a name="line.837"></a>
-<span class="sourceLineNo">838</span>  public long getMaxSize() {<a name="line.838"></a>
-<span class="sourceLineNo">839</span>    return this.maxSize;<a name="line.839"></a>
-<span class="sourceLineNo">840</span>  }<a name="line.840"></a>
-<span class="sourceLineNo">841</span><a name="line.841"></a>
-<span class="sourceLineNo">842</span>  @Override<a name="line.842"></a>
-<span class="sourceLineNo">843</span>  public long getCurrentSize() {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>    return this.size.get();<a name="line.844"></a>
-<span class="sourceLineNo">845</span>  }<a name="line.845"></a>
-<span class="sourceLineNo">846</span><a name="line.846"></a>
-<span class="sourceLineNo">847</span>  @Override<a name="line.847"></a>
-<span class="sourceLineNo">848</span>  public long getCurrentDataSize() {<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    return this.dataBlockSize.sum();<a name="line.849"></a>
-<span class="sourceLineNo">850</span>  }<a name="line.850"></a>
-<span class="sourceLineNo">851</span><a name="line.851"></a>
-<span class="sourceLineNo">852</span>  @Override<a name="line.852"></a>
-<span class="sourceLineNo">853</span>  public long getFreeSize() {<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    return getMaxSize() - getCurrentSize();<a name="line.854"></a>
-<span class="sourceLineNo">855</span>  }<a name="line.855"></a>
-<span class="sourceLineNo">856</span><a name="line.856"></a>
-<span class="sourceLineNo">857</span>  @Override<a name="line.857"></a>
-<span class="sourceLineNo">858</span>  public long size() {<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    return getMaxSize();<a name="line.859"></a>
-<span class="sourceLineNo">860</span>  }<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>  @Override<a name="line.862"></a>
-<span class="sourceLineNo">863</span>  public long getBlockCount() {<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    return this.elements.get();<a name="line.864"></a>
-<span class="sourceLineNo">865</span>  }<a name="line.865"></a>
-<span class="sourceLineNo">866</span><a name="line.866"></a>
-<span class="sourceLineNo">867</span>  @Override<a name="line.867"></a>
-<span class="sourceLineNo">868</span>  public long getDataBlockCount() {<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    return this.dataBlockElements.sum();<a name="line.869"></a>
-<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
-<span class="sourceLineNo">871</span><a name="line.871"></a>
-<span class="sourceLineNo">872</span>  EvictionThread getEvictionThread() {<a name="line.872"></a>
-<span class="sourceLineNo">873</span>    return this.evictionThread;<a name="line.873"></a>
-<span class="sourceLineNo">874</span>  }<a name="line.874"></a>
+<span class="sourceLineNo">809</span>    public String toString() {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>      return MoreObjects.toStringHelper(this)<a name="line.810"></a>
+<span class="sourceLineNo">811</span>        .add("name", name)<a name="line.811"></a>
+<span class="sourceLineNo">812</span>        .add("totalSize", StringUtils.byteDesc(totalSize))<a name="line.812"></a>
+<span class="sourceLineNo">813</span>        .add("bucketSize", StringUtils.byteDesc(bucketSize))<a name="line.813"></a>
+<span class="sourceLineNo">814</span>        .toString();<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    }<a name="line.815"></a>
+<span class="sourceLineNo">816</span>  }<a name="line.816"></a>
+<span class="sourceLineNo">817</span><a name="line.817"></a>
+<span class="sourceLineNo">818</span>  /**<a name="line.818"></a>
+<span class="sourceLineNo">819</span>   * Get the maximum size of this cache.<a name="line.819"></a>
+<span class="sourceLineNo">820</span>   *<a name="line.820"></a>
+<span class="sourceLineNo">821</span>   * @return max size in bytes<a name="line.821"></a>
+<span class="sourceLineNo">822</span>   */<a name="line.822"></a>
+<span class="sourceLineNo">823</span><a name="line.823"></a>
+<span class="sourceLineNo">824</span>  @Override<a name="line.824"></a>
+<span class="sourceLineNo">825</span>  public long getMaxSize() {<a name="line.825"></a>
+<span class="sourceLineNo">826</span>    return this.maxSize;<a name="line.826"></a>
+<span class="sourceLineNo">827</span>  }<a name="line.827"></a>
+<span class="sourceLineNo">828</span><a name="line.828"></a>
+<span class="sourceLineNo">829</span>  @Override<a name="line.829"></a>
+<span class="sourceLineNo">830</span>  public long getCurrentSize() {<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    return this.size.get();<a name="line.831"></a>
+<span class="sourceLineNo">832</span>  }<a name="line.832"></a>
+<span class="sourceLineNo">833</span><a name="line.833"></a>
+<span class="sourceLineNo">834</span>  @Override<a name="line.834"></a>
+<span class="sourceLineNo">835</span>  public long getCurrentDataSize() {<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    return this.dataBlockSize.sum();<a name="line.836"></a>
+<span class="sourceLineNo">837</span>  }<a name="line.837"></a>
+<span class="sourceLineNo">838</span><a name="line.838"></a>
+<span class="sourceLineNo">839</span>  @Override<a name="line.839"></a>
+<span class="sourceLineNo">840</span>  public long getFreeSize() {<a name="line.840"></a>
+<span class="sourceLineNo">841</span>    return getMaxSize() - getCurrentSize();<a name="line.841"></a>
+<span class="sourceLineNo">842</span>  }<a name="line.842"></a>
+<span class="sourceLineNo">843</span><a name="line.843"></a>
+<span class="sourceLineNo">844</spa

<TRUNCATED>

[33/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
index 142b0f9..2260cb8 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3015">HRegion.BatchOperation</a>&lt;T&gt;
+<pre>private abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3021">HRegion.BatchOperation</a>&lt;T&gt;
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Class that tracks the progress of a batch operations, accumulating status codes and tracking
  the index at which processing is proceeding. These batch operations may get split into
@@ -408,7 +408,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>operations</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="type parameter in HRegion.BatchOperation">T</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3016">operations</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="type parameter in HRegion.BatchOperation">T</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3022">operations</a></pre>
 </li>
 </ul>
 <a name="retCodeDetails">
@@ -417,7 +417,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>retCodeDetails</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/OperationStatus.html" title="class in org.apache.hadoop.hbase.regionserver">OperationStatus</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3017">retCodeDetails</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/OperationStatus.html" title="class in org.apache.hadoop.hbase.regionserver">OperationStatus</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3023">retCodeDetails</a></pre>
 </li>
 </ul>
 <a name="walEditsFromCoprocessors">
@@ -426,7 +426,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>walEditsFromCoprocessors</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3018">walEditsFromCoprocessors</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3024">walEditsFromCoprocessors</a></pre>
 </li>
 </ul>
 <a name="familyCellMaps">
@@ -435,7 +435,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>familyCellMaps</h4>
-<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3020">familyCellMaps</a></pre>
+<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3026">familyCellMaps</a></pre>
 </li>
 </ul>
 <a name="region">
@@ -444,7 +444,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3022">region</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3028">region</a></pre>
 </li>
 </ul>
 <a name="nextIndexToProcess">
@@ -453,7 +453,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>nextIndexToProcess</h4>
-<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3023">nextIndexToProcess</a></pre>
+<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3029">nextIndexToProcess</a></pre>
 </li>
 </ul>
 <a name="observedExceptions">
@@ -462,7 +462,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>observedExceptions</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.ObservedExceptionsInBatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3024">observedExceptions</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.ObservedExceptionsInBatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3030">observedExceptions</a></pre>
 </li>
 </ul>
 <a name="durability">
@@ -471,7 +471,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>durability</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3026">durability</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3032">durability</a></pre>
 </li>
 </ul>
 <a name="atomic">
@@ -480,7 +480,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>atomic</h4>
-<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3027">atomic</a></pre>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3033">atomic</a></pre>
 </li>
 </ul>
 </li>
@@ -499,7 +499,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>BatchOperation</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3029">BatchOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3035">BatchOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                       <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="type parameter in HRegion.BatchOperation">T</a>[]&nbsp;operations)</pre>
 </li>
 </ul>
@@ -517,7 +517,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>visitBatchOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3056">visitBatchOperations</a>(boolean&nbsp;pendingOnly,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3062">visitBatchOperations</a>(boolean&nbsp;pendingOnly,
                                  int&nbsp;lastIndexExclusive,
                                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html" title="interface in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation.Visitor</a>&nbsp;visitor)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -534,7 +534,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutation</h4>
-<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3068">getMutation</a>(int&nbsp;index)</pre>
+<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3074">getMutation</a>(int&nbsp;index)</pre>
 </li>
 </ul>
 <a name="getNonceGroup-int-">
@@ -543,7 +543,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonceGroup</h4>
-<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3070">getNonceGroup</a>(int&nbsp;index)</pre>
+<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3076">getNonceGroup</a>(int&nbsp;index)</pre>
 </li>
 </ul>
 <a name="getNonce-int-">
@@ -552,7 +552,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonce</h4>
-<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3072">getNonce</a>(int&nbsp;index)</pre>
+<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3078">getNonce</a>(int&nbsp;index)</pre>
 </li>
 </ul>
 <a name="getMutationsForCoprocs--">
@@ -561,7 +561,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutationsForCoprocs</h4>
-<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3077">getMutationsForCoprocs</a>()</pre>
+<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3083">getMutationsForCoprocs</a>()</pre>
 <div class="block">This method is potentially expensive and useful mostly for non-replay CP path.</div>
 </li>
 </ul>
@@ -571,7 +571,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isInReplay</h4>
-<pre>public abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3079">isInReplay</a>()</pre>
+<pre>public abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3085">isInReplay</a>()</pre>
 </li>
 </ul>
 <a name="getOrigLogSeqNum--">
@@ -580,7 +580,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getOrigLogSeqNum</h4>
-<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3081">getOrigLogSeqNum</a>()</pre>
+<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3087">getOrigLogSeqNum</a>()</pre>
 </li>
 </ul>
 <a name="startRegionOperation--">
@@ -589,7 +589,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>startRegionOperation</h4>
-<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3083">startRegionOperation</a>()
+<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3089">startRegionOperation</a>()
                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -603,7 +603,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>closeRegionOperation</h4>
-<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3085">closeRegionOperation</a>()
+<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3091">closeRegionOperation</a>()
                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -617,7 +617,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPrepare</h4>
-<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3094">checkAndPrepare</a>()
+<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3100">checkAndPrepare</a>()
                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs
  CP prePut()/ preDelete() hooks for all mutations in a batch. This is intended to operate on
@@ -636,7 +636,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPreparePut</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3100">checkAndPreparePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3106">checkAndPreparePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Implement any Put request specific check and prepare logic here. Please refer to
  <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#checkAndPrepareMutation-org.apache.hadoop.hbase.client.Mutation-long-"><code>checkAndPrepareMutation(Mutation, long)</code></a> for how its used.</div>
@@ -652,7 +652,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareMiniBatchOperations</h4>
-<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3106">prepareMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3112">prepareMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                                 long&nbsp;timestamp,
                                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&gt;&nbsp;acquiredRowLocks)
                                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -670,7 +670,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>writeMiniBatchOperationsToMemStore</h4>
-<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3112">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3118">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                                                                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;writeEntry)
                                                                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Write mini-batch operations to MemStore</div>
@@ -686,7 +686,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>writeMiniBatchOperationsToMemStore</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3116">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3122">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                                   long&nbsp;writeNumber)
                                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -701,7 +701,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isDone</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3136">isDone</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3142">isDone</a>()</pre>
 </li>
 </ul>
 <a name="size--">
@@ -710,7 +710,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3140">size</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3146">size</a>()</pre>
 </li>
 </ul>
 <a name="isOperationPending-int-">
@@ -719,7 +719,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isOperationPending</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3144">isOperationPending</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3150">isOperationPending</a>(int&nbsp;index)</pre>
 </li>
 </ul>
 <a name="getClusterIds--">
@@ -728,7 +728,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getClusterIds</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html?is-external=true" title="class or interface in java.util">UUID</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3148">getClusterIds</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html?is-external=true" title="class or interface in java.util">UUID</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3154">getClusterIds</a>()</pre>
 </li>
 </ul>
 <a name="isAtomic--">
@@ -737,7 +737,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isAtomic</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3153">isAtomic</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3159">isAtomic</a>()</pre>
 </li>
 </ul>
 <a name="checkAndPrepareMutation-org.apache.hadoop.hbase.client.Mutation-long-">
@@ -746,7 +746,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPrepareMutation</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3163">checkAndPrepareMutation</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3169">checkAndPrepareMutation</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation,
                                        long&nbsp;timestamp)
                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Helper method that checks and prepares only one mutation. This can be used to implement
@@ -765,7 +765,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPrepareMutation</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3175">checkAndPrepareMutation</a>(int&nbsp;index,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3181">checkAndPrepareMutation</a>(int&nbsp;index,
                                        long&nbsp;timestamp)
                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -780,7 +780,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>lockRowsAndBuildMiniBatch</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3237">lockRowsAndBuildMiniBatch</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&gt;&nbsp;acquiredRowLocks)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3243">lockRowsAndBuildMiniBatch</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&gt;&nbsp;acquiredRowLocks)
                                                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Creates Mini-batch of all operations [nextIndexToProcess, lastIndexExclusive) for which
  a row lock can be acquired. All mutations with locked rows are considered to be
@@ -800,7 +800,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createMiniBatch</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3321">createMiniBatch</a>(int&nbsp;lastIndexExclusive,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3327">createMiniBatch</a>(int&nbsp;lastIndexExclusive,
                                                                  int&nbsp;readyToWriteCount)</pre>
 </li>
 </ul>
@@ -810,7 +810,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>buildWALEdits</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a>,<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3331">buildWALEdits</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;m
 iniBatchOp)
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a>,<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3337">buildWALEdits</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;m
 iniBatchOp)
                                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are
  present, they are merged to result WALEdit.</div>
@@ -826,7 +826,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>completeMiniBatchOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3380">completeMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3386">completeMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;writeEntry)
                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">This method completes mini-batch operations by calling postBatchMutate() CP hook (if
@@ -843,7 +843,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>doPostOpCleanupForMiniBatch</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3388">doPostOpCleanupForMiniBatch</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3394">doPostOpCleanupForMiniBatch</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                         <a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit,
                                         boolean&nbsp;success)
                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -859,7 +859,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>doFinishHotnessProtector</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3394">doFinishHotnessProtector</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3400">doFinishHotnessProtector</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp)</pre>
 </li>
 </ul>
 <a name="applyFamilyMapToMemStore-java.util.Map-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">
@@ -868,7 +868,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>applyFamilyMapToMemStore</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3431">applyFamilyMapToMemStore</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3437">applyFamilyMapToMemStore</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
                                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreAccounting)
                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Atomically apply the given map of family->edits to the memstore.

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
index 5e9c2c0..f0d2759 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5955">HRegion.BulkLoadListener</a></pre>
+<pre>public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5961">HRegion.BulkLoadListener</a></pre>
 <div class="block">Listener class to enable callers of
  bulkLoadHFile() to perform any necessary
  pre/post processing of a given bulkload call</div>
@@ -174,7 +174,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareBulkLoad</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html#line.5963">prepareBulkLoad</a>(byte[]&nbsp;family,
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html#line.5969">prepareBulkLoad</a>(byte[]&nbsp;family,
                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;srcPath,
                        boolean&nbsp;copyFile)
                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -196,7 +196,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockList">
 <li class="blockList">
 <h4>doneBulkLoad</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html#line.5972">doneBulkLoad</a>(byte[]&nbsp;family,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html#line.5978">doneBulkLoad</a>(byte[]&nbsp;family,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;srcPath)
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Called after a successful HFile load</div>
@@ -215,7 +215,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>failedBulkLoad</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html#line.5980">failedBulkLoad</a>(byte[]&nbsp;family,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html#line.5986">failedBulkLoad</a>(byte[]&nbsp;family,
                     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;srcPath)
              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Called after a failed HFile load</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
index b49d5a5..dd6b89a 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html#line.2186">HRegion.FlushResult.Result</a>
+<pre>public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html#line.2192">HRegion.FlushResult.Result</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a>&gt;</pre>
 </li>
 </ul>
@@ -216,7 +216,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>FLUSHED_NO_COMPACTION_NEEDED</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html#line.2187">FLUSHED_NO_COMPACTION_NEEDED</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html#line.2193">FLUSHED_NO_COMPACTION_NEEDED</a></pre>
 </li>
 </ul>
 <a name="FLUSHED_COMPACTION_NEEDED">
@@ -225,7 +225,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>FLUSHED_COMPACTION_NEEDED</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html#line.2188">FLUSHED_COMPACTION_NEEDED</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html#line.2194">FLUSHED_COMPACTION_NEEDED</a></pre>
 </li>
 </ul>
 <a name="CANNOT_FLUSH_MEMSTORE_EMPTY">
@@ -234,7 +234,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>CANNOT_FLUSH_MEMSTORE_EMPTY</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html#line.2191">CANNOT_FLUSH_MEMSTORE_EMPTY</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html#line.2197">CANNOT_FLUSH_MEMSTORE_EMPTY</a></pre>
 </li>
 </ul>
 <a name="CANNOT_FLUSH">
@@ -243,7 +243,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CANNOT_FLUSH</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html#line.2192">CANNOT_FLUSH</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html#line.2198">CANNOT_FLUSH</a></pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
index d147741..3a9dc8b 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2185">HRegion.FlushResult</a></pre>
+<pre>public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2191">HRegion.FlushResult</a></pre>
 </li>
 </ul>
 </div>
@@ -180,7 +180,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockList">
 <li class="blockList">
 <h4>getResult</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html#line.2196">getResult</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver">HRegion.FlushResult.Result</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html#line.2202">getResult</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the detailed result code</dd>
@@ -193,7 +193,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockList">
 <li class="blockList">
 <h4>isFlushSucceeded</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html#line.2199">isFlushSucceeded</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html#line.2205">isFlushSucceeded</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>true if the memstores were flushed, else false</dd>
@@ -206,7 +206,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isCompactionNeeded</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html#line.2202">isCompactionNeeded</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html#line.2208">isCompactionNeeded</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if the flush requested a compaction, else false</dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
index 97072cf..3259495 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3447">HRegion.MutationBatchOperation</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3453">HRegion.MutationBatchOperation</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</pre>
 <div class="block">Batch of mutation operations. Base class is shared with <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver"><code>HRegion.ReplayBatchOperation</code></a> as most
  of the logic is same.</div>
@@ -342,7 +342,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>nonceGroup</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3448">nonceGroup</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3454">nonceGroup</a></pre>
 </li>
 </ul>
 <a name="nonce">
@@ -351,7 +351,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>nonce</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3449">nonce</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3455">nonce</a></pre>
 </li>
 </ul>
 </li>
@@ -368,7 +368,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MutationBatchOperation</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3450">MutationBatchOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3456">MutationBatchOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                               <a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;operations,
                               boolean&nbsp;atomic,
                               long&nbsp;nonceGroup,
@@ -389,7 +389,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutation</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3459">getMutation</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3465">getMutation</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getMutation-int-">getMutation</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</code></dd>
@@ -402,7 +402,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonceGroup</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3464">getNonceGroup</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3470">getNonceGroup</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getNonceGroup-int-">getNonceGroup</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</code></dd>
@@ -415,7 +415,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonce</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3469">getNonce</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3475">getNonce</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getNonce-int-">getNonce</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</code></dd>
@@ -428,7 +428,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutationsForCoprocs</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3474">getMutationsForCoprocs</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3480">getMutationsForCoprocs</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getMutationsForCoprocs--">HRegion.BatchOperation</a></code></span></div>
 <div class="block">This method is potentially expensive and useful mostly for non-replay CP path.</div>
 <dl>
@@ -443,7 +443,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>isInReplay</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3479">isInReplay</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3485">isInReplay</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#isInReplay--">isInReplay</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</code></dd>
@@ -456,7 +456,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getOrigLogSeqNum</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3484">getOrigLogSeqNum</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3490">getOrigLogSeqNum</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getOrigLogSeqNum--">getOrigLogSeqNum</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</code></dd>
@@ -469,7 +469,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>startRegionOperation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3489">startRegionOperation</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3495">startRegionOperation</a>()
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -485,7 +485,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>closeRegionOperation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3494">closeRegionOperation</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3500">closeRegionOperation</a>()
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -501,7 +501,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPreparePut</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3499">checkAndPreparePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3505">checkAndPreparePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#checkAndPreparePut-org.apache.hadoop.hbase.client.Put-">HRegion.BatchOperation</a></code></span></div>
 <div class="block">Implement any Put request specific check and prepare logic here. Please refer to
@@ -520,7 +520,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPrepare</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3504">checkAndPrepare</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3510">checkAndPrepare</a>()
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#checkAndPrepare--">HRegion.BatchOperation</a></code></span></div>
 <div class="block">Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs
@@ -542,7 +542,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareMiniBatchOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3549">prepareMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3555">prepareMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                        long&nbsp;timestamp,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&gt;&nbsp;acquiredRowLocks)
                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -563,7 +563,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>buildWALEdits</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a>,<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3585">buildWALEdits</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt
 ;&nbsp;miniBatchOp)
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a>,<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3591">buildWALEdits</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt
 ;&nbsp;miniBatchOp)
                                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#buildWALEdits-org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress-">HRegion.BatchOperation</a></code></span></div>
 <div class="block">Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are
@@ -582,7 +582,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>writeMiniBatchOperationsToMemStore</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3596">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3602">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                                                                     @Nullable
                                                                                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;writeEntry)
                                                                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -602,7 +602,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>completeMiniBatchOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3607">completeMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3613">completeMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;writeEntry)
                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#completeMiniBatchOperations-org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress-org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry-">HRegion.BatchOperation</a></code></span></div>
@@ -622,7 +622,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>doPostOpCleanupForMiniBatch</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3619">doPostOpCleanupForMiniBatch</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3625">doPostOpCleanupForMiniBatch</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                         <a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit,
                                         boolean&nbsp;success)
                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -640,7 +640,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>callPreMutateCPHook</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3668">callPreMutateCPHook</a>(int&nbsp;index,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3674">callPreMutateCPHook</a>(int&nbsp;index,
                                  <a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit,
                                  int[]&nbsp;metrics)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -659,7 +659,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndMergeCPMutations</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3705">checkAndMergeCPMutations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3711">checkAndMergeCPMutations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&gt;&nbsp;acquiredRowLocks,
                                       long&nbsp;timestamp)
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -675,7 +675,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>mergeFamilyMaps</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3740">mergeFamilyMaps</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3746">mergeFamilyMaps</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
                              <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;toBeMerged)</pre>
 </li>
 </ul>


[04/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html
index 67f4551..017124c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html
@@ -387,817 +387,804 @@
 <span class="sourceLineNo">379</span>    }<a name="line.379"></a>
 <span class="sourceLineNo">380</span><a name="line.380"></a>
 <span class="sourceLineNo">381</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    if (cb != null) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      int comparison = BlockCacheUtil.validateBlockAddition(cb.getBuffer(), buf, cacheKey);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      if (comparison != 0) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        if (comparison &lt; 0) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          LOG.warn("Cached block contents differ by nextBlockOnDiskSize. Keeping cached block.");<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          return;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        } else {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          LOG.warn("Cached block contents differ by nextBlockOnDiskSize. Caching new block.");<a name="line.389"></a>
-<span class="sourceLineNo">390</span>        }<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      } else {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        String msg = "Cached an already cached block: " + cacheKey + " cb:" + cb.getCacheKey();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        msg += ". This is harmless and can happen in rare cases (see HBASE-8547)";<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        LOG.debug(msg);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>        return;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    long currentSize = size.get();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    long currentAcceptableSize = acceptableSize();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    long hardLimitSize = (long) (hardCapacityLimitFactor * currentAcceptableSize);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    if (currentSize &gt;= hardLimitSize) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      stats.failInsert();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      if (LOG.isTraceEnabled()) {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        LOG.trace("LruBlockCache current size " + StringUtils.byteDesc(currentSize)<a name="line.404"></a>
-<span class="sourceLineNo">405</span>          + " has exceeded acceptable size " + StringUtils.byteDesc(currentAcceptableSize) + "."<a name="line.405"></a>
-<span class="sourceLineNo">406</span>          + " The hard limit size is " + StringUtils.byteDesc(hardLimitSize)<a name="line.406"></a>
-<span class="sourceLineNo">407</span>          + ", failed to put cacheKey:" + cacheKey + " into LruBlockCache.");<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      }<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      if (!evictionInProgress) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        runEviction();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      }<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      return;<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    cb = new LruCachedBlock(cacheKey, buf, count.incrementAndGet(), inMemory);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    long newSize = updateSizeMetrics(cb, false);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    map.put(cacheKey, cb);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    long val = elements.incrementAndGet();<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    if (buf.getBlockType().isData()) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>       dataBlockElements.increment();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    if (LOG.isTraceEnabled()) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      long size = map.size();<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      assertCounterSanity(size, val);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    if (newSize &gt; currentAcceptableSize &amp;&amp; !evictionInProgress) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      runEviction();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>  }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>  /**<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * Sanity-checking for parity between actual block cache content and metrics.<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   * Intended only for use with TRACE level logging and -ea JVM.<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   */<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  private static void assertCounterSanity(long mapSize, long counterVal) {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if (counterVal &lt; 0) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      LOG.trace("counterVal overflow. Assertions unreliable. counterVal=" + counterVal +<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        ", mapSize=" + mapSize);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      return;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    if (mapSize &lt; Integer.MAX_VALUE) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      double pct_diff = Math.abs((((double) counterVal) / ((double) mapSize)) - 1.);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      if (pct_diff &gt; 0.05) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        LOG.trace("delta between reported and actual size &gt; 5%. counterVal=" + counterVal +<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          ", mapSize=" + mapSize);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>  /**<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * Cache the block with the specified name and buffer.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * &lt;p&gt;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   *<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * @param cacheKey block's cache key<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @param buf      block buffer<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   */<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  @Override<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  public void cacheBlock(BlockCacheKey cacheKey, Cacheable buf) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    cacheBlock(cacheKey, buf, false);<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  }<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>  /**<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * Helper function that updates the local size counter and also updates any<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * per-cf or per-blocktype metrics it can discern from given<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * {@link LruCachedBlock}<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  private long updateSizeMetrics(LruCachedBlock cb, boolean evict) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    long heapsize = cb.heapSize();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    BlockType bt = cb.getBuffer().getBlockType();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    if (evict) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      heapsize *= -1;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    if (bt != null &amp;&amp; bt.isData()) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>       dataBlockSize.add(heapsize);<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    return size.addAndGet(heapsize);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  /**<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * Get the buffer of the block with the specified name.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   *<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @param cacheKey           block's cache key<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * @param caching            true if the caller caches blocks on cache misses<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @param repeat             Whether this is a repeat lookup for the same block<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   *                           (used to avoid double counting cache misses when doing double-check<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   *                           locking)<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @param updateCacheMetrics Whether to update cache metrics or not<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   *<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @return buffer of specified cache key, or null if not in cache<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  @Override<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  public Cacheable getBlock(BlockCacheKey cacheKey, boolean caching, boolean repeat,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      boolean updateCacheMetrics) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    if (cb == null) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      if (!repeat &amp;&amp; updateCacheMetrics) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        stats.miss(caching, cacheKey.isPrimary(), cacheKey.getBlockType());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      }<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      // If there is another block cache then try and read there.<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      // However if this is a retry ( second time in double checked locking )<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      // And it's already a miss then the l2 will also be a miss.<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      if (victimHandler != null &amp;&amp; !repeat) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>        Cacheable result = victimHandler.getBlock(cacheKey, caching, repeat, updateCacheMetrics);<a name="line.502"></a>
-<span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span>        // Promote this to L1.<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        if (result != null &amp;&amp; caching) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>          if (result instanceof HFileBlock &amp;&amp; ((HFileBlock) result).usesSharedMemory()) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>            result = ((HFileBlock) result).deepClone();<a name="line.507"></a>
-<span class="sourceLineNo">508</span>          }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>          cacheBlock(cacheKey, result, /* inMemory = */ false);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        return result;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      }<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      return null;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    if (updateCacheMetrics) stats.hit(caching, cacheKey.isPrimary(), cacheKey.getBlockType());<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    cb.access(count.incrementAndGet());<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    return cb.getBuffer();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>  /**<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * Whether the cache contains block with specified cacheKey<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   *<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @return true if contains the block<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   */<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  public boolean containsBlock(BlockCacheKey cacheKey) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    return map.containsKey(cacheKey);<a name="line.526"></a>
-<span class="sourceLineNo">527</span>  }<a name="line.527"></a>
-<span class="sourceLineNo">528</span><a name="line.528"></a>
-<span class="sourceLineNo">529</span>  @Override<a name="line.529"></a>
-<span class="sourceLineNo">530</span>  public boolean evictBlock(BlockCacheKey cacheKey) {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    return cb != null &amp;&amp; evictBlock(cb, false) &gt; 0;<a name="line.532"></a>
-<span class="sourceLineNo">533</span>  }<a name="line.533"></a>
-<span class="sourceLineNo">534</span><a name="line.534"></a>
-<span class="sourceLineNo">535</span>  /**<a name="line.535"></a>
-<span class="sourceLineNo">536</span>   * Evicts all blocks for a specific HFile. This is an<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * expensive operation implemented as a linear-time search through all blocks<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * in the cache. Ideally this should be a search in a log-access-time map.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   *<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * &lt;p&gt;<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   * This is used for evict-on-close to remove all blocks of a specific HFile.<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   *<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * @return the number of blocks evicted<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   */<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  @Override<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  public int evictBlocksByHfileName(String hfileName) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    int numEvicted = 0;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    for (BlockCacheKey key : map.keySet()) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      if (key.getHfileName().equals(hfileName)) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        if (evictBlock(key))<a name="line.550"></a>
-<span class="sourceLineNo">551</span>          ++numEvicted;<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      }<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    }<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    if (victimHandler != null) {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      numEvicted += victimHandler.evictBlocksByHfileName(hfileName);<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    }<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    return numEvicted;<a name="line.557"></a>
-<span class="sourceLineNo">558</span>  }<a name="line.558"></a>
-<span class="sourceLineNo">559</span><a name="line.559"></a>
-<span class="sourceLineNo">560</span>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * Evict the block, and it will be cached by the victim handler if exists &amp;amp;&amp;amp;<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * block may be read again later<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   *<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param evictedByEvictionProcess true if the given block is evicted by<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   *          EvictionThread<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   * @return the heap size of evicted block<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   */<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  protected long evictBlock(LruCachedBlock block, boolean evictedByEvictionProcess) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    boolean found = map.remove(block.getCacheKey()) != null;<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    if (!found) {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      return 0;<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    }<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    updateSizeMetrics(block, true);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    long val = elements.decrementAndGet();<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    if (LOG.isTraceEnabled()) {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      long size = map.size();<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      assertCounterSanity(size, val);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span>    if (block.getBuffer().getBlockType().isData()) {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>       dataBlockElements.decrement();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    if (evictedByEvictionProcess) {<a name="line.582"></a>
-<span class="sourceLineNo">583</span>      // When the eviction of the block happened because of invalidation of HFiles, no need to<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      // update the stats counter.<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      stats.evicted(block.getCachedTime(), block.getCacheKey().isPrimary());<a name="line.585"></a>
-<span class="sourceLineNo">586</span>      if (victimHandler != null) {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>        victimHandler.cacheBlock(block.getCacheKey(), block.getBuffer());<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      }<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    }<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    return block.heapSize();<a name="line.590"></a>
-<span class="sourceLineNo">591</span>  }<a name="line.591"></a>
-<span class="sourceLineNo">592</span><a name="line.592"></a>
-<span class="sourceLineNo">593</span>  /**<a name="line.593"></a>
-<span class="sourceLineNo">594</span>   * Multi-threaded call to run the eviction process.<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   */<a name="line.595"></a>
-<span class="sourceLineNo">596</span>  private void runEviction() {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    if (evictionThread == null) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      evict();<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    } else {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      evictionThread.evict();<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    }<a name="line.601"></a>
-<span class="sourceLineNo">602</span>  }<a name="line.602"></a>
-<span class="sourceLineNo">603</span><a name="line.603"></a>
-<span class="sourceLineNo">604</span>  @VisibleForTesting<a name="line.604"></a>
-<span class="sourceLineNo">605</span>  boolean isEvictionInProgress() {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    return evictionInProgress;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>  }<a name="line.607"></a>
+<span class="sourceLineNo">382</span>    if (cb != null &amp;&amp; !BlockCacheUtil.shouldReplaceExistingCacheBlock(this, cacheKey, buf)) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      return;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    long currentSize = size.get();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    long currentAcceptableSize = acceptableSize();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    long hardLimitSize = (long) (hardCapacityLimitFactor * currentAcceptableSize);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    if (currentSize &gt;= hardLimitSize) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      stats.failInsert();<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      if (LOG.isTraceEnabled()) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        LOG.trace("LruBlockCache current size " + StringUtils.byteDesc(currentSize)<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          + " has exceeded acceptable size " + StringUtils.byteDesc(currentAcceptableSize) + "."<a name="line.392"></a>
+<span class="sourceLineNo">393</span>          + " The hard limit size is " + StringUtils.byteDesc(hardLimitSize)<a name="line.393"></a>
+<span class="sourceLineNo">394</span>          + ", failed to put cacheKey:" + cacheKey + " into LruBlockCache.");<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      }<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      if (!evictionInProgress) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        runEviction();<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      }<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      return;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    cb = new LruCachedBlock(cacheKey, buf, count.incrementAndGet(), inMemory);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    long newSize = updateSizeMetrics(cb, false);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    map.put(cacheKey, cb);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    long val = elements.incrementAndGet();<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    if (buf.getBlockType().isData()) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>       dataBlockElements.increment();<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    if (LOG.isTraceEnabled()) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      long size = map.size();<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      assertCounterSanity(size, val);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    }<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    if (newSize &gt; currentAcceptableSize &amp;&amp; !evictionInProgress) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      runEviction();<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    }<a name="line.414"></a>
+<span class="sourceLineNo">415</span>  }<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>  /**<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   * Sanity-checking for parity between actual block cache content and metrics.<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * Intended only for use with TRACE level logging and -ea JVM.<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  private static void assertCounterSanity(long mapSize, long counterVal) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    if (counterVal &lt; 0) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      LOG.trace("counterVal overflow. Assertions unreliable. counterVal=" + counterVal +<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        ", mapSize=" + mapSize);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      return;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    if (mapSize &lt; Integer.MAX_VALUE) {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      double pct_diff = Math.abs((((double) counterVal) / ((double) mapSize)) - 1.);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      if (pct_diff &gt; 0.05) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>        LOG.trace("delta between reported and actual size &gt; 5%. counterVal=" + counterVal +<a name="line.430"></a>
+<span class="sourceLineNo">431</span>          ", mapSize=" + mapSize);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  /**<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * Cache the block with the specified name and buffer.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   * &lt;p&gt;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   *<a name="line.439"></a>
+<span class="sourceLineNo">440</span>   * @param cacheKey block's cache key<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   * @param buf      block buffer<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   */<a name="line.442"></a>
+<span class="sourceLineNo">443</span>  @Override<a name="line.443"></a>
+<span class="sourceLineNo">444</span>  public void cacheBlock(BlockCacheKey cacheKey, Cacheable buf) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    cacheBlock(cacheKey, buf, false);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  /**<a name="line.448"></a>
+<span class="sourceLineNo">449</span>   * Helper function that updates the local size counter and also updates any<a name="line.449"></a>
+<span class="sourceLineNo">450</span>   * per-cf or per-blocktype metrics it can discern from given<a name="line.450"></a>
+<span class="sourceLineNo">451</span>   * {@link LruCachedBlock}<a name="line.451"></a>
+<span class="sourceLineNo">452</span>   */<a name="line.452"></a>
+<span class="sourceLineNo">453</span>  private long updateSizeMetrics(LruCachedBlock cb, boolean evict) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    long heapsize = cb.heapSize();<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    BlockType bt = cb.getBuffer().getBlockType();<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    if (evict) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      heapsize *= -1;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    if (bt != null &amp;&amp; bt.isData()) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>       dataBlockSize.add(heapsize);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    }<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    return size.addAndGet(heapsize);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  }<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>  /**<a name="line.465"></a>
+<span class="sourceLineNo">466</span>   * Get the buffer of the block with the specified name.<a name="line.466"></a>
+<span class="sourceLineNo">467</span>   *<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * @param cacheKey           block's cache key<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   * @param caching            true if the caller caches blocks on cache misses<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   * @param repeat             Whether this is a repeat lookup for the same block<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   *                           (used to avoid double counting cache misses when doing double-check<a name="line.471"></a>
+<span class="sourceLineNo">472</span>   *                           locking)<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * @param updateCacheMetrics Whether to update cache metrics or not<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   *<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * @return buffer of specified cache key, or null if not in cache<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   */<a name="line.476"></a>
+<span class="sourceLineNo">477</span>  @Override<a name="line.477"></a>
+<span class="sourceLineNo">478</span>  public Cacheable getBlock(BlockCacheKey cacheKey, boolean caching, boolean repeat,<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      boolean updateCacheMetrics) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    if (cb == null) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      if (!repeat &amp;&amp; updateCacheMetrics) {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>        stats.miss(caching, cacheKey.isPrimary(), cacheKey.getBlockType());<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      }<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      // If there is another block cache then try and read there.<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      // However if this is a retry ( second time in double checked locking )<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      // And it's already a miss then the l2 will also be a miss.<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      if (victimHandler != null &amp;&amp; !repeat) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>        Cacheable result = victimHandler.getBlock(cacheKey, caching, repeat, updateCacheMetrics);<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>        // Promote this to L1.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>        if (result != null &amp;&amp; caching) {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>          if (result instanceof HFileBlock &amp;&amp; ((HFileBlock) result).usesSharedMemory()) {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>            result = ((HFileBlock) result).deepClone();<a name="line.494"></a>
+<span class="sourceLineNo">495</span>          }<a name="line.495"></a>
+<span class="sourceLineNo">496</span>          cacheBlock(cacheKey, result, /* inMemory = */ false);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>        }<a name="line.497"></a>
+<span class="sourceLineNo">498</span>        return result;<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      }<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      return null;<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    if (updateCacheMetrics) stats.hit(caching, cacheKey.isPrimary(), cacheKey.getBlockType());<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    cb.access(count.incrementAndGet());<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    return cb.getBuffer();<a name="line.504"></a>
+<span class="sourceLineNo">505</span>  }<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>  /**<a name="line.507"></a>
+<span class="sourceLineNo">508</span>   * Whether the cache contains block with specified cacheKey<a name="line.508"></a>
+<span class="sourceLineNo">509</span>   *<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * @return true if contains the block<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  public boolean containsBlock(BlockCacheKey cacheKey) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    return map.containsKey(cacheKey);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>  }<a name="line.514"></a>
+<span class="sourceLineNo">515</span><a name="line.515"></a>
+<span class="sourceLineNo">516</span>  @Override<a name="line.516"></a>
+<span class="sourceLineNo">517</span>  public boolean evictBlock(BlockCacheKey cacheKey) {<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    LruCachedBlock cb = map.get(cacheKey);<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    return cb != null &amp;&amp; evictBlock(cb, false) &gt; 0;<a name="line.519"></a>
+<span class="sourceLineNo">520</span>  }<a name="line.520"></a>
+<span class="sourceLineNo">521</span><a name="line.521"></a>
+<span class="sourceLineNo">522</span>  /**<a name="line.522"></a>
+<span class="sourceLineNo">523</span>   * Evicts all blocks for a specific HFile. This is an<a name="line.523"></a>
+<span class="sourceLineNo">524</span>   * expensive operation implemented as a linear-time search through all blocks<a name="line.524"></a>
+<span class="sourceLineNo">525</span>   * in the cache. Ideally this should be a search in a log-access-time map.<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   *<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * &lt;p&gt;<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * This is used for evict-on-close to remove all blocks of a specific HFile.<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   *<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   * @return the number of blocks evicted<a name="line.530"></a>
+<span class="sourceLineNo">531</span>   */<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  @Override<a name="line.532"></a>
+<span class="sourceLineNo">533</span>  public int evictBlocksByHfileName(String hfileName) {<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    int numEvicted = 0;<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    for (BlockCacheKey key : map.keySet()) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      if (key.getHfileName().equals(hfileName)) {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>        if (evictBlock(key))<a name="line.537"></a>
+<span class="sourceLineNo">538</span>          ++numEvicted;<a name="line.538"></a>
+<span class="sourceLineNo">539</span>      }<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    }<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    if (victimHandler != null) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      numEvicted += victimHandler.evictBlocksByHfileName(hfileName);<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    return numEvicted;<a name="line.544"></a>
+<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
+<span class="sourceLineNo">546</span><a name="line.546"></a>
+<span class="sourceLineNo">547</span>  /**<a name="line.547"></a>
+<span class="sourceLineNo">548</span>   * Evict the block, and it will be cached by the victim handler if exists &amp;amp;&amp;amp;<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * block may be read again later<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   *<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * @param evictedByEvictionProcess true if the given block is evicted by<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   *          EvictionThread<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   * @return the heap size of evicted block<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   */<a name="line.554"></a>
+<span class="sourceLineNo">555</span>  protected long evictBlock(LruCachedBlock block, boolean evictedByEvictionProcess) {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    boolean found = map.remove(block.getCacheKey()) != null;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    if (!found) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      return 0;<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    }<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    updateSizeMetrics(block, true);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    long val = elements.decrementAndGet();<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    if (LOG.isTraceEnabled()) {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      long size = map.size();<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      assertCounterSanity(size, val);<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    }<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    if (block.getBuffer().getBlockType().isData()) {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>       dataBlockElements.decrement();<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    }<a name="line.568"></a>
+<span class="sourceLineNo">569</span>    if (evictedByEvictionProcess) {<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      // When the eviction of the block happened because of invalidation of HFiles, no need to<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      // update the stats counter.<a name="line.571"></a>
+<span class="sourceLineNo">572</span>      stats.evicted(block.getCachedTime(), block.getCacheKey().isPrimary());<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      if (victimHandler != null) {<a name="line.573"></a>
+<span class="sourceLineNo">574</span>        victimHandler.cacheBlock(block.getCacheKey(), block.getBuffer());<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      }<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    }<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    return block.heapSize();<a name="line.577"></a>
+<span class="sourceLineNo">578</span>  }<a name="line.578"></a>
+<span class="sourceLineNo">579</span><a name="line.579"></a>
+<span class="sourceLineNo">580</span>  /**<a name="line.580"></a>
+<span class="sourceLineNo">581</span>   * Multi-threaded call to run the eviction process.<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   */<a name="line.582"></a>
+<span class="sourceLineNo">583</span>  private void runEviction() {<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    if (evictionThread == null) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      evict();<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    } else {<a name="line.586"></a>
+<span class="sourceLineNo">587</span>      evictionThread.evict();<a name="line.587"></a>
+<span class="sourceLineNo">588</span>    }<a name="line.588"></a>
+<span class="sourceLineNo">589</span>  }<a name="line.589"></a>
+<span class="sourceLineNo">590</span><a name="line.590"></a>
+<span class="sourceLineNo">591</span>  @VisibleForTesting<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  boolean isEvictionInProgress() {<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    return evictionInProgress;<a name="line.593"></a>
+<span class="sourceLineNo">594</span>  }<a name="line.594"></a>
+<span class="sourceLineNo">595</span><a name="line.595"></a>
+<span class="sourceLineNo">596</span>  @VisibleForTesting<a name="line.596"></a>
+<span class="sourceLineNo">597</span>  long getOverhead() {<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    return overhead;<a name="line.598"></a>
+<span class="sourceLineNo">599</span>  }<a name="line.599"></a>
+<span class="sourceLineNo">600</span><a name="line.600"></a>
+<span class="sourceLineNo">601</span>  /**<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   * Eviction method.<a name="line.602"></a>
+<span class="sourceLineNo">603</span>   */<a name="line.603"></a>
+<span class="sourceLineNo">604</span>  void evict() {<a name="line.604"></a>
+<span class="sourceLineNo">605</span><a name="line.605"></a>
+<span class="sourceLineNo">606</span>    // Ensure only one eviction at a time<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    if(!evictionLock.tryLock()) return;<a name="line.607"></a>
 <span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>  @VisibleForTesting<a name="line.609"></a>
-<span class="sourceLineNo">610</span>  long getOverhead() {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    return overhead;<a name="line.611"></a>
-<span class="sourceLineNo">612</span>  }<a name="line.612"></a>
+<span class="sourceLineNo">609</span>    try {<a name="line.609"></a>
+<span class="sourceLineNo">610</span>      evictionInProgress = true;<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      long currentSize = this.size.get();<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      long bytesToFree = currentSize - minSize();<a name="line.612"></a>
 <span class="sourceLineNo">613</span><a name="line.613"></a>
-<span class="sourceLineNo">614</span>  /**<a name="line.614"></a>
-<span class="sourceLineNo">615</span>   * Eviction method.<a name="line.615"></a>
-<span class="sourceLineNo">616</span>   */<a name="line.616"></a>
-<span class="sourceLineNo">617</span>  void evict() {<a name="line.617"></a>
-<span class="sourceLineNo">618</span><a name="line.618"></a>
-<span class="sourceLineNo">619</span>    // Ensure only one eviction at a time<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    if(!evictionLock.tryLock()) return;<a name="line.620"></a>
+<span class="sourceLineNo">614</span>      if (LOG.isTraceEnabled()) {<a name="line.614"></a>
+<span class="sourceLineNo">615</span>        LOG.trace("Block cache LRU eviction started; Attempting to free " +<a name="line.615"></a>
+<span class="sourceLineNo">616</span>          StringUtils.byteDesc(bytesToFree) + " of total=" +<a name="line.616"></a>
+<span class="sourceLineNo">617</span>          StringUtils.byteDesc(currentSize));<a name="line.617"></a>
+<span class="sourceLineNo">618</span>      }<a name="line.618"></a>
+<span class="sourceLineNo">619</span><a name="line.619"></a>
+<span class="sourceLineNo">620</span>      if (bytesToFree &lt;= 0) return;<a name="line.620"></a>
 <span class="sourceLineNo">621</span><a name="line.621"></a>
-<span class="sourceLineNo">622</span>    try {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      evictionInProgress = true;<a name="line.623"></a>
-<span class="sourceLineNo">624</span>      long currentSize = this.size.get();<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      long bytesToFree = currentSize - minSize();<a name="line.625"></a>
+<span class="sourceLineNo">622</span>      // Instantiate priority buckets<a name="line.622"></a>
+<span class="sourceLineNo">623</span>      BlockBucket bucketSingle = new BlockBucket("single", bytesToFree, blockSize, singleSize());<a name="line.623"></a>
+<span class="sourceLineNo">624</span>      BlockBucket bucketMulti = new BlockBucket("multi", bytesToFree, blockSize, multiSize());<a name="line.624"></a>
+<span class="sourceLineNo">625</span>      BlockBucket bucketMemory = new BlockBucket("memory", bytesToFree, blockSize, memorySize());<a name="line.625"></a>
 <span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span>      if (LOG.isTraceEnabled()) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>        LOG.trace("Block cache LRU eviction started; Attempting to free " +<a name="line.628"></a>
-<span class="sourceLineNo">629</span>          StringUtils.byteDesc(bytesToFree) + " of total=" +<a name="line.629"></a>
-<span class="sourceLineNo">630</span>          StringUtils.byteDesc(currentSize));<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      }<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span>      if (bytesToFree &lt;= 0) return;<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
-<span class="sourceLineNo">635</span>      // Instantiate priority buckets<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      BlockBucket bucketSingle = new BlockBucket("single", bytesToFree, blockSize, singleSize());<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      BlockBucket bucketMulti = new BlockBucket("multi", bytesToFree, blockSize, multiSize());<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      BlockBucket bucketMemory = new BlockBucket("memory", bytesToFree, blockSize, memorySize());<a name="line.638"></a>
-<span class="sourceLineNo">639</span><a name="line.639"></a>
-<span class="sourceLineNo">640</span>      // Scan entire map putting into appropriate buckets<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      for (LruCachedBlock cachedBlock : map.values()) {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>        switch (cachedBlock.getPriority()) {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>          case SINGLE: {<a name="line.643"></a>
-<span class="sourceLineNo">644</span>            bucketSingle.add(cachedBlock);<a name="line.644"></a>
-<span class="sourceLineNo">645</span>            break;<a name="line.645"></a>
-<span class="sourceLineNo">646</span>          }<a name="line.646"></a>
-<span class="sourceLineNo">647</span>          case MULTI: {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>            bucketMulti.add(cachedBlock);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>            break;<a name="line.649"></a>
-<span class="sourceLineNo">650</span>          }<a name="line.650"></a>
-<span class="sourceLineNo">651</span>          case MEMORY: {<a name="line.651"></a>
-<span class="sourceLineNo">652</span>            bucketMemory.add(cachedBlock);<a name="line.652"></a>
-<span class="sourceLineNo">653</span>            break;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>          }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>        }<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
-<span class="sourceLineNo">657</span><a name="line.657"></a>
-<span class="sourceLineNo">658</span>      long bytesFreed = 0;<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      if (forceInMemory || memoryFactor &gt; 0.999f) {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        long s = bucketSingle.totalSize();<a name="line.660"></a>
-<span class="sourceLineNo">661</span>        long m = bucketMulti.totalSize();<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        if (bytesToFree &gt; (s + m)) {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>          // this means we need to evict blocks in memory bucket to make room,<a name="line.663"></a>
-<span class="sourceLineNo">664</span>          // so the single and multi buckets will be emptied<a name="line.664"></a>
-<span class="sourceLineNo">665</span>          bytesFreed = bucketSingle.free(s);<a name="line.665"></a>
-<span class="sourceLineNo">666</span>          bytesFreed += bucketMulti.free(m);<a name="line.666"></a>
-<span class="sourceLineNo">667</span>          if (LOG.isTraceEnabled()) {<a name="line.667"></a>
-<span class="sourceLineNo">668</span>            LOG.trace("freed " + StringUtils.byteDesc(bytesFreed) +<a name="line.668"></a>
-<span class="sourceLineNo">669</span>              " from single and multi buckets");<a name="line.669"></a>
-<span class="sourceLineNo">670</span>          }<a name="line.670"></a>
-<span class="sourceLineNo">671</span>          bytesFreed += bucketMemory.free(bytesToFree - bytesFreed);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>          if (LOG.isTraceEnabled()) {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>            LOG.trace("freed " + StringUtils.byteDesc(bytesFreed) +<a name="line.673"></a>
-<span class="sourceLineNo">674</span>              " total from all three buckets ");<a name="line.674"></a>
-<span class="sourceLineNo">675</span>          }<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        } else {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>          // this means no need to evict block in memory bucket,<a name="line.677"></a>
-<span class="sourceLineNo">678</span>          // and we try best to make the ratio between single-bucket and<a name="line.678"></a>
-<span class="sourceLineNo">679</span>          // multi-bucket is 1:2<a name="line.679"></a>
-<span class="sourceLineNo">680</span>          long bytesRemain = s + m - bytesToFree;<a name="line.680"></a>
-<span class="sourceLineNo">681</span>          if (3 * s &lt;= bytesRemain) {<a name="line.681"></a>
-<span class="sourceLineNo">682</span>            // single-bucket is small enough that no eviction happens for it<a name="line.682"></a>
-<span class="sourceLineNo">683</span>            // hence all eviction goes from multi-bucket<a name="line.683"></a>
-<span class="sourceLineNo">684</span>            bytesFreed = bucketMulti.free(bytesToFree);<a name="line.684"></a>
-<span class="sourceLineNo">685</span>          } else if (3 * m &lt;= 2 * bytesRemain) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>            // multi-bucket is small enough that no eviction happens for it<a name="line.686"></a>
-<span class="sourceLineNo">687</span>            // hence all eviction goes from single-bucket<a name="line.687"></a>
-<span class="sourceLineNo">688</span>            bytesFreed = bucketSingle.free(bytesToFree);<a name="line.688"></a>
-<span class="sourceLineNo">689</span>          } else {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>            // both buckets need to evict some blocks<a name="line.690"></a>
-<span class="sourceLineNo">691</span>            bytesFreed = bucketSingle.free(s - bytesRemain / 3);<a name="line.691"></a>
-<span class="sourceLineNo">692</span>            if (bytesFreed &lt; bytesToFree) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>              bytesFreed += bucketMulti.free(bytesToFree - bytesFreed);<a name="line.693"></a>
-<span class="sourceLineNo">694</span>            }<a name="line.694"></a>
-<span class="sourceLineNo">695</span>          }<a name="line.695"></a>
-<span class="sourceLineNo">696</span>        }<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      } else {<a name="line.697"></a>
-<span class="sourceLineNo">698</span>        PriorityQueue&lt;BlockBucket&gt; bucketQueue = new PriorityQueue&lt;&gt;(3);<a name="line.698"></a>
-<span class="sourceLineNo">699</span><a name="line.699"></a>
-<span class="sourceLineNo">700</span>        bucketQueue.add(bucketSingle);<a name="line.700"></a>
-<span class="sourceLineNo">701</span>        bucketQueue.add(bucketMulti);<a name="line.701"></a>
-<span class="sourceLineNo">702</span>        bucketQueue.add(bucketMemory);<a name="line.702"></a>
-<span class="sourceLineNo">703</span><a name="line.703"></a>
-<span class="sourceLineNo">704</span>        int remainingBuckets = 3;<a name="line.704"></a>
-<span class="sourceLineNo">705</span><a name="line.705"></a>
-<span class="sourceLineNo">706</span>        BlockBucket bucket;<a name="line.706"></a>
-<span class="sourceLineNo">707</span>        while ((bucket = bucketQueue.poll()) != null) {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>          long overflow = bucket.overflow();<a name="line.708"></a>
-<span class="sourceLineNo">709</span>          if (overflow &gt; 0) {<a name="line.709"></a>
-<span class="sourceLineNo">710</span>            long bucketBytesToFree =<a name="line.710"></a>
-<span class="sourceLineNo">711</span>                Math.min(overflow, (bytesToFree - bytesFreed) / remainingBuckets);<a name="line.711"></a>
-<span class="sourceLineNo">712</span>            bytesFreed += bucket.free(bucketBytesToFree);<a name="line.712"></a>
-<span class="sourceLineNo">713</span>          }<a name="line.713"></a>
-<span class="sourceLineNo">714</span>          remainingBuckets--;<a name="line.714"></a>
-<span class="sourceLineNo">715</span>        }<a name="line.715"></a>
-<span class="sourceLineNo">716</span>      }<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      if (LOG.isTraceEnabled()) {<a name="line.717"></a>
-<span class="sourceLineNo">718</span>        long single = bucketSingle.totalSize();<a name="line.718"></a>
-<span class="sourceLineNo">719</span>        long multi = bucketMulti.totalSize();<a name="line.719"></a>
-<span class="sourceLineNo">720</span>        long memory = bucketMemory.totalSize();<a name="line.720"></a>
-<span class="sourceLineNo">721</span>        LOG.trace("Block cache LRU eviction completed; " +<a name="line.721"></a>
-<span class="sourceLineNo">722</span>          "freed=" + StringUtils.byteDesc(bytesFreed) + ", " +<a name="line.722"></a>
-<span class="sourceLineNo">723</span>          "total=" + StringUtils.byteDesc(this.size.get()) + ", " +<a name="line.723"></a>
-<span class="sourceLineNo">724</span>          "single=" + StringUtils.byteDesc(single) + ", " +<a name="line.724"></a>
-<span class="sourceLineNo">725</span>          "multi=" + StringUtils.byteDesc(multi) + ", " +<a name="line.725"></a>
-<span class="sourceLineNo">726</span>          "memory=" + StringUtils.byteDesc(memory));<a name="line.726"></a>
-<span class="sourceLineNo">727</span>      }<a name="line.727"></a>
-<span class="sourceLineNo">728</span>    } finally {<a name="line.728"></a>
-<span class="sourceLineNo">729</span>      stats.evict();<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      evictionInProgress = false;<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      evictionLock.unlock();<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    }<a name="line.732"></a>
-<span class="sourceLineNo">733</span>  }<a name="line.733"></a>
-<span class="sourceLineNo">734</span><a name="line.734"></a>
-<span class="sourceLineNo">735</span>  @Override<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  public String toString() {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    return MoreObjects.toStringHelper(this)<a name="line.737"></a>
-<span class="sourceLineNo">738</span>      .add("blockCount", getBlockCount())<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      .add("currentSize", StringUtils.byteDesc(getCurrentSize()))<a name="line.739"></a>
-<span class="sourceLineNo">740</span>      .add("freeSize", StringUtils.byteDesc(getFreeSize()))<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      .add("maxSize", StringUtils.byteDesc(getMaxSize()))<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      .add("heapSize", StringUtils.byteDesc(heapSize()))<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      .add("minSize", StringUtils.byteDesc(minSize()))<a name="line.743"></a>
-<span class="sourceLineNo">744</span>      .add("minFactor", minFactor)<a name="line.744"></a>
-<span class="sourceLineNo">745</span>      .add("multiSize", StringUtils.byteDesc(multiSize()))<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      .add("multiFactor", multiFactor)<a name="line.746"></a>
-<span class="sourceLineNo">747</span>      .add("singleSize", StringUtils.byteDesc(singleSize()))<a name="line.747"></a>
-<span class="sourceLineNo">748</span>      .add("singleFactor", singleFactor)<a name="line.748"></a>
-<span class="sourceLineNo">749</span>      .toString();<a name="line.749"></a>
-<span class="sourceLineNo">750</span>  }<a name="line.750"></a>
+<span class="sourceLineNo">627</span>      // Scan entire map putting into appropriate buckets<a name="line.627"></a>
+<span class="sourceLineNo">628</span>      for (LruCachedBlock cachedBlock : map.values()) {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>        switch (cachedBlock.getPriority()) {<a name="line.629"></a>
+<span class="sourceLineNo">630</span>          case SINGLE: {<a name="line.630"></a>
+<span class="sourceLineNo">631</span>            bucketSingle.add(cachedBlock);<a name="line.631"></a>
+<span class="sourceLineNo">632</span>            break;<a name="line.632"></a>
+<span class="sourceLineNo">633</span>          }<a name="line.633"></a>
+<span class="sourceLineNo">634</span>          case MULTI: {<a name="line.634"></a>
+<span class="sourceLineNo">635</span>            bucketMulti.add(cachedBlock);<a name="line.635"></a>
+<span class="sourceLineNo">636</span>            break;<a name="line.636"></a>
+<span class="sourceLineNo">637</span>          }<a name="line.637"></a>
+<span class="sourceLineNo">638</span>          case MEMORY: {<a name="line.638"></a>
+<span class="sourceLineNo">639</span>            bucketMemory.add(cachedBlock);<a name="line.639"></a>
+<span class="sourceLineNo">640</span>            break;<a name="line.640"></a>
+<span class="sourceLineNo">641</span>          }<a name="line.641"></a>
+<span class="sourceLineNo">642</span>        }<a name="line.642"></a>
+<span class="sourceLineNo">643</span>      }<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>      long bytesFreed = 0;<a name="line.645"></a>
+<span class="sourceLineNo">646</span>      if (forceInMemory || memoryFactor &gt; 0.999f) {<a name="line.646"></a>
+<span class="sourceLineNo">647</span>        long s = bucketSingle.totalSize();<a name="line.647"></a>
+<span class="sourceLineNo">648</span>        long m = bucketMulti.totalSize();<a name="line.648"></a>
+<span class="sourceLineNo">649</span>        if (bytesToFree &gt; (s + m)) {<a name="line.649"></a>
+<span class="sourceLineNo">650</span>          // this means we need to evict blocks in memory bucket to make room,<a name="line.650"></a>
+<span class="sourceLineNo">651</span>          // so the single and multi buckets will be emptied<a name="line.651"></a>
+<span class="sourceLineNo">652</span>          bytesFreed = bucketSingle.free(s);<a name="line.652"></a>
+<span class="sourceLineNo">653</span>          bytesFreed += bucketMulti.free(m);<a name="line.653"></a>
+<span class="sourceLineNo">654</span>          if (LOG.isTraceEnabled()) {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>            LOG.trace("freed " + StringUtils.byteDesc(bytesFreed) +<a name="line.655"></a>
+<span class="sourceLineNo">656</span>              " from single and multi buckets");<a name="line.656"></a>
+<span class="sourceLineNo">657</span>          }<a name="line.657"></a>
+<span class="sourceLineNo">658</span>          bytesFreed += bucketMemory.free(bytesToFree - bytesFreed);<a name="line.658"></a>
+<span class="sourceLineNo">659</span>          if (LOG.isTraceEnabled()) {<a name="line.659"></a>
+<span class="sourceLineNo">660</span>            LOG.trace("freed " + StringUtils.byteDesc(bytesFreed) +<a name="line.660"></a>
+<span class="sourceLineNo">661</span>              " total from all three buckets ");<a name="line.661"></a>
+<span class="sourceLineNo">662</span>          }<a name="line.662"></a>
+<span class="sourceLineNo">663</span>        } else {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>          // this means no need to evict block in memory bucket,<a name="line.664"></a>
+<span class="sourceLineNo">665</span>          // and we try best to make the ratio between single-bucket and<a name="line.665"></a>
+<span class="sourceLineNo">666</span>          // multi-bucket is 1:2<a name="line.666"></a>
+<span class="sourceLineNo">667</span>          long bytesRemain = s + m - bytesToFree;<a name="line.667"></a>
+<span class="sourceLineNo">668</span>          if (3 * s &lt;= bytesRemain) {<a name="line.668"></a>
+<span class="sourceLineNo">669</span>            // single-bucket is small enough that no eviction happens for it<a name="line.669"></a>
+<span class="sourceLineNo">670</span>            // hence all eviction goes from multi-bucket<a name="line.670"></a>
+<span class="sourceLineNo">671</span>            bytesFreed = bucketMulti.free(bytesToFree);<a name="line.671"></a>
+<span class="sourceLineNo">672</span>          } else if (3 * m &lt;= 2 * bytesRemain) {<a name="line.672"></a>
+<span class="sourceLineNo">673</span>            // multi-bucket is small enough that no eviction happens for it<a name="line.673"></a>
+<span class="sourceLineNo">674</span>            // hence all eviction goes from single-bucket<a name="line.674"></a>
+<span class="sourceLineNo">675</span>            bytesFreed = bucketSingle.free(bytesToFree);<a name="line.675"></a>
+<span class="sourceLineNo">676</span>          } else {<a name="line.676"></a>
+<span class="sourceLineNo">677</span>            // both buckets need to evict some blocks<a name="line.677"></a>
+<span class="sourceLineNo">678</span>            bytesFreed = bucketSingle.free(s - bytesRemain / 3);<a name="line.678"></a>
+<span class="sourceLineNo">679</span>            if (bytesFreed &lt; bytesToFree) {<a name="line.679"></a>
+<span class="sourceLineNo">680</span>              bytesFreed += bucketMulti.free(bytesToFree - bytesFreed);<a name="line.680"></a>
+<span class="sourceLineNo">681</span>            }<a name="line.681"></a>
+<span class="sourceLineNo">682</span>          }<a name="line.682"></a>
+<span class="sourceLineNo">683</span>        }<a name="line.683"></a>
+<span class="sourceLineNo">684</span>      } else {<a name="line.684"></a>
+<span class="sourceLineNo">685</span>        PriorityQueue&lt;BlockBucket&gt; bucketQueue = new PriorityQueue&lt;&gt;(3);<a name="line.685"></a>
+<span class="sourceLineNo">686</span><a name="line.686"></a>
+<span class="sourceLineNo">687</span>        bucketQueue.add(bucketSingle);<a name="line.687"></a>
+<span class="sourceLineNo">688</span>        bucketQueue.add(bucketMulti);<a name="line.688"></a>
+<span class="sourceLineNo">689</span>        bucketQueue.add(bucketMemory);<a name="line.689"></a>
+<span class="sourceLineNo">690</span><a name="line.690"></a>
+<span class="sourceLineNo">691</span>        int remainingBuckets = 3;<a name="line.691"></a>
+<span class="sourceLineNo">692</span><a name="line.692"></a>
+<span class="sourceLineNo">693</span>        BlockBucket bucket;<a name="line.693"></a>
+<span class="sourceLineNo">694</span>        while ((bucket = bucketQueue.poll()) != null) {<a name="line.694"></a>
+<span class="sourceLineNo">695</span>          long overflow = bucket.overflow();<a name="line.695"></a>
+<span class="sourceLineNo">696</span>          if (overflow &gt; 0) {<a name="line.696"></a>
+<span class="sourceLineNo">697</span>            long bucketBytesToFree =<a name="line.697"></a>
+<span class="sourceLineNo">698</span>                Math.min(overflow, (bytesToFree - bytesFreed) / remainingBuckets);<a name="line.698"></a>
+<span class="sourceLineNo">699</span>            bytesFreed += bucket.free(bucketBytesToFree);<a name="line.699"></a>
+<span class="sourceLineNo">700</span>          }<a name="line.700"></a>
+<span class="sourceLineNo">701</span>          remainingBuckets--;<a name="line.701"></a>
+<span class="sourceLineNo">702</span>        }<a name="line.702"></a>
+<span class="sourceLineNo">703</span>      }<a name="line.703"></a>
+<span class="sourceLineNo">704</span>      if (LOG.isTraceEnabled()) {<a name="line.704"></a>
+<span class="sourceLineNo">705</span>        long single = bucketSingle.totalSize();<a name="line.705"></a>
+<span class="sourceLineNo">706</span>        long multi = bucketMulti.totalSize();<a name="line.706"></a>
+<span class="sourceLineNo">707</span>        long memory = bucketMemory.totalSize();<a name="line.707"></a>
+<span class="sourceLineNo">708</span>        LOG.trace("Block cache LRU eviction completed; " +<a name="line.708"></a>
+<span class="sourceLineNo">709</span>          "freed=" + StringUtils.byteDesc(bytesFreed) + ", " +<a name="line.709"></a>
+<span class="sourceLineNo">710</span>          "total=" + StringUtils.byteDesc(this.size.get()) + ", " +<a name="line.710"></a>
+<span class="sourceLineNo">711</span>          "single=" + StringUtils.byteDesc(single) + ", " +<a name="line.711"></a>
+<span class="sourceLineNo">712</span>          "multi=" + StringUtils.byteDesc(multi) + ", " +<a name="line.712"></a>
+<span class="sourceLineNo">713</span>          "memory=" + StringUtils.byteDesc(memory));<a name="line.713"></a>
+<span class="sourceLineNo">714</span>      }<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    } finally {<a name="line.715"></a>
+<span class="sourceLineNo">716</span>      stats.evict();<a name="line.716"></a>
+<span class="sourceLineNo">717</span>      evictionInProgress = false;<a name="line.717"></a>
+<span class="sourceLineNo">718</span>      evictionLock.unlock();<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    }<a name="line.719"></a>
+<span class="sourceLineNo">720</span>  }<a name="line.720"></a>
+<span class="sourceLineNo">721</span><a name="line.721"></a>
+<span class="sourceLineNo">722</span>  @Override<a name="line.722"></a>
+<span class="sourceLineNo">723</span>  public String toString() {<a name="line.723"></a>
+<span class="sourceLineNo">724</span>    return MoreObjects.toStringHelper(this)<a name="line.724"></a>
+<span class="sourceLineNo">725</span>      .add("blockCount", getBlockCount())<a name="line.725"></a>
+<span class="sourceLineNo">726</span>      .add("currentSize", StringUtils.byteDesc(getCurrentSize()))<a name="line.726"></a>
+<span class="sourceLineNo">727</span>      .add("freeSize", StringUtils.byteDesc(getFreeSize()))<a name="line.727"></a>
+<span class="sourceLineNo">728</span>      .add("maxSize", StringUtils.byteDesc(getMaxSize()))<a name="line.728"></a>
+<span class="sourceLineNo">729</span>      .add("heapSize", StringUtils.byteDesc(heapSize()))<a name="line.729"></a>
+<span class="sourceLineNo">730</span>      .add("minSize", StringUtils.byteDesc(minSize()))<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      .add("minFactor", minFactor)<a name="line.731"></a>
+<span class="sourceLineNo">732</span>      .add("multiSize", StringUtils.byteDesc(multiSize()))<a name="line.732"></a>
+<span class="sourceLineNo">733</span>      .add("multiFactor", multiFactor)<a name="line.733"></a>
+<span class="sourceLineNo">734</span>      .add("singleSize", StringUtils.byteDesc(singleSize()))<a name="line.734"></a>
+<span class="sourceLineNo">735</span>      .add("singleFactor", singleFactor)<a name="line.735"></a>
+<span class="sourceLineNo">736</span>      .toString();<a name="line.736"></a>
+<span class="sourceLineNo">737</span>  }<a name="line.737"></a>
+<span class="sourceLineNo">738</span><a name="line.738"></a>
+<span class="sourceLineNo">739</span>  /**<a name="line.739"></a>
+<span class="sourceLineNo">740</span>   * Used to group blocks into priority buckets.  There will be a BlockBucket<a name="line.740"></a>
+<span class="sourceLineNo">741</span>   * for each priority (single, multi, memory).  Once bucketed, the eviction<a name="line.741"></a>
+<span class="sourceLineNo">742</span>   * algorithm takes the appropriate number of elements out of each according<a name="line.742"></a>
+<span class="sourceLineNo">743</span>   * to configuration parameters and their relatives sizes.<a name="line.743"></a>
+<span class="sourceLineNo">744</span>   */<a name="line.744"></a>
+<span class="sourceLineNo">745</span>  private class BlockBucket implements Comparable&lt;BlockBucket&gt; {<a name="line.745"></a>
+<span class="sourceLineNo">746</span><a name="line.746"></a>
+<span class="sourceLineNo">747</span>    private final String name;<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    private LruCachedBlockQueue queue;<a name="line.748"></a>
+<span class="sourceLineNo">749</span>    private long totalSize = 0;<a name="line.749"></a>
+<span class="sourceLineNo">750</span>    private long bucketSize;<a name="line.750"></a>
 <span class="sourceLineNo">751</span><a name="line.751"></a>
-<span class="sourceLineNo">752</span>  /**<a name="line.752"></a>
-<span class="sourceLineNo">753</span>   * Used to group blocks into priority buckets.  There will be a BlockBucket<a name="line.753"></a>
-<span class="sourceLineNo">754</span>   * for each priority (single, multi, memory).  Once bucketed, the eviction<a name="line.754"></a>
-<span class="sourceLineNo">755</span>   * algorithm takes the appropriate number of elements out of each according<a name="line.755"></a>
-<span class="sourceLineNo">756</span>   * to configuration parameters and their relatives sizes.<a name="line.756"></a>
-<span class="sourceLineNo">757</span>   */<a name="line.757"></a>
-<span class="sourceLineNo">758</span>  private class BlockBucket implements Comparable&lt;BlockBucket&gt; {<a name="line.758"></a>
-<span class="sourceLineNo">759</span><a name="line.759"></a>
-<span class="sourceLineNo">760</span>    private final String name;<a name="line.760"></a>
-<span class="sourceLineNo">761</span>    private LruCachedBlockQueue queue;<a name="line.761"></a>
-<span class="sourceLineNo">762</span>    private long totalSize = 0;<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    private long bucketSize;<a name="line.763"></a>
-<span class="sourceLineNo">764</span><a name="line.764"></a>
-<span class="sourceLineNo">765</span>    public BlockBucket(String name, long bytesToFree, long blockSize, long bucketSize) {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      this.name = name;<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      this.bucketSize = bucketSize;<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      queue = new LruCachedBlockQueue(bytesToFree, blockSize);<a name="line.768"></a>
-<span class="sourceLineNo">769</span>      totalSize = 0;<a name="line.769"></a>
-<span class="sourceLineNo">770</span>    }<a name="line.770"></a>
-<span class="sourceLineNo">771</span><a name="line.771"></a>
-<span class="sourceLineNo">772</span>    public void add(LruCachedBlock block) {<a name="line.772"></a>
-<span class="sourceLineNo">773</span>      totalSize += block.heapSize();<a name="line.773"></a>
-<span class="sourceLineNo">774</span>      queue.add(block);<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    }<a name="line.775"></a>
-<span class="sourceLineNo">776</span><a name="line.776"></a>
-<span class="sourceLineNo">777</span>    public long free(long toFree) {<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      if (LOG.isTraceEnabled()) {<a name="line.778"></a>
-<span class="sourceLineNo">779</span>        LOG.trace("freeing " + StringUtils.byteDesc(toFree) + " from " + this);<a name="line.779"></a>
-<span class="sourceLineNo">780</span>      }<a name="line.780"></a>
-<span class="sourceLineNo">781</span>      LruCachedBlock cb;<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      long freedBytes = 0;<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      while ((cb = queue.pollLast()) != null) {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>        freedBytes += evictBlock(cb, true);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>        if (freedBytes &gt;= toFree) {<a name="line.785"></a>
-<span class="sourceLineNo">786</span>          return freedBytes;<a name="line.786"></a>
-<span class="sourceLineNo">787</span>        }<a name="line.787"></a>
-<span class="sourceLineNo">788</span>      }<a name="line.788"></a>
-<span class="sourceLineNo">789</span>      if (LOG.isTraceEnabled()) {<a name="line.789"></a>
-<span class="sourceLineNo">790</span>        LOG.trace("freed " + StringUtils.byteDesc(freedBytes) + " from " + this);<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      }<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      return freedBytes;<a name="line.792"></a>
+<span class="sourceLineNo">752</span>    public BlockBucket(String name, long bytesToFree, long blockSize, long bucketSize) {<a name="line.752"></a>
+<span class="sourceLineNo">753</span>      this.name = name;<a name="line.753"></a>
+<span class="sourceLineNo">754</span>      this.bucketSize = bucketSize;<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      queue = new LruCachedBlockQueue(bytesToFree, blockSize);<a name="line.755"></a>
+<span class="sourceLineNo">756</span>      totalSize = 0;<a name="line.756"></a>
+<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
+<span class="sourceLineNo">758</span><a name="line.758"></a>
+<span class="sourceLineNo">759</span>    public void add(LruCachedBlock block) {<a name="line.759"></a>
+<span class="sourceLineNo">760</span>      totalSize += block.heapSize();<a name="line.760"></a>
+<span class="sourceLineNo">761</span>      queue.add(block);<a name="line.761"></a>
+<span class="sourceLineNo">762</span>    }<a name="line.762"></a>
+<span class="sourceLineNo">763</span><a name="line.763"></a>
+<span class="sourceLineNo">764</span>    public long free(long toFree) {<a name="line.764"></a>
+<span class="sourceLineNo">765</span>      if (LOG.isTraceEnabled()) {<a name="line.765"></a>
+<span class="sourceLineNo">766</span>        LOG.trace("freeing " + StringUtils.byteDesc(toFree) + " from " + this);<a name="line.766"></a>
+<span class="sourceLineNo">767</span>      }<a name="line.767"></a>
+<span class="sourceLineNo">768</span>      LruCachedBlock cb;<a name="line.768"></a>
+<span class="sourceLineNo">769</span>      long freedBytes = 0;<a name="line.769"></a>
+<span class="sourceLineNo">770</span>      while ((cb = queue.pollLast()) != null) {<a name="line.770"></a>
+<span class="sourceLineNo">771</span>        freedBytes += evictBlock(cb, true);<a name="line.771"></a>
+<span class="sourceLineNo">772</span>        if (freedBytes &gt;= toFree) {<a name="line.772"></a>
+<span class="sourceLineNo">773</span>          return freedBytes;<a name="line.773"></a>
+<span class="sourceLineNo">774</span>        }<a name="line.774"></a>
+<span class="sourceLineNo">775</span>      }<a name="line.775"></a>
+<span class="sourceLineNo">776</span>      if (LOG.isTraceEnabled()) {<a name="line.776"></a>
+<span class="sourceLineNo">777</span>        LOG.trace("freed " + StringUtils.byteDesc(freedBytes) + " from " + this);<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      }<a name="line.778"></a>
+<span class="sourceLineNo">779</span>      return freedBytes;<a name="line.779"></a>
+<span class="sourceLineNo">780</span>    }<a name="line.780"></a>
+<span class="sourceLineNo">781</span><a name="line.781"></a>
+<span class="sourceLineNo">782</span>    public long overflow() {<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      return totalSize - bucketSize;<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    }<a name="line.784"></a>
+<span class="sourceLineNo">785</span><a name="line.785"></a>
+<span class="sourceLineNo">786</span>    public long totalSize() {<a name="line.786"></a>
+<span class="sourceLineNo">787</span>      return totalSize;<a name="line.787"></a>
+<span class="sourceLineNo">788</span>    }<a name="line.788"></a>
+<span class="sourceLineNo">789</span><a name="line.789"></a>
+<span class="sourceLineNo">790</span>    @Override<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    public int compareTo(BlockBucket that) {<a name="line.791"></a>
+<span class="sourceLineNo">792</span>      return Long.compare(this.overflow(), that.overflow());<a name="line.792"></a>
 <span class="sourceLineNo">793</span>    }<a name="line.793"></a>
 <span class="sourceLineNo">794</span><a name="line.794"></a>
-<span class="sourceLineNo">795</span>    public long overflow() {<a name="line.795"></a>
-<span class="sourceLineNo">796</span>      return totalSize - bucketSize;<a name="line.796"></a>
-<span class="sourceLineNo">797</span>    }<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span>    public long totalSize() {<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      return totalSize;<a name="line.800"></a>
+<span class="sourceLineNo">795</span>    @Override<a name="line.795"></a>
+<span class="sourceLineNo">796</span>    public boolean equals(Object that) {<a name="line.796"></a>
+<span class="sourceLineNo">797</span>      if (that == null || !(that instanceof BlockBucket)) {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>        return false;<a name="line.798"></a>
+<span class="sourceLineNo">799</span>      }<a name="line.799"></a>
+<span class="sourceLineNo">800</span>      return compareTo((BlockBucket)that) == 0;<a name="line.800"></a>
 <span class="sourceLineNo">801</span>    }<a name="line.801"></a>
 <span class="sourceLineNo">802</span><a name="line.802"></a>
 <span class="sourceLineNo">803</span>    @Override<a name="line.803"></a>
-<span class="sourceLineNo">804</span>    public int compareTo(BlockBucket that) {<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      return Long.compare(this.overflow(), that.overflow());<a name="line.805"></a>
+<span class="sourceLineNo">804</span>    public int hashCode() {<a name="line.804"></a>
+<span class="sourceLineNo">805</span>      return Objects.hashCode(name, bucketSize, queue, totalSize);<a name="line.805"></a>
 <span class="sourceLineNo">806</span>    }<a name="line.806"></a>
 <span class="sourceLineNo">807</span><a name="line.807"></a>
 <span class="sourceLineNo">808</span>    @Override<a name="line.808"></a>
-<span class="sourceLineNo">809</span>    public boolean equals(Object that) {<a name="line.809"></a>
-<span class="sourceLineNo">810</span>      if (that == null || !(that instanceof BlockBucket)) {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>        return false;<a name="line.811"></a>
-<span class="sourceLineNo">812</span>      }<a name="line.812"></a>
-<span class="sourceLineNo">813</span>      return compareTo((BlockBucket)that) == 0;<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    }<a name="line.814"></a>
-<span class="sourceLineNo">815</span><a name="line.815"></a>
-<span class="sourceLineNo">816</span>    @Override<a name="line.816"></a>
-<span class="sourceLineNo">817</span>    public int hashCode() {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      return Objects.hashCode(name, bucketSize, queue, totalSize);<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    }<a name="line.819"></a>
-<span class="sourceLineNo">820</span><a name="line.820"></a>
-<span class="sourceLineNo">821</span>    @Override<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    public String toString() {<a name="line.822"></a>
-<span class="sourceLineNo">823</span>      return MoreObjects.toStringHelper(this)<a name="line.823"></a>
-<span class="sourceLineNo">824</span>        .add("name", name)<a name="line.824"></a>
-<span class="sourceLineNo">825</span>        .add("totalSize", StringUtils.byteDesc(totalSize))<a name="line.825"></a>
-<span class="sourceLineNo">826</span>        .add("bucketSize", StringUtils.byteDesc(bucketSize))<a name="line.826"></a>
-<span class="sourceLineNo">827</span>        .toString();<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    }<a name="line.828"></a>
-<span class="sourceLineNo">829</span>  }<a name="line.829"></a>
-<span class="sourceLineNo">830</span><a name="line.830"></a>
-<span class="sourceLineNo">831</span>  /**<a name="line.831"></a>
-<span class="sourceLineNo">832</span>   * Get the maximum size of this cache.<a name="line.832"></a>
-<span class="sourceLineNo">833</span>   *<a name="line.833"></a>
-<span class="sourceLineNo">834</span>   * @return max size in bytes<a name="line.834"></a>
-<span class="sourceLineNo">835</span>   */<a name="line.835"></a>
-<span class="sourceLineNo">836</span><a name="line.836"></a>
-<span class="sourceLineNo">837</span>  @Override<a name="line.837"></a>
-<span class="sourceLineNo">838</span>  public long getMaxSize() {<a name="line.838"></a>
-<span class="sourceLineNo">839</span>    return this.maxSize;<a name="line.839"></a>
-<span class="sourceLineNo">840</span>  }<a name="line.840"></a>
-<span class="sourceLineNo">841</span><a name="line.841"></a>
-<span class="sourceLineNo">842</span>  @Override<a name="line.842"></a>
-<span class="sourceLineNo">843</span>  public long getCurrentSize() {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>    return this.size.get();<a name="line.844"></a>
-<span class="sourceLineNo">845</span>  }<a name="line.845"></a>
-<span class="sourceLineNo">846</span><a name="line.846"></a>
-<span class="sourceLineNo">847</span>  @Override<a name="line.847"></a>
-<span class="sourceLineNo">848</span>  public long getCurrentDataSize() {<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    return this.dataBlockSize.sum();<a name="line.849"></a>
-<span class="sourceLineNo">850</span>  }<a name="line.850"></a>
-<span class="sourceLineNo">851</span><a name="line.851"></a>
-<span class="sourceLineNo">852</span>  @Override<a name="line.852"></a>
-<span class="sourceLineNo">853</span>  public long getFreeSize() {<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    return getMaxSize() - getCurrentSize();<a name="line.854"></a>
-<span class="sourceLineNo">855</span>  }<a name="line.855"></a>
-<span class="sourceLineNo">856</span><a name="line.856"></a>
-<span class="sourceLineNo">857</span>  @Override<a name="line.857"></a>
-<span class="sourceLineNo">858</span>  public long size() {<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    return getMaxSize();<a name="line.859"></a>
-<span class="sourceLineNo">860</span>  }<a name="line.860"></a>
-<span class="sourceLineNo">861</span><a name="line.861"></a>
-<span class="sourceLineNo">862</span>  @Override<a name="line.862"></a>
-<span class="sourceLineNo">863</span>  public long getBlockCount() {<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    return this.elements.get();<a name="line.864"></a>
-<span class="sourceLineNo">865</span>  }<a name="line.865"></a>
-<span class="sourceLineNo">866</span><a name="line.866"></a>
-<span class="sourceLineNo">867</span>  @Override<a name="line.867"></a>
-<span class="sourceLineNo">868</span>  public long getDataBlockCount() {<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    return this.dataBlockElements.sum();<a name="line.869"></a>
-<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
-<span class="sourceLineNo">871</span><a name="line.871"></a>
-<span class="sourceLineNo">872</span>  EvictionThread getEvictionThread() {<a name="line.872"></a>
-<span class="sourceLineNo">873</span>    return this.evictionThread;<a name="line.873"></a>
-<span class="sourceLineNo">874</span>  }<a name="line.874"></a>
+<span class="sourceLineNo">809</span>    public String toString() {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>      return MoreObjects.toStringHelper(this)<a name="line.810"></a>
+<span class="sourceLineNo">811</span>        .add("name", name)<a name="line.811"></a>
+<span class="sourceLineNo">812</span>        .add("totalSize", StringUtils.byteDesc(totalSize))<a name="line.812"></a>
+<span class="sourceLineNo">813</span>        .add("bucketSize", StringUtils.byteDesc(bucketSize))<a name="line.813"></a>
+<span class="sourceLineNo">814</span>        .toString();<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    }<a name="line.815"></a>
+<span class="sourceLineNo">816</span>  }<a name="line.816"></a>
+<span class="sourceLineNo">817</span><a name="line.817"></a>
+<span class="sourceLineNo">818</span>  /**<a name="line.818"></a>
+<span class="sourceLineNo">819</span>   * Get the maximum size of this cache.<a name="line.819"></a>
+<span class="sourceLineNo">820</span>   *<a name="line.820"></a>
+<span class="sourceLineNo">821</span>   * @return max size in bytes<a name="line.821"></a>
+<span class="sourceLineNo">822</span>   */<a name="line.822"></a>
+<span class="sourceLineNo">823</span><a name="line.823"></a>
+<span class="sourceLineNo">824</span>  @Override<a name="line.824"></a>
+<span class="sourceLineNo">825</span>  public long getMaxSize() {<a name="line.825"></a>
+<span class="sourceLineNo">826</span>    return this.maxSize;<a name="line.826"></a>
+<span class="sourceLineNo">827</span>  }<a name="line.827"></a>
+<span class="sourceLineNo">828</span><a name="line.828"></a>
+<span class="sourceLineNo">829</span>  @Override<a name="line.829"></a>
+<span class="sourceLineNo">830</span>  public long getCurrentSize() {<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    return this.size.get();<a name="line.831"></a>
+<span class="sourceLineNo">832</span>  }<a name="line.832"></a>
+<span class="sourceLineNo">833</span><a name="line.833"></a>
+<span class="sourceLineNo">834</span>  @Override<a name="line.834"></a>
+<span class="sourceLineNo">835</span>  public long getCurrentDataSize() {<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    return this.dataBlockSize.sum();<a name="line.836"></a>
+<span class="sourceLineNo">837</span>  }<a name="line.837"></a>
+<span class="sourceLineNo">838</span><a name="line.838"></a>
+<span class="sourceLineNo">839</span>  @Override<a name="line.839"></a>
+<span class="sourceLineNo">840</span>  public long getFreeSize() {<a name="line.840"></a>
+<span class="sourceLineNo">841</span>    return getMaxSize() - getCurrentSize();<a name="line.841"></a>
+<span class="sourceLineNo">842</span>  }<a name="line.842"></a>
+<span class="sourceLineNo">843</span><a name="line.843"></a>
+<span class="sourceL

<TRUNCATED>

[13/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler.html
index 05e032c..40ef9f4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslClientCallbackHandler.html
@@ -25,767 +25,805 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.io.asyncfs;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.21"></a>
 <span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import com.google.protobuf.CodedOutputStream;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.io.IOException;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.lang.reflect.Field;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.lang.reflect.InvocationTargetException;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.lang.reflect.Method;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.net.InetAddress;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import java.net.InetSocketAddress;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import java.nio.ByteBuffer;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import java.security.GeneralSecurityException;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import java.util.Arrays;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import java.util.Collections;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import java.util.List;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import java.util.Map;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import java.util.Set;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import java.util.concurrent.TimeUnit;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>import javax.security.auth.callback.Callback;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import javax.security.auth.callback.CallbackHandler;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import javax.security.auth.callback.NameCallback;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import javax.security.auth.callback.PasswordCallback;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import javax.security.sasl.RealmCallback;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import javax.security.sasl.Sasl;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import javax.security.sasl.SaslClient;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import javax.security.sasl.SaslException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.commons.codec.binary.Base64;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.commons.lang3.StringUtils;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.conf.Configuration;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.slf4j.Logger;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.slf4j.LoggerFactory;<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>import com.google.protobuf.ByteString;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.security.token.Token;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>/**<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> */<a name="line.108"></a>
-<span class="sourceLineNo">109</span>@InterfaceAudience.Private<a name="line.109"></a>
-<span class="sourceLineNo">110</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private static final Logger LOG =<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.112"></a>
+<span class="sourceLineNo">023</span>import com.google.protobuf.ByteString;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import com.google.protobuf.CodedOutputStream;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.lang.reflect.Field;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.lang.reflect.InvocationTargetException;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.lang.reflect.Method;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.InetAddress;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.net.InetSocketAddress;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.nio.ByteBuffer;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.security.GeneralSecurityException;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Arrays;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Collections;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.List;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Map;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Set;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.concurrent.TimeUnit;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import javax.security.auth.callback.Callback;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import javax.security.auth.callback.CallbackHandler;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import javax.security.auth.callback.NameCallback;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import javax.security.auth.callback.PasswordCallback;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import javax.security.sasl.RealmCallback;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import javax.security.sasl.Sasl;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import javax.security.sasl.SaslClient;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import javax.security.sasl.SaslException;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.commons.codec.binary.Base64;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.commons.lang3.StringUtils;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.crypto.key.KeyProvider;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.security.token.Token;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.slf4j.Logger;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.LoggerFactory;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>/**<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.104"></a>
+<span class="sourceLineNo">105</span> */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>@InterfaceAudience.Private<a name="line.106"></a>
+<span class="sourceLineNo">107</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private static final Logger LOG =<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private static final String SERVER_NAME = "0";<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  private static final String PROTOCOL = "hdfs";<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  private static final String NAME_DELIMITER = " ";<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  private interface SaslAdaptor {<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.127"></a>
+<span class="sourceLineNo">114</span>  private static final String SERVER_NAME = "0";<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final String PROTOCOL = "hdfs";<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private static final String NAME_DELIMITER = " ";<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  private interface SaslAdaptor {<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
 <span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.132"></a>
+<span class="sourceLineNo">129</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  // helper class for convert protos.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private interface PBHelper {<a name="line.132"></a>
 <span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  // helper class for convert protos.<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  private interface PBHelper {<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.137"></a>
+<span class="sourceLineNo">134</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
 <span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final PBHelper PB_HELPER;<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private interface TransparentCryptoHelper {<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        throws IOException;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    Field saslPropsResolverField =<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    saslPropsResolverField.setAccessible(true);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    Field trustedChannelResolverField =<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    trustedChannelResolverField.setAccessible(true);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Field fallbackToSimpleAuthField =<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return new SaslAdaptor() {<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>      @Override<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        try {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        } catch (IllegalAccessException e) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>          throw new RuntimeException(e);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        }<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        try {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        } catch (IllegalAccessException e) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          throw new RuntimeException(e);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      }<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>      @Override<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        try {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (IllegalAccessException e) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          throw new RuntimeException(e);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    };<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    Class&lt;?&gt; helperClass;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    try {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } catch (ClassNotFoundException e) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    Method convertCipherOptionProtosMethod =<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    return new PBHelper() {<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>      @SuppressWarnings("unchecked")<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      @Override<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        try {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          throw new RuntimeException(e);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>      @SuppressWarnings("unchecked")<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      @Override<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        try {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>          throw new RuntimeException(e);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      }<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    };<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      throws NoSuchMethodException {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    return new TransparentCryptoHelper() {<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>      @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          DFSClient client) throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        try {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          KeyVersion decryptedKey =<a name="line.240"></a>
-<span class="sourceLineNo">241</span>              (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          return encryptor;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        } catch (InvocationTargetException e) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          throw new RuntimeException(e.getTargetException());<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        } catch (GeneralSecurityException e) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          throw new IOException(e);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        } catch (IllegalAccessException e) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          throw new RuntimeException(e);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      }<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    };<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  static {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    try {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      PB_HELPER = createPBHelper();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    } catch (Exception e) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          + "HBASE-16110 for more information.";<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      LOG.error(msg, e);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      throw new Error(msg, e);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>  /**<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    private final char[] password;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    private final String userName;<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>     * Creates a new SaslClientCallbackHandler.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>     * @param userName SASL user name<a name="line.282"></a>
-<span class="sourceLineNo">283</span>     * @Param password SASL password<a name="line.283"></a>
-<span class="sourceLineNo">284</span>     */<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      this.password = password;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      this.userName = userName;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    @Override<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      NameCallback nc = null;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      PasswordCallback pc = null;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      RealmCallback rc = null;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      for (Callback callback : callbacks) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          continue;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        } else if (callback instanceof NameCallback) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          nc = (NameCallback) callback;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        } else if (callback instanceof PasswordCallback) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>          pc = (PasswordCallback) callback;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        } else if (callback instanceof RealmCallback) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          rc = (RealmCallback) callback;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        } else {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      if (nc != null) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        nc.setName(userName);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      if (pc != null) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        pc.setPassword(password);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      if (rc != null) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        rc.setText(rc.getDefaultText());<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private final Configuration conf;<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    private final SaslClient saslClient;<a name="line.326"></a>
+<span class="sourceLineNo">139</span>  private static final PBHelper PB_HELPER;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  private interface TransparentCryptoHelper {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        throws IOException;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    Field saslPropsResolverField =<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    saslPropsResolverField.setAccessible(true);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    Field trustedChannelResolverField =<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    trustedChannelResolverField.setAccessible(true);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Field fallbackToSimpleAuthField =<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return new SaslAdaptor() {<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>      @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        try {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        } catch (IllegalAccessException e) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          throw new RuntimeException(e);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>      @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        try {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        } catch (IllegalAccessException e) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          throw new RuntimeException(e);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      }<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>      @Override<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        } catch (IllegalAccessException e) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          throw new RuntimeException(e);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    Class&lt;?&gt; helperClass;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    try {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    } catch (ClassNotFoundException e) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Method convertCipherOptionProtosMethod =<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    return new PBHelper() {<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>      @SuppressWarnings("unchecked")<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      @Override<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        try {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          throw new RuntimeException(e);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        }<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      }<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>      @SuppressWarnings("unchecked")<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          throw new RuntimeException(e);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    };<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  private static TransparentCryptoHelper createTransparentCryptoHelper27()<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      throws NoSuchMethodException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    return new TransparentCryptoHelper() {<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          DFSClient client) throws IOException {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          KeyVersion decryptedKey =<a name="line.237"></a>
+<span class="sourceLineNo">238</span>            (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          return encryptor;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        } catch (InvocationTargetException e) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          throw new RuntimeException(e.getTargetException());<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        } catch (GeneralSecurityException e) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          throw new IOException(e);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        } catch (IllegalAccessException e) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          throw new RuntimeException(e);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    };<a name="line.252"></a>
+<span class="sourceLineNo">253</span>  }<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>  private static TransparentCryptoHelper createTransparentCryptoHelper28()<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      throws ClassNotFoundException, NoSuchMethodException {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Class&lt;?&gt; hdfsKMSUtilCls = Class.forName("org.apache.hadoop.hdfs.HdfsKMSUtil");<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Method decryptEncryptedDataEncryptionKeyMethod = hdfsKMSUtilCls.getDeclaredMethod(<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      "decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class, KeyProvider.class);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    return new TransparentCryptoHelper() {<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>      @Override<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          DFSClient client) throws IOException {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        try {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          KeyVersion decryptedKey = (KeyVersion) decryptEncryptedDataEncryptionKeyMethod<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            .invoke(null, feInfo, client.getKeyProvider());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          return encryptor;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        } catch (InvocationTargetException e) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          throw new RuntimeException(e.getTargetException());<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        } catch (GeneralSecurityException e) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          throw new IOException(e);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        } catch (IllegalAccessException e) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>          throw new RuntimeException(e);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    };<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      throws NoSuchMethodException, ClassNotFoundException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      return createTransparentCryptoHelper27();<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    } catch (NoSuchMethodException e) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      LOG.debug("No decryptEncryptedDataEncryptionKey method in DFSClient, should be hadoop 2.8+",<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        e);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    return createTransparentCryptoHelper28();<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  static {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    try {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      PB_HELPER = createPBHelper();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    } catch (Exception e) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          + "HBASE-16110 for more information.";<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      LOG.error(msg, e);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      throw new Error(msg, e);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  }<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /**<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   */<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    private final char[] password;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    private final String userName;<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>    /**<a name="line.318"></a>
+<span class="sourceLineNo">319</span>     * Creates a new SaslClientCallbackHandler.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>     * @param userName SASL user name<a name="line.320"></a>
+<span class="sourceLineNo">321</span>     * @Param password SASL password<a name="line.321"></a>
+<span class="sourceLineNo">322</span>     */<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      this.password = password;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      this.userName = userName;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>    private final int timeoutMs;<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    private final Promise&lt;Void&gt; promise;<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>    private int step = 0;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      this.conf = conf;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      this.saslProps = saslProps;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      this.timeoutMs = timeoutMs;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      this.promise = promise;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    }<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      sendSaslMessage(ctx, payload, null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      // values for future expansion.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        return null;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    }<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      if (payload != null) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        // and we want to keep that out of hbase-server.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      }<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (options != null) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      int size = proto.getSerializedSize();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      ctx.write(buf);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>    @Override<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      ctx.flush();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      step++;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    }<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      saslClient.dispose();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        throw new IOException(proto.getMessage());<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    private String getNegotiatedQop() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>    private boolean isNegotiatedQopPrivacy() {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      String qop = getNegotiatedQop();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      return qop != null &amp;&amp; "auth-conf".equalsIgnoreCase(qop);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>    private boolean requestedQopContainsPrivacy() {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      Set&lt;String&gt; requestedQop =<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      return requestedQop.contains("auth-conf");<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>    private void checkSaslComplete() throws IOException {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      if (!saslClient.isComplete()) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        throw new IOException("Failed to complete SASL handshake");<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      Set&lt;String&gt; requestedQop =<a name="line.424"></a>
-<span class="sourceLineNo">425</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      String negotiatedQop = getNegotiatedQop();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      LOG.debug(<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        "Verifying QOP, requested QOP = " + requestedQop + ", negotiated QOP = " + negotiatedQop);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (!requestedQop.contains(negotiatedQop)) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        throw new IOException(String.format("SASL handshake completed, but "<a name="line.430"></a>
-<span class="sourceLineNo">431</span>            + "channel does not have acceptable quality of protection, "<a name="line.431"></a>
-<span class="sourceLineNo">432</span>            + "requested = %s, negotiated = %s",<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          requestedQop, negotiatedQop));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>    private boolean useWrap() {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      String qop = (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      return qop != null &amp;&amp; !"auth".equalsIgnoreCase(qop);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    private CipherOption unwrap(CipherOption option, SaslClient saslClient) throws IOException {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      byte[] inKey = option.getInKey();<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      if (inKey != null) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        inKey = saslClient.unwrap(inKey, 0, inKey.length);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      byte[] outKey = option.getOutKey();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      if (outKey != null) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        outKey = saslClient.unwrap(outKey, 0, outKey.length);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      }<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return new CipherOption(option.getCipherSuite(), inKey, option.getInIv(), outKey,<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          option.getOutIv());<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    }<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    private CipherOption getCipherOption(DataTransferEncryptorMessageProto proto,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        boolean isNegotiatedQopPrivacy, SaslClient saslClient) throws IOException {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      List&lt;CipherOption&gt; cipherOptions =<a name="line.457"></a>
-<span class="sourceLineNo">458</span>          PB_HELPER.convertCipherOptionProtos(proto.getCipherOptionList());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      if (cipherOptions == null || cipherOptions.isEmpty()) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        return null;<a name="line.460"></a>
+<span class="sourceLineNo">328</span>    @Override<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      NameCallback nc = null;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      PasswordCallback pc = null;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      RealmCallback rc = null;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      for (Callback callback : callbacks) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>          continue;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        } else if (callback instanceof NameCallback) {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          nc = (NameCallback) callback;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        } else if (callback instanceof PasswordCallback) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>          pc = (PasswordCallback) callback;<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        } else if (callback instanceof RealmCallback) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          rc = (RealmCallback) callback;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        } else {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      if (nc != null) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        nc.setName(userName);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      if (pc != null) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        pc.setPassword(password);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      if (rc != null) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        rc.setText(rc.getDefaultText());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>    private final Configuration conf;<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>    private final SaslClient saslClient;<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    private final int timeoutMs;<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>    private final Promise&lt;Void&gt; promise;<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>    private int step = 0;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      this.conf = conf;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      this.saslProps = saslProps;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      this.timeoutMs = timeoutMs;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      this.promise = promise;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      sendSaslMessage(ctx, payload, null);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      // values for future expansion.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        return null;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.395"></a>
+<span class="sourceLineNo">396</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      if (payload != null) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        // and we want to keep that out of hbase-server.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      if (options != null) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      int size = proto.getSerializedSize();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      ctx.write(buf);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>    @Override<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      ctx.flush();<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      step++;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    @Override<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      saslClient.dispose();<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        throw new IOException(proto.getMessage());<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    private String getNegotiatedQop() {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>    

<TRUNCATED>

[43/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html
index 162b207..d3df994 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9};
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.110">FanOutOneBlockAsyncDFSOutputSaslHelper</a>
+public final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.107">FanOutOneBlockAsyncDFSOutputSaslHelper</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Helper class for adding sasl support for <a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html" title="class in org.apache.hadoop.hbase.io.asyncfs"><code>FanOutOneBlockAsyncDFSOutput</code></a>.</div>
 </li>
@@ -285,6 +285,14 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#createTransparentCryptoHelper--">createTransparentCryptoHelper</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i7" class="rowColor">
+<td class="colFirst"><code>private static <a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#createTransparentCryptoHelper27--">createTransparentCryptoHelper27</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>private static <a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#createTransparentCryptoHelper28--">createTransparentCryptoHelper28</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#doSaslNegotiation-org.apache.hadoop.conf.Configuration-org.apache.hbase.thirdparty.io.netty.channel.Channel-int-java.lang.String-char:A-java.util.Map-org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise-">doSaslNegotiation</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                  org.apache.hbase.thirdparty.io.netty.channel.Channel&nbsp;channel,
@@ -294,15 +302,15 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
                  <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;saslProps,
                  org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;&nbsp;saslPromise)</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>private static char[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#encryptionKeyToPassword-byte:A-">encryptionKeyToPassword</a></span>(byte[]&nbsp;encryptionKey)</code>&nbsp;</td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#getUserNameFromEncryptionKey-org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey-">getUserNameFromEncryptionKey</a></span>(org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey&nbsp;encryptionKey)</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>(package private) static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#trySaslNegotiate-org.apache.hadoop.conf.Configuration-org.apache.hbase.thirdparty.io.netty.channel.Channel-org.apache.hadoop.hdfs.protocol.DatanodeInfo-int-org.apache.hadoop.hdfs.DFSClient-org.apache.hadoop.security.token.Token-org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise-">trySaslNegotiate</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                 org.apache.hbase.thirdparty.io.netty.channel.Channel&nbsp;channel,
@@ -340,7 +348,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.111">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.108">LOG</a></pre>
 </li>
 </ul>
 <a name="SERVER_NAME">
@@ -349,7 +357,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SERVER_NAME</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.117">SERVER_NAME</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.114">SERVER_NAME</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputSaslHelper.SERVER_NAME">Constant Field Values</a></dd>
@@ -362,7 +370,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>PROTOCOL</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.118">PROTOCOL</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.115">PROTOCOL</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputSaslHelper.PROTOCOL">Constant Field Values</a></dd>
@@ -375,7 +383,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MECHANISM</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.119">MECHANISM</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.116">MECHANISM</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputSaslHelper.MECHANISM">Constant Field Values</a></dd>
@@ -388,7 +396,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SASL_TRANSFER_MAGIC_NUMBER</h4>
-<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.120">SASL_TRANSFER_MAGIC_NUMBER</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.117">SASL_TRANSFER_MAGIC_NUMBER</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputSaslHelper.SASL_TRANSFER_MAGIC_NUMBER">Constant Field Values</a></dd>
@@ -401,7 +409,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>NAME_DELIMITER</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.121">NAME_DELIMITER</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.118">NAME_DELIMITER</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputSaslHelper.NAME_DELIMITER">Constant Field Values</a></dd>
@@ -414,7 +422,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SASL_ADAPTOR</h4>
-<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.132">SASL_ADAPTOR</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.129">SASL_ADAPTOR</a></pre>
 </li>
 </ul>
 <a name="PB_HELPER">
@@ -423,7 +431,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>PB_HELPER</h4>
-<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.142">PB_HELPER</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.139">PB_HELPER</a></pre>
 </li>
 </ul>
 <a name="TRANSPARENT_CRYPTO_HELPER">
@@ -432,7 +440,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TRANSPARENT_CRYPTO_HELPER</h4>
-<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.150">TRANSPARENT_CRYPTO_HELPER</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.147">TRANSPARENT_CRYPTO_HELPER</a></pre>
 </li>
 </ul>
 </li>
@@ -449,7 +457,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FanOutOneBlockAsyncDFSOutputSaslHelper</h4>
-<pre>private&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.114">FanOutOneBlockAsyncDFSOutputSaslHelper</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.111">FanOutOneBlockAsyncDFSOutputSaslHelper</a>()</pre>
 </li>
 </ul>
 </li>
@@ -466,7 +474,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createSaslAdaptor</h4>
-<pre>private static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.152">createSaslAdaptor</a>()
+<pre>private static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.SaslAdaptor</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.149">createSaslAdaptor</a>()
                                                                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchFieldException.html?is-external=true" title="class or interface in java.lang">NoSuchFieldException</a>,
                                                                                     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang">NoSuchMethodException</a></pre>
 <dl>
@@ -482,7 +490,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createPBHelper</h4>
-<pre>private static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.194">createPBHelper</a>()
+<pre>private static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.PBHelper</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.191">createPBHelper</a>()
                                                                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang">NoSuchMethodException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -490,17 +498,49 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="createTransparentCryptoHelper27--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createTransparentCryptoHelper27</h4>
+<pre>private static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.226">createTransparentCryptoHelper27</a>()
+                                                                                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang">NoSuchMethodException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang">NoSuchMethodException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="createTransparentCryptoHelper28--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createTransparentCryptoHelper28</h4>
+<pre>private static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.255">createTransparentCryptoHelper28</a>()
+                                                                                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a>,
+                                                                                                              <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang">NoSuchMethodException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang">NoSuchMethodException</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="createTransparentCryptoHelper--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>createTransparentCryptoHelper</h4>
-<pre>private static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.229">createTransparentCryptoHelper</a>()
-                                                                                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang">NoSuchMethodException</a></pre>
+<pre>private static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.285">createTransparentCryptoHelper</a>()
+                                                                                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang">NoSuchMethodException</a>,
+                                                                                                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang">NoSuchMethodException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a></code></dd>
 </dl>
 </li>
 </ul>
@@ -510,7 +550,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getUserNameFromEncryptionKey</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.675">getUserNameFromEncryptionKey</a>(org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey&nbsp;encryptionKey)</pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.713">getUserNameFromEncryptionKey</a>(org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey&nbsp;encryptionKey)</pre>
 </li>
 </ul>
 <a name="encryptionKeyToPassword-byte:A-">
@@ -519,7 +559,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>encryptionKeyToPassword</h4>
-<pre>private static&nbsp;char[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.680">encryptionKeyToPassword</a>(byte[]&nbsp;encryptionKey)</pre>
+<pre>private static&nbsp;char[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.718">encryptionKeyToPassword</a>(byte[]&nbsp;encryptionKey)</pre>
 </li>
 </ul>
 <a name="buildUsername-org.apache.hadoop.security.token.Token-">
@@ -528,7 +568,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>buildUsername</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.684">buildUsername</a>(org.apache.hadoop.security.token.Token&lt;org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier&gt;&nbsp;blockToken)</pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.722">buildUsername</a>(org.apache.hadoop.security.token.Token&lt;org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier&gt;&nbsp;blockToken)</pre>
 </li>
 </ul>
 <a name="buildClientPassword-org.apache.hadoop.security.token.Token-">
@@ -537,7 +577,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>buildClientPassword</h4>
-<pre>private static&nbsp;char[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.688">buildClientPassword</a>(org.apache.hadoop.security.token.Token&lt;org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier&gt;&nbsp;blockToken)</pre>
+<pre>private static&nbsp;char[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.726">buildClientPassword</a>(org.apache.hadoop.security.token.Token&lt;org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier&gt;&nbsp;blockToken)</pre>
 </li>
 </ul>
 <a name="createSaslPropertiesForEncryption-java.lang.String-">
@@ -546,7 +586,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>createSaslPropertiesForEncryption</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.693">createSaslPropertiesForEncryption</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encryptionAlgorithm)</pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.731">createSaslPropertiesForEncryption</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encryptionAlgorithm)</pre>
 </li>
 </ul>
 <a name="doSaslNegotiation-org.apache.hadoop.conf.Configuration-org.apache.hbase.thirdparty.io.netty.channel.Channel-int-java.lang.String-char:A-java.util.Map-org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise-">
@@ -555,7 +595,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>doSaslNegotiation</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.701">doSaslNegotiation</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.739">doSaslNegotiation</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                       org.apache.hbase.thirdparty.io.netty.channel.Channel&nbsp;channel,
                                       int&nbsp;timeoutMs,
                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;username,
@@ -570,7 +610,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>trySaslNegotiate</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.713">trySaslNegotiate</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.751">trySaslNegotiate</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                              org.apache.hbase.thirdparty.io.netty.channel.Channel&nbsp;channel,
                              org.apache.hadoop.hdfs.protocol.DatanodeInfo&nbsp;dnInfo,
                              int&nbsp;timeoutMs,
@@ -590,7 +630,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>createEncryptor</h4>
-<pre>static&nbsp;org.apache.hadoop.crypto.Encryptor&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.772">createEncryptor</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>static&nbsp;org.apache.hadoop.crypto.Encryptor&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#line.810">createEncryptor</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                           org.apache.hadoop.hdfs.protocol.HdfsFileStatus&nbsp;stat,
                                                           org.apache.hadoop.hdfs.DFSClient&nbsp;client)
                                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/asyncfs/class-use/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/class-use/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/class-use/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html
index 4bf7f70..9ed2a9f 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/asyncfs/class-use/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/asyncfs/class-use/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html
@@ -119,6 +119,14 @@
 <td class="colFirst"><code>private static <a href="../../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper</a></code></td>
 <td class="colLast"><span class="typeNameLabel">FanOutOneBlockAsyncDFSOutputSaslHelper.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#createTransparentCryptoHelper--">createTransparentCryptoHelper</a></span>()</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static <a href="../../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper</a></code></td>
+<td class="colLast"><span class="typeNameLabel">FanOutOneBlockAsyncDFSOutputSaslHelper.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#createTransparentCryptoHelper27--">createTransparentCryptoHelper27</a></span>()</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static <a href="../../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputSaslHelper.TransparentCryptoHelper</a></code></td>
+<td class="colLast"><span class="typeNameLabel">FanOutOneBlockAsyncDFSOutputSaslHelper.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.html#createTransparentCryptoHelper28--">createTransparentCryptoHelper28</a></span>()</code>&nbsp;</td>
+</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html
index 884c9b1..01824b9 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#line.223">BlockCacheUtil.CachedBlocksByFile</a>
+<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#line.258">BlockCacheUtil.CachedBlocksByFile</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Use one of these to keep a running account of cached blocks by file.  Throw it away when done.
  This is different than metrics in that it is stats on current state of a cache.
@@ -275,7 +275,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>count</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.224">count</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.259">count</a></pre>
 </li>
 </ul>
 <a name="dataBlockCount">
@@ -284,7 +284,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>dataBlockCount</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.225">dataBlockCount</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.260">dataBlockCount</a></pre>
 </li>
 </ul>
 <a name="size">
@@ -293,7 +293,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.226">size</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.261">size</a></pre>
 </li>
 </ul>
 <a name="dataSize">
@@ -302,7 +302,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>dataSize</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.227">dataSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.262">dataSize</a></pre>
 </li>
 </ul>
 <a name="now">
@@ -311,7 +311,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>now</h4>
-<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.228">now</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.263">now</a></pre>
 </li>
 </ul>
 <a name="max">
@@ -320,7 +320,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>max</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.236">max</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.271">max</a></pre>
 <div class="block">How many blocks to look at before we give up.
  There could be many millions of blocks. We don't want the
  ui to freeze while we run through 1B blocks... users will
@@ -334,7 +334,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_MAX</h4>
-<pre>public static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.237">DEFAULT_MAX</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.272">DEFAULT_MAX</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.CachedBlocksByFile.DEFAULT_MAX">Constant Field Values</a></dd>
@@ -347,7 +347,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>cachedBlockByFile</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&gt;&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.250">cachedBlockByFile</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&gt;&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.285">cachedBlockByFile</a></pre>
 <div class="block">Map by filename. use concurent utils because we want our Map and contained blocks sorted.</div>
 </li>
 </ul>
@@ -357,7 +357,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>hist</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/metrics/impl/FastLongHistogram.html" title="class in org.apache.hadoop.hbase.metrics.impl">FastLongHistogram</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.251">hist</a></pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/metrics/impl/FastLongHistogram.html" title="class in org.apache.hadoop.hbase.metrics.impl">FastLongHistogram</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.286">hist</a></pre>
 </li>
 </ul>
 </li>
@@ -374,7 +374,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CachedBlocksByFile</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.239">CachedBlocksByFile</a>()</pre>
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.274">CachedBlocksByFile</a>()</pre>
 </li>
 </ul>
 <a name="CachedBlocksByFile-org.apache.hadoop.conf.Configuration-">
@@ -383,7 +383,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CachedBlocksByFile</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.243">CachedBlocksByFile</a>(org.apache.hadoop.conf.Configuration&nbsp;c)</pre>
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.278">CachedBlocksByFile</a>(org.apache.hadoop.conf.Configuration&nbsp;c)</pre>
 </li>
 </ul>
 </li>
@@ -400,7 +400,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>update</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.257">update</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&nbsp;cb)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.292">update</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&nbsp;cb)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>cb</code> - </dd>
@@ -415,7 +415,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isFull</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.282">isFull</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.317">isFull</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if full; i.e. there are more items in the cache but we only loaded up
@@ -430,7 +430,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getCachedBlockStatsByFile</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&gt;&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.286">getCachedBlockStatsByFile</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&gt;&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.321">getCachedBlockStatsByFile</a>()</pre>
 </li>
 </ul>
 <a name="getCount--">
@@ -439,7 +439,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.293">getCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.328">getCount</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>count of blocks in the cache</dd>
@@ -452,7 +452,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.297">getDataCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.332">getDataCount</a>()</pre>
 </li>
 </ul>
 <a name="getSize--">
@@ -461,7 +461,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.304">getSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.339">getSize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>size of blocks in the cache</dd>
@@ -474,7 +474,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.311">getDataSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.346">getDataSize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Size of data.</dd>
@@ -487,7 +487,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getAgeInCacheSnapshot</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html" title="class in org.apache.hadoop.hbase.io.hfile">AgeSnapshot</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.315">getAgeInCacheSnapshot</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html" title="class in org.apache.hadoop.hbase.io.hfile">AgeSnapshot</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.350">getAgeInCacheSnapshot</a>()</pre>
 </li>
 </ul>
 <a name="toString--">
@@ -496,7 +496,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.320">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.355">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html
index 6b86d0c..ef4e796 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9};
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -220,29 +220,38 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </td>
 </tr>
 <tr id="i2" class="altColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#shouldReplaceExistingCacheBlock-org.apache.hadoop.hbase.io.hfile.BlockCache-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.Cacheable-">shouldReplaceExistingCacheBlock</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a>&nbsp;blockCache,
+                               <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
+                               <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;newBlock)</code>
+<div class="block">Because of the region splitting, it's possible that the split key locate in the middle of a
+ block.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#toJSON-org.apache.hadoop.hbase.io.hfile.BlockCache-">toJSON</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a>&nbsp;bc)</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#toJSON-org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.CachedBlocksByFile-">toJSON</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheUtil.CachedBlocksByFile</a>&nbsp;cbsbf)</code>&nbsp;</td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#toJSON-java.lang.String-java.util.NavigableSet-">toJSON</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filename,
       <a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&gt;&nbsp;blocks)</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#toString-org.apache.hadoop.hbase.io.hfile.CachedBlock-long-">toString</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&nbsp;cb,
         long&nbsp;now)</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#toStringMinusFileName-org.apache.hadoop.hbase.io.hfile.CachedBlock-long-">toStringMinusFileName</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&nbsp;cb,
                      long&nbsp;now)</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#validateBlockAddition-org.apache.hadoop.hbase.io.hfile.Cacheable-org.apache.hadoop.hbase.io.hfile.Cacheable-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-">validateBlockAddition</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;existing,
                      <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;newBlock,
@@ -463,7 +472,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <a name="validateBlockAddition-org.apache.hadoop.hbase.io.hfile.Cacheable-org.apache.hadoop.hbase.io.hfile.Cacheable-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>validateBlockAddition</h4>
 <pre>public static&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#line.199">validateBlockAddition</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;existing,
@@ -482,6 +491,33 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="shouldReplaceExistingCacheBlock-org.apache.hadoop.hbase.io.hfile.BlockCache-org.apache.hadoop.hbase.io.hfile.BlockCacheKey-org.apache.hadoop.hbase.io.hfile.Cacheable-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>shouldReplaceExistingCacheBlock</h4>
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#line.227">shouldReplaceExistingCacheBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a>&nbsp;blockCache,
+                                                      <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheKey</a>&nbsp;cacheKey,
+                                                      <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&nbsp;newBlock)</pre>
+<div class="block">Because of the region splitting, it's possible that the split key locate in the middle of a
+ block. So it's possible that both the daughter regions load the same block from their parent
+ HFile. When pread, we don't force the read to read all of the next block header. So when two
+ threads try to cache the same block, it's possible that one thread read all of the next block
+ header but the other one didn't. if the already cached block hasn't next block header but the
+ new block to cache has, then we can replace the existing block with the new block for better
+ performance.(HBASE-20447)</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>blockCache</code> - BlockCache to check</dd>
+<dd><code>cacheKey</code> - the block cache key</dd>
+<dd><code>newBlock</code> - the new block which try to put into the block cache.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true means need to replace existing block with new block for the same block cache key.
+         false means just keep the existing block.</dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html
index 125a6bd..1ae319c 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.758">LruBlockCache.BlockBucket</a>
+<pre>private class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.745">LruBlockCache.BlockBucket</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache.BlockBucket</a>&gt;</pre>
 <div class="block">Used to group blocks into priority buckets.  There will be a BlockBucket
@@ -253,7 +253,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>name</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.760">name</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.747">name</a></pre>
 </li>
 </ul>
 <a name="queue">
@@ -262,7 +262,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>queue</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruCachedBlockQueue.html" title="class in org.apache.hadoop.hbase.io.hfile">LruCachedBlockQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.761">queue</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruCachedBlockQueue.html" title="class in org.apache.hadoop.hbase.io.hfile">LruCachedBlockQueue</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.748">queue</a></pre>
 </li>
 </ul>
 <a name="totalSize">
@@ -271,7 +271,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>totalSize</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.762">totalSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.749">totalSize</a></pre>
 </li>
 </ul>
 <a name="bucketSize">
@@ -280,7 +280,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockListLast">
 <li class="blockList">
 <h4>bucketSize</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.763">bucketSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.750">bucketSize</a></pre>
 </li>
 </ul>
 </li>
@@ -297,7 +297,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockListLast">
 <li class="blockList">
 <h4>BlockBucket</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.765">BlockBucket</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.752">BlockBucket</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                    long&nbsp;bytesToFree,
                    long&nbsp;blockSize,
                    long&nbsp;bucketSize)</pre>
@@ -317,7 +317,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.772">add</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruCachedBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">LruCachedBlock</a>&nbsp;block)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.759">add</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruCachedBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">LruCachedBlock</a>&nbsp;block)</pre>
 </li>
 </ul>
 <a name="free-long-">
@@ -326,7 +326,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>free</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.777">free</a>(long&nbsp;toFree)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.764">free</a>(long&nbsp;toFree)</pre>
 </li>
 </ul>
 <a name="overflow--">
@@ -335,7 +335,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>overflow</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.795">overflow</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.782">overflow</a>()</pre>
 </li>
 </ul>
 <a name="totalSize--">
@@ -344,7 +344,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>totalSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.799">totalSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.786">totalSize</a>()</pre>
 </li>
 </ul>
 <a name="compareTo-org.apache.hadoop.hbase.io.hfile.LruBlockCache.BlockBucket-">
@@ -353,7 +353,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>compareTo</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.804">compareTo</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache.BlockBucket</a>&nbsp;that)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.791">compareTo</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache.BlockBucket</a>&nbsp;that)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true#compareTo-T-" title="class or interface in java.lang">compareTo</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache.BlockBucket</a>&gt;</code></dd>
@@ -366,7 +366,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.809">equals</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;that)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.796">equals</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;that)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -379,7 +379,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.817">hashCode</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.804">hashCode</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -392,7 +392,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.822">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.BlockBucket.html#line.809">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html
index bc5912f..595b06f 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.882">LruBlockCache.EvictionThread</a>
+<pre>static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.869">LruBlockCache.EvictionThread</a>
 extends <a href="../../../../../../org/apache/hadoop/hbase/util/HasThread.html" title="class in org.apache.hadoop.hbase.util">HasThread</a></pre>
 </li>
 </ul>
@@ -239,7 +239,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/HasThread.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>cache</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ref/WeakReference.html?is-external=true" title="class or interface in java.lang.ref">WeakReference</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html#line.884">cache</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ref/WeakReference.html?is-external=true" title="class or interface in java.lang.ref">WeakReference</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html#line.871">cache</a></pre>
 </li>
 </ul>
 <a name="go">
@@ -248,7 +248,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/HasThread.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>go</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html#line.885">go</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html#line.872">go</a></pre>
 </li>
 </ul>
 <a name="enteringRun">
@@ -257,7 +257,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/HasThread.html"
 <ul class="blockListLast">
 <li class="blockList">
 <h4>enteringRun</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html#line.887">enteringRun</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html#line.874">enteringRun</a></pre>
 </li>
 </ul>
 </li>
@@ -274,7 +274,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/HasThread.html"
 <ul class="blockListLast">
 <li class="blockList">
 <h4>EvictionThread</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html#line.889">EvictionThread</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache</a>&nbsp;cache)</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html#line.876">EvictionThread</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache</a>&nbsp;cache)</pre>
 </li>
 </ul>
 </li>
@@ -291,7 +291,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/HasThread.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html#line.896">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html#line.883">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>
@@ -306,7 +306,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/HasThread.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>evict</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html#line.915">evict</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html#line.902">evict</a>()</pre>
 </li>
 </ul>
 <a name="shutdown--">
@@ -315,7 +315,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/HasThread.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html#line.921">shutdown</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html#line.908">shutdown</a>()</pre>
 </li>
 </ul>
 <a name="isEnteringRun--">
@@ -324,7 +324,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/HasThread.html"
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isEnteringRun</h4>
-<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html#line.929">isEnteringRun</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html#line.916">isEnteringRun</a>()</pre>
 <div class="block">Used for the test.</div>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html
index e896b6e..96583f9 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.937">LruBlockCache.StatisticsThread</a>
+<pre>static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#line.924">LruBlockCache.StatisticsThread</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></pre>
 </li>
 </ul>
@@ -239,7 +239,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>lru</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html#line.939">lru</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html#line.926">lru</a></pre>
 </li>
 </ul>
 </li>
@@ -256,7 +256,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>StatisticsThread</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html#line.941">StatisticsThread</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache</a>&nbsp;lru)</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html#line.928">StatisticsThread</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache</a>&nbsp;lru)</pre>
 </li>
 </ul>
 </li>
@@ -273,7 +273,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html#line.948">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html#line.935">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>


[10/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html
index 05e032c..40ef9f4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputSaslHelper.SaslWrapHandler.html
@@ -25,767 +25,805 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.io.asyncfs;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.21"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleState.READER_IDLE;<a name="line.21"></a>
 <span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import com.google.protobuf.CodedOutputStream;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.io.IOException;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.lang.reflect.Field;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.lang.reflect.InvocationTargetException;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.lang.reflect.Method;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import java.net.InetAddress;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import java.net.InetSocketAddress;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import java.nio.ByteBuffer;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import java.security.GeneralSecurityException;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import java.util.Arrays;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import java.util.Collections;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import java.util.List;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import java.util.Map;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import java.util.Set;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import java.util.concurrent.TimeUnit;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>import javax.security.auth.callback.Callback;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import javax.security.auth.callback.CallbackHandler;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import javax.security.auth.callback.NameCallback;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import javax.security.auth.callback.PasswordCallback;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import javax.security.sasl.RealmCallback;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import javax.security.sasl.Sasl;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import javax.security.sasl.SaslClient;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import javax.security.sasl.SaslException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.commons.codec.binary.Base64;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.commons.lang3.StringUtils;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.conf.Configuration;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.slf4j.Logger;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.slf4j.LoggerFactory;<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>import com.google.protobuf.ByteString;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.security.token.Token;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>/**<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> */<a name="line.108"></a>
-<span class="sourceLineNo">109</span>@InterfaceAudience.Private<a name="line.109"></a>
-<span class="sourceLineNo">110</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private static final Logger LOG =<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.112"></a>
+<span class="sourceLineNo">023</span>import com.google.protobuf.ByteString;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import com.google.protobuf.CodedOutputStream;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.lang.reflect.Field;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.lang.reflect.InvocationTargetException;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.lang.reflect.Method;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.InetAddress;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.net.InetSocketAddress;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.nio.ByteBuffer;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.security.GeneralSecurityException;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Arrays;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Collections;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.List;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Map;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Set;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.concurrent.TimeUnit;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import javax.security.auth.callback.Callback;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import javax.security.auth.callback.CallbackHandler;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import javax.security.auth.callback.NameCallback;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import javax.security.auth.callback.PasswordCallback;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import javax.security.auth.callback.UnsupportedCallbackException;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import javax.security.sasl.RealmCallback;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import javax.security.sasl.RealmChoiceCallback;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import javax.security.sasl.Sasl;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import javax.security.sasl.SaslClient;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import javax.security.sasl.SaslException;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.commons.codec.binary.Base64;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.commons.lang3.StringUtils;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.crypto.CipherOption;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.crypto.CipherSuite;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.crypto.CryptoCodec;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.crypto.Decryptor;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.crypto.Encryptor;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.crypto.key.KeyProvider;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.crypto.key.KeyProvider.KeyVersion;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.FileEncryptionInfo;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hdfs.protocol.datatransfer.InvalidEncryptionKeyException;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hdfs.protocol.datatransfer.TrustedChannelResolver;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.DataTransferEncryptorMessageProto.DataTransferEncryptorStatus;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hdfs.protocol.proto.HdfsProtos.CipherOptionProto;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.security.SaslPropertiesResolver;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.security.SaslRpcServer.QualityOfProtection;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.security.token.Token;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.slf4j.Logger;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.LoggerFactory;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hbase.thirdparty.com.google.common.base.Charsets;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.base.Throwables;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hbase.thirdparty.io.netty.buffer.ByteBufOutputStream;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hbase.thirdparty.io.netty.buffer.CompositeByteBuf;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hbase.thirdparty.io.netty.buffer.Unpooled;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hbase.thirdparty.io.netty.channel.Channel;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelDuplexHandler;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelOutboundHandlerAdapter;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPipeline;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hbase.thirdparty.io.netty.channel.ChannelPromise;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.LengthFieldBasedFrameDecoder;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.MessageToByteEncoder;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufDecoder;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hbase.thirdparty.io.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateEvent;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hbase.thirdparty.io.netty.handler.timeout.IdleStateHandler;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hbase.thirdparty.io.netty.util.concurrent.Promise;<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>/**<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * Helper class for adding sasl support for {@link FanOutOneBlockAsyncDFSOutput}.<a name="line.104"></a>
+<span class="sourceLineNo">105</span> */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>@InterfaceAudience.Private<a name="line.106"></a>
+<span class="sourceLineNo">107</span>public final class FanOutOneBlockAsyncDFSOutputSaslHelper {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private static final Logger LOG =<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      LoggerFactory.getLogger(FanOutOneBlockAsyncDFSOutputSaslHelper.class);<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private FanOutOneBlockAsyncDFSOutputSaslHelper() {<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>  private static final String SERVER_NAME = "0";<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  private static final String PROTOCOL = "hdfs";<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  private static final String NAME_DELIMITER = " ";<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  private interface SaslAdaptor {<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.127"></a>
+<span class="sourceLineNo">114</span>  private static final String SERVER_NAME = "0";<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private static final String PROTOCOL = "hdfs";<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private static final String MECHANISM = "DIGEST-MD5";<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private static final int SASL_TRANSFER_MAGIC_NUMBER = 0xDEADBEEF;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private static final String NAME_DELIMITER = " ";<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  private interface SaslAdaptor {<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>    TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient);<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>    SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient);<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
 <span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>    AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.132"></a>
+<span class="sourceLineNo">129</span>  private static final SaslAdaptor SASL_ADAPTOR;<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  // helper class for convert protos.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private interface PBHelper {<a name="line.132"></a>
 <span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  // helper class for convert protos.<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  private interface PBHelper {<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.137"></a>
+<span class="sourceLineNo">134</span>    List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options);<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
 <span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final PBHelper PB_HELPER;<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private interface TransparentCryptoHelper {<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        throws IOException;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    Field saslPropsResolverField =<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    saslPropsResolverField.setAccessible(true);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    Field trustedChannelResolverField =<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    trustedChannelResolverField.setAccessible(true);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Field fallbackToSimpleAuthField =<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return new SaslAdaptor() {<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>      @Override<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        try {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        } catch (IllegalAccessException e) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>          throw new RuntimeException(e);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        }<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        try {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        } catch (IllegalAccessException e) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          throw new RuntimeException(e);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      }<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>      @Override<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        try {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (IllegalAccessException e) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          throw new RuntimeException(e);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    };<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    Class&lt;?&gt; helperClass;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    try {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } catch (ClassNotFoundException e) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    Method convertCipherOptionProtosMethod =<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    return new PBHelper() {<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>      @SuppressWarnings("unchecked")<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      @Override<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        try {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          throw new RuntimeException(e);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>      @SuppressWarnings("unchecked")<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      @Override<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        try {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>          throw new RuntimeException(e);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      }<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    };<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      throws NoSuchMethodException {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    return new TransparentCryptoHelper() {<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>      @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          DFSClient client) throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        try {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          KeyVersion decryptedKey =<a name="line.240"></a>
-<span class="sourceLineNo">241</span>              (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          return encryptor;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        } catch (InvocationTargetException e) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          throw new RuntimeException(e.getTargetException());<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        } catch (GeneralSecurityException e) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          throw new IOException(e);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        } catch (IllegalAccessException e) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          throw new RuntimeException(e);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      }<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    };<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  static {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    try {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      PB_HELPER = createPBHelper();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    } catch (Exception e) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          + "HBASE-16110 for more information.";<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      LOG.error(msg, e);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      throw new Error(msg, e);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>  /**<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    private final char[] password;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    private final String userName;<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>     * Creates a new SaslClientCallbackHandler.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>     * @param userName SASL user name<a name="line.282"></a>
-<span class="sourceLineNo">283</span>     * @Param password SASL password<a name="line.283"></a>
-<span class="sourceLineNo">284</span>     */<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      this.password = password;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      this.userName = userName;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    @Override<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      NameCallback nc = null;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      PasswordCallback pc = null;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      RealmCallback rc = null;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      for (Callback callback : callbacks) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          continue;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        } else if (callback instanceof NameCallback) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          nc = (NameCallback) callback;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        } else if (callback instanceof PasswordCallback) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>          pc = (PasswordCallback) callback;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        } else if (callback instanceof RealmCallback) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          rc = (RealmCallback) callback;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        } else {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      if (nc != null) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        nc.setName(userName);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      if (pc != null) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        pc.setPassword(password);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      if (rc != null) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        rc.setText(rc.getDefaultText());<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private final Configuration conf;<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    private final SaslClient saslClient;<a name="line.326"></a>
+<span class="sourceLineNo">139</span>  private static final PBHelper PB_HELPER;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>  private interface TransparentCryptoHelper {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo, DFSClient client)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        throws IOException;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static final TransparentCryptoHelper TRANSPARENT_CRYPTO_HELPER;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static SaslAdaptor createSaslAdaptor()<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      throws NoSuchFieldException, NoSuchMethodException {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    Field saslPropsResolverField =<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        SaslDataTransferClient.class.getDeclaredField("saslPropsResolver");<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    saslPropsResolverField.setAccessible(true);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    Field trustedChannelResolverField =<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        SaslDataTransferClient.class.getDeclaredField("trustedChannelResolver");<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    trustedChannelResolverField.setAccessible(true);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Field fallbackToSimpleAuthField =<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        SaslDataTransferClient.class.getDeclaredField("fallbackToSimpleAuth");<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    fallbackToSimpleAuthField.setAccessible(true);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return new SaslAdaptor() {<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>      @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      public TrustedChannelResolver getTrustedChannelResolver(SaslDataTransferClient saslClient) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        try {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          return (TrustedChannelResolver) trustedChannelResolverField.get(saslClient);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        } catch (IllegalAccessException e) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          throw new RuntimeException(e);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>      @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      public SaslPropertiesResolver getSaslPropsResolver(SaslDataTransferClient saslClient) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        try {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          return (SaslPropertiesResolver) saslPropsResolverField.get(saslClient);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        } catch (IllegalAccessException e) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          throw new RuntimeException(e);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      }<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>      @Override<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      public AtomicBoolean getFallbackToSimpleAuth(SaslDataTransferClient saslClient) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          return (AtomicBoolean) fallbackToSimpleAuthField.get(saslClient);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        } catch (IllegalAccessException e) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          throw new RuntimeException(e);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private static PBHelper createPBHelper() throws NoSuchMethodException {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    Class&lt;?&gt; helperClass;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    try {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      helperClass = Class.forName("org.apache.hadoop.hdfs.protocolPB.PBHelperClient");<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    } catch (ClassNotFoundException e) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      LOG.debug("No PBHelperClient class found, should be hadoop 2.7-", e);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      helperClass = org.apache.hadoop.hdfs.protocolPB.PBHelper.class;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    Method convertCipherOptionsMethod = helperClass.getMethod("convertCipherOptions", List.class);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Method convertCipherOptionProtosMethod =<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        helperClass.getMethod("convertCipherOptionProtos", List.class);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    return new PBHelper() {<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>      @SuppressWarnings("unchecked")<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      @Override<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      public List&lt;CipherOptionProto&gt; convertCipherOptions(List&lt;CipherOption&gt; options) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        try {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          return (List&lt;CipherOptionProto&gt;) convertCipherOptionsMethod.invoke(null, options);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          throw new RuntimeException(e);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        }<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      }<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>      @SuppressWarnings("unchecked")<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      public List&lt;CipherOption&gt; convertCipherOptionProtos(List&lt;CipherOptionProto&gt; options) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>          return (List&lt;CipherOption&gt;) convertCipherOptionProtosMethod.invoke(null, options);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        } catch (IllegalAccessException | InvocationTargetException e) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          throw new RuntimeException(e);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    };<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  private static TransparentCryptoHelper createTransparentCryptoHelper27()<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      throws NoSuchMethodException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    Method decryptEncryptedDataEncryptionKeyMethod = DFSClient.class<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      .getDeclaredMethod("decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    return new TransparentCryptoHelper() {<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          DFSClient client) throws IOException {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          KeyVersion decryptedKey =<a name="line.237"></a>
+<span class="sourceLineNo">238</span>            (KeyVersion) decryptEncryptedDataEncryptionKeyMethod.invoke(client, feInfo);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          return encryptor;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        } catch (InvocationTargetException e) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          throw new RuntimeException(e.getTargetException());<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        } catch (GeneralSecurityException e) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          throw new IOException(e);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        } catch (IllegalAccessException e) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          throw new RuntimeException(e);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    };<a name="line.252"></a>
+<span class="sourceLineNo">253</span>  }<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>  private static TransparentCryptoHelper createTransparentCryptoHelper28()<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      throws ClassNotFoundException, NoSuchMethodException {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Class&lt;?&gt; hdfsKMSUtilCls = Class.forName("org.apache.hadoop.hdfs.HdfsKMSUtil");<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Method decryptEncryptedDataEncryptionKeyMethod = hdfsKMSUtilCls.getDeclaredMethod(<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      "decryptEncryptedDataEncryptionKey", FileEncryptionInfo.class, KeyProvider.class);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    decryptEncryptedDataEncryptionKeyMethod.setAccessible(true);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    return new TransparentCryptoHelper() {<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>      @Override<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      public Encryptor createEncryptor(Configuration conf, FileEncryptionInfo feInfo,<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          DFSClient client) throws IOException {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        try {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          KeyVersion decryptedKey = (KeyVersion) decryptEncryptedDataEncryptionKeyMethod<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            .invoke(null, feInfo, client.getKeyProvider());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          CryptoCodec cryptoCodec = CryptoCodec.getInstance(conf, feInfo.getCipherSuite());<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          Encryptor encryptor = cryptoCodec.createEncryptor();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          encryptor.init(decryptedKey.getMaterial(), feInfo.getIV());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          return encryptor;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        } catch (InvocationTargetException e) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          Throwables.propagateIfPossible(e.getTargetException(), IOException.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          throw new RuntimeException(e.getTargetException());<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        } catch (GeneralSecurityException e) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          throw new IOException(e);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        } catch (IllegalAccessException e) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>          throw new RuntimeException(e);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    };<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  private static TransparentCryptoHelper createTransparentCryptoHelper()<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      throws NoSuchMethodException, ClassNotFoundException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      return createTransparentCryptoHelper27();<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    } catch (NoSuchMethodException e) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      LOG.debug("No decryptEncryptedDataEncryptionKey method in DFSClient, should be hadoop 2.8+",<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        e);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    return createTransparentCryptoHelper28();<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  static {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    try {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      SASL_ADAPTOR = createSaslAdaptor();<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      PB_HELPER = createPBHelper();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      TRANSPARENT_CRYPTO_HELPER = createTransparentCryptoHelper();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    } catch (Exception e) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      String msg = "Couldn't properly initialize access to HDFS internals. Please "<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          + "update your WAL Provider to not make use of the 'asyncfs' provider. See "<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          + "HBASE-16110 for more information.";<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      LOG.error(msg, e);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      throw new Error(msg, e);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  }<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /**<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   * Sets user name and password when asked by the client-side SASL object.<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   */<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  private static final class SaslClientCallbackHandler implements CallbackHandler {<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    private final char[] password;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    private final String userName;<a name="line.316"></a>
+<span class="sourceLineNo">317</span><a name="line.317"></a>
+<span class="sourceLineNo">318</span>    /**<a name="line.318"></a>
+<span class="sourceLineNo">319</span>     * Creates a new SaslClientCallbackHandler.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>     * @param userName SASL user name<a name="line.320"></a>
+<span class="sourceLineNo">321</span>     * @Param password SASL password<a name="line.321"></a>
+<span class="sourceLineNo">322</span>     */<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    public SaslClientCallbackHandler(String userName, char[] password) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      this.password = password;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      this.userName = userName;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>    private final int timeoutMs;<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    private final Promise&lt;Void&gt; promise;<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>    private int step = 0;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      this.conf = conf;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      this.saslProps = saslProps;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      this.timeoutMs = timeoutMs;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      this.promise = promise;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    }<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      sendSaslMessage(ctx, payload, null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      // values for future expansion.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        return null;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    }<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      if (payload != null) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        // and we want to keep that out of hbase-server.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      }<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (options != null) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      int size = proto.getSerializedSize();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      ctx.write(buf);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>    @Override<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      ctx.flush();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      step++;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    }<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      saslClient.dispose();<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        throw new IOException(proto.getMessage());<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    private String getNegotiatedQop() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>    private boolean isNegotiatedQopPrivacy() {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      String qop = getNegotiatedQop();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      return qop != null &amp;&amp; "auth-conf".equalsIgnoreCase(qop);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>    private boolean requestedQopContainsPrivacy() {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      Set&lt;String&gt; requestedQop =<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      return requestedQop.contains("auth-conf");<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>    private void checkSaslComplete() throws IOException {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      if (!saslClient.isComplete()) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        throw new IOException("Failed to complete SASL handshake");<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      Set&lt;String&gt; requestedQop =<a name="line.424"></a>
-<span class="sourceLineNo">425</span>          ImmutableSet.copyOf(Arrays.asList(saslProps.get(Sasl.QOP).split(",")));<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      String negotiatedQop = getNegotiatedQop();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      LOG.debug(<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        "Verifying QOP, requested QOP = " + requestedQop + ", negotiated QOP = " + negotiatedQop);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      if (!requestedQop.contains(negotiatedQop)) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        throw new IOException(String.format("SASL handshake completed, but "<a name="line.430"></a>
-<span class="sourceLineNo">431</span>            + "channel does not have acceptable quality of protection, "<a name="line.431"></a>
-<span class="sourceLineNo">432</span>            + "requested = %s, negotiated = %s",<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          requestedQop, negotiatedQop));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>    private boolean useWrap() {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      String qop = (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      return qop != null &amp;&amp; !"auth".equalsIgnoreCase(qop);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    private CipherOption unwrap(CipherOption option, SaslClient saslClient) throws IOException {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      byte[] inKey = option.getInKey();<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      if (inKey != null) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        inKey = saslClient.unwrap(inKey, 0, inKey.length);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      byte[] outKey = option.getOutKey();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      if (outKey != null) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        outKey = saslClient.unwrap(outKey, 0, outKey.length);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      }<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return new CipherOption(option.getCipherSuite(), inKey, option.getInIv(), outKey,<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          option.getOutIv());<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    }<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    private CipherOption getCipherOption(DataTransferEncryptorMessageProto proto,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        boolean isNegotiatedQopPrivacy, SaslClient saslClient) throws IOException {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      List&lt;CipherOption&gt; cipherOptions =<a name="line.457"></a>
-<span class="sourceLineNo">458</span>          PB_HELPER.convertCipherOptionProtos(proto.getCipherOptionList());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      if (cipherOptions == null || cipherOptions.isEmpty()) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        return null;<a name="line.460"></a>
+<span class="sourceLineNo">328</span>    @Override<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      NameCallback nc = null;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      PasswordCallback pc = null;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      RealmCallback rc = null;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      for (Callback callback : callbacks) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        if (callback instanceof RealmChoiceCallback) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>          continue;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        } else if (callback instanceof NameCallback) {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          nc = (NameCallback) callback;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        } else if (callback instanceof PasswordCallback) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>          pc = (PasswordCallback) callback;<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        } else if (callback instanceof RealmCallback) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          rc = (RealmCallback) callback;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        } else {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          throw new UnsupportedCallbackException(callback, "Unrecognized SASL client callback");<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      if (nc != null) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        nc.setName(userName);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      if (pc != null) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        pc.setPassword(password);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      if (rc != null) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        rc.setText(rc.getDefaultText());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      }<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private static final class SaslNegotiateHandler extends ChannelDuplexHandler {<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>    private final Configuration conf;<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span>    private final Map&lt;String, String&gt; saslProps;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>    private final SaslClient saslClient;<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    private final int timeoutMs;<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>    private final Promise&lt;Void&gt; promise;<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>    private int step = 0;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    public SaslNegotiateHandler(Configuration conf, String username, char[] password,<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        Map&lt;String, String&gt; saslProps, int timeoutMs, Promise&lt;Void&gt; promise) throws SaslException {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      this.conf = conf;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      this.saslProps = saslProps;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      this.saslClient = Sasl.createSaslClient(new String[] { MECHANISM }, username, PROTOCOL,<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        SERVER_NAME, saslProps, new SaslClientCallbackHandler(username, password));<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      this.timeoutMs = timeoutMs;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      this.promise = promise;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload) throws IOException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      sendSaslMessage(ctx, payload, null);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>    private List&lt;CipherOption&gt; getCipherOptions() throws IOException {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      // Negotiate cipher suites if configured. Currently, the only supported<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      // cipher suite is AES/CTR/NoPadding, but the protocol allows multiple<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      // values for future expansion.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      String cipherSuites = conf.get(DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      if (StringUtils.isBlank(cipherSuites)) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        return null;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      if (!cipherSuites.equals(CipherSuite.AES_CTR_NOPADDING.getName())) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        throw new IOException(String.format("Invalid cipher suite, %s=%s",<a name="line.395"></a>
+<span class="sourceLineNo">396</span>          DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY, cipherSuites));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      return Collections.singletonList(new CipherOption(CipherSuite.AES_CTR_NOPADDING));<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    private void sendSaslMessage(ChannelHandlerContext ctx, byte[] payload,<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        List&lt;CipherOption&gt; options) throws IOException {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      DataTransferEncryptorMessageProto.Builder builder =<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          DataTransferEncryptorMessageProto.newBuilder();<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      builder.setStatus(DataTransferEncryptorStatus.SUCCESS);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      if (payload != null) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        // Was ByteStringer; fix w/o using ByteStringer. Its in hbase-protocol<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        // and we want to keep that out of hbase-server.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        builder.setPayload(ByteString.copyFrom(payload));<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      if (options != null) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        builder.addAllCipherOption(PB_HELPER.convertCipherOptions(options));<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      DataTransferEncryptorMessageProto proto = builder.build();<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      int size = proto.getSerializedSize();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      size += CodedOutputStream.computeRawVarint32Size(size);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      ByteBuf buf = ctx.alloc().buffer(size);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      proto.writeDelimitedTo(new ByteBufOutputStream(buf));<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      ctx.write(buf);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>    @Override<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      ctx.write(ctx.alloc().buffer(4).writeInt(SASL_TRANSFER_MAGIC_NUMBER));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      sendSaslMessage(ctx, new byte[0]);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      ctx.flush();<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      step++;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    @Override<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      saslClient.dispose();<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>    private void check(DataTransferEncryptorMessageProto proto) throws IOException {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      if (proto.getStatus() == DataTransferEncryptorStatus.ERROR_UNKNOWN_KEY) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        throw new InvalidEncryptionKeyException(proto.getMessage());<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      } else if (proto.getStatus() == DataTransferEncryptorStatus.ERROR) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        throw new IOException(proto.getMessage());<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    private String getNegotiatedQop() {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>    private boolean isNegotiatedQopPrivacy() {<a name=

<TRUNCATED>

[50/51] [partial] hbase-site git commit: Published site at 0f23784182ab88649de340d75804e0ff20dcd0fc.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/bcb555af/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index bcdb7bd..ad73c3c 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,16 +5,16 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.0.alpha.15, based on Prawn 2.2.2)
 /Producer (Apache HBase Team)
-/ModDate (D:20180630170331+00'00')
-/CreationDate (D:20180630171914+00'00')
+/ModDate (D:20180703194659+00'00')
+/CreationDate (D:20180703200243+00'00')
 >>
 endobj
 2 0 obj
 << /Type /Catalog
 /Pages 3 0 R
 /Names 28 0 R
-/Outlines 4950 0 R
-/PageLabels 5201 0 R
+/Outlines 4951 0 R
+/PageLabels 5202 0 R
 /PageMode /UseOutlines
 /OpenAction [7 0 R /FitH 842.89]
 /ViewerPreferences << /DisplayDocTitle true
@@ -24,7 +24,7 @@ endobj
 3 0 obj
 << /Type /Pages
 /Count 777
-/Kids [7 0 R 12 0 R 14 0 R 16 0 R 18 0 R 20 0 R 22 0 R 24 0 R 26 0 R 46 0 R 49 0 R 52 0 R 56 0 R 63 0 R 65 0 R 69 0 R 71 0 R 73 0 R 80 0 R 83 0 R 85 0 R 91 0 R 94 0 R 96 0 R 98 0 R 105 0 R 112 0 R 117 0 R 119 0 R 135 0 R 140 0 R 148 0 R 157 0 R 165 0 R 174 0 R 185 0 R 189 0 R 191 0 R 195 0 R 204 0 R 213 0 R 221 0 R 230 0 R 235 0 R 244 0 R 252 0 R 261 0 R 274 0 R 281 0 R 291 0 R 299 0 R 307 0 R 314 0 R 322 0 R 329 0 R 335 0 R 342 0 R 350 0 R 359 0 R 368 0 R 382 0 R 389 0 R 397 0 R 404 0 R 412 0 R 421 0 R 431 0 R 439 0 R 446 0 R 455 0 R 467 0 R 477 0 R 484 0 R 491 0 R 499 0 R 508 0 R 516 0 R 521 0 R 525 0 R 530 0 R 534 0 R 550 0 R 561 0 R 565 0 R 580 0 R 585 0 R 590 0 R 592 0 R 594 0 R 597 0 R 599 0 R 601 0 R 609 0 R 615 0 R 618 0 R 622 0 R 631 0 R 642 0 R 650 0 R 654 0 R 658 0 R 660 0 R 670 0 R 685 0 R 692 0 R 703 0 R 713 0 R 724 0 R 736 0 R 756 0 R 766 0 R 773 0 R 777 0 R 783 0 R 786 0 R 790 0 R 794 0 R 797 0 R 800 0 R 802 0 R 805 0 R 809 0 R 811 0 R 815 0 R 821 0 R 826 0 R 830 0 R 
 833 0 R 839 0 R 841 0 R 845 0 R 853 0 R 855 0 R 858 0 R 861 0 R 864 0 R 867 0 R 881 0 R 889 0 R 900 0 R 911 0 R 917 0 R 927 0 R 938 0 R 941 0 R 945 0 R 948 0 R 953 0 R 962 0 R 970 0 R 974 0 R 978 0 R 983 0 R 987 0 R 989 0 R 1005 0 R 1016 0 R 1021 0 R 1028 0 R 1031 0 R 1039 0 R 1047 0 R 1052 0 R 1057 0 R 1062 0 R 1064 0 R 1066 0 R 1068 0 R 1078 0 R 1086 0 R 1090 0 R 1097 0 R 1104 0 R 1112 0 R 1116 0 R 1122 0 R 1127 0 R 1135 0 R 1139 0 R 1144 0 R 1146 0 R 1152 0 R 1160 0 R 1166 0 R 1173 0 R 1184 0 R 1188 0 R 1190 0 R 1192 0 R 1196 0 R 1199 0 R 1204 0 R 1207 0 R 1219 0 R 1223 0 R 1229 0 R 1237 0 R 1242 0 R 1246 0 R 1250 0 R 1252 0 R 1255 0 R 1258 0 R 1261 0 R 1265 0 R 1269 0 R 1273 0 R 1278 0 R 1282 0 R 1285 0 R 1287 0 R 1297 0 R 1300 0 R 1308 0 R 1317 0 R 1323 0 R 1327 0 R 1329 0 R 1340 0 R 1343 0 R 1349 0 R 1357 0 R 1360 0 R 1367 0 R 1374 0 R 1377 0 R 1379 0 R 1388 0 R 1390 0 R 1392 0 R 1395 0 R 1397 0 R 1399 0 R 1401 0 R 1403 0 R 1406 0 R 1410 0 R 1415 0 R 1417 0 R 1419 0 R 1421 0 R
  1426 0 R 1433 0 R 1439 0 R 1442 0 R 1444 0 R 1447 0 R 1451 0 R 1455 0 R 1458 0 R 1460 0 R 1462 0 R 1465 0 R 1470 0 R 1476 0 R 1484 0 R 1498 0 R 1512 0 R 1515 0 R 1520 0 R 1533 0 R 1538 0 R 1553 0 R 1561 0 R 1565 0 R 1574 0 R 1589 0 R 1603 0 R 1611 0 R 1616 0 R 1627 0 R 1632 0 R 1638 0 R 1644 0 R 1656 0 R 1659 0 R 1668 0 R 1671 0 R 1680 0 R 1686 0 R 1690 0 R 1702 0 R 1707 0 R 1713 0 R 1715 0 R 1722 0 R 1730 0 R 1738 0 R 1742 0 R 1744 0 R 1746 0 R 1758 0 R 1764 0 R 1773 0 R 1779 0 R 1792 0 R 1798 0 R 1804 0 R 1815 0 R 1821 0 R 1826 0 R 1831 0 R 1834 0 R 1837 0 R 1842 0 R 1847 0 R 1854 0 R 1858 0 R 1863 0 R 1872 0 R 1877 0 R 1882 0 R 1884 0 R 1893 0 R 1900 0 R 1906 0 R 1911 0 R 1915 0 R 1919 0 R 1924 0 R 1929 0 R 1935 0 R 1937 0 R 1939 0 R 1942 0 R 1953 0 R 1956 0 R 1963 0 R 1971 0 R 1976 0 R 1980 0 R 1985 0 R 1987 0 R 1990 0 R 1995 0 R 1998 0 R 2000 0 R 2003 0 R 2006 0 R 2009 0 R 2019 0 R 2024 0 R 2029 0 R 2031 0 R 2039 0 R 2046 0 R 2053 0 R 2059 0 R 2064 0 R 2066 0 R 2075 0 R 2085 0
  R 2095 0 R 2101 0 R 2108 0 R 2110 0 R 2115 0 R 2117 0 R 2119 0 R 2123 0 R 2126 0 R 2129 0 R 2134 0 R 2138 0 R 2149 0 R 2152 0 R 2155 0 R 2159 0 R 2163 0 R 2166 0 R 2168 0 R 2173 0 R 2176 0 R 2178 0 R 2183 0 R 2193 0 R 2195 0 R 2197 0 R 2199 0 R 2201 0 R 2204 0 R 2206 0 R 2208 0 R 2211 0 R 2213 0 R 2215 0 R 2219 0 R 2224 0 R 2233 0 R 2235 0 R 2237 0 R 2243 0 R 2245 0 R 2250 0 R 2252 0 R 2254 0 R 2261 0 R 2266 0 R 2270 0 R 2275 0 R 2279 0 R 2281 0 R 2283 0 R 2287 0 R 2290 0 R 2292 0 R 2294 0 R 2298 0 R 2300 0 R 2303 0 R 2305 0 R 2307 0 R 2309 0 R 2316 0 R 2319 0 R 2324 0 R 2326 0 R 2328 0 R 2330 0 R 2332 0 R 2340 0 R 2351 0 R 2365 0 R 2376 0 R 2380 0 R 2385 0 R 2389 0 R 2392 0 R 2397 0 R 2403 0 R 2405 0 R 2408 0 R 2410 0 R 2412 0 R 2414 0 R 2419 0 R 2421 0 R 2434 0 R 2437 0 R 2445 0 R 2451 0 R 2463 0 R 2477 0 R 2490 0 R 2509 0 R 2511 0 R 2513 0 R 2517 0 R 2535 0 R 2541 0 R 2553 0 R 2557 0 R 2561 0 R 2570 0 R 2582 0 R 2587 0 R 2597 0 R 2610 0 R 2629 0 R 2638 0 R 2641 0 R 2650 0 R 2667
  0 R 2674 0 R 2677 0 R 2682 0 R 2686 0 R 2689 0 R 2698 0 R 2707 0 R 2710 0 R 2712 0 R 2716 0 R 2730 0 R 2739 0 R 2744 0 R 2748 0 R 2751 0 R 2753 0 R 2755 0 R 2757 0 R 2762 0 R 2775 0 R 2785 0 R 2793 0 R 2799 0 R 2804 0 R 2815 0 R 2822 0 R 2828 0 R 2830 0 R 2839 0 R 2847 0 R 2849 0 R 2857 0 R 2865 0 R 2867 0 R 2876 0 R 2879 0 R 2889 0 R 2893 0 R 2902 0 R 2910 0 R 2915 0 R 2919 0 R 2923 0 R 2925 0 R 2931 0 R 2935 0 R 2939 0 R 2945 0 R 2951 0 R 2954 0 R 2960 0 R 2964 0 R 2973 0 R 2978 0 R 2984 0 R 2994 0 R 3001 0 R 3008 0 R 3011 0 R 3014 0 R 3021 0 R 3026 0 R 3029 0 R 3034 0 R 3044 0 R 3049 0 R 3051 0 R 3055 0 R 3062 0 R 3065 0 R 3076 0 R 3079 0 R 3086 0 R 3094 0 R 3100 0 R 3105 0 R 3114 0 R 3119 0 R 3123 0 R 3131 0 R 3136 0 R 3140 0 R 3142 0 R 3153 0 R 3158 0 R 3161 0 R 3163 0 R 3165 0 R 3175 0 R 3182 0 R 3186 0 R 3189 0 R 3196 0 R 3200 0 R 3203 0 R 3207 0 R 3212 0 R 3220 0 R 3225 0 R 3230 0 R 3235 0 R 3237 0 R 3240 0 R 3242 0 R 3246 0 R 3257 0 R 3259 0 R 3263 0 R 3266 0 R 3270 0 R 32
 73 0 R 3277 0 R 3279 0 R 3292 0 R 3297 0 R 3302 0 R 3308 0 R 3316 0 R 3318 0 R 3326 0 R 3344 0 R 3356 0 R 3362 0 R 3378 0 R 3382 0 R 3387 0 R 3389 0 R 3396 0 R 3399 0 R 3404 0 R 3407 0 R 3409 0 R 3411 0 R 3413 0 R 3416 0 R 3434 0 R 3437 0 R 3442 0 R 3448 0 R 3458 0 R 3463 0 R 3473 0 R 3483 0 R 3491 0 R 3496 0 R 3502 0 R 3507 0 R 3510 0 R 3518 0 R 3522 0 R 3527 0 R 3532 0 R 3545 0 R 3548 0 R 3554 0 R 3560 0 R 3565 0 R 3574 0 R 3583 0 R 3589 0 R 3598 0 R 3607 0 R 3612 0 R 3618 0 R 3624 0 R 3628 0 R 3630 0 R 3636 0 R 3643 0 R 3645 0 R 3652 0 R 3654 0 R 3661 0 R 3669 0 R 3675 0 R 3684 0 R 3690 0 R 3701 0 R 3710 0 R 3722 0 R 3735 0 R 3738 0 R 3740 0 R 3744 0 R 3757 0 R 3763 0 R 3768 0 R 3774 0 R 3778 0 R 3781 0 R 3786 0 R 3788 0 R 3792 0 R 3794 0 R 3798 0 R 3801 0 R 3804 0 R 3812 0 R 3814 0 R 3820 0 R 3823 0 R 3829 0 R 3833 0 R 3836 0 R 3839 0 R 3842 0 R 3846 0 R 3849 0 R 3854 0 R 3859 0 R 3862 0 R 3870 0 R 3874 0 R 3878 0 R 3880 0 R 3883 0 R 3886 0 R 3891 0 R 3898 0 R 3904 0 R 3908 0 R 
 3911 0 R 3918 0 R 3926 0 R 3930 0 R 3933 0 R 3935 0 R 3939 0 R 3944 0 R 3949 0 R 3952 0 R 3961 0 R 3966 0 R 3970 0 R 3973 0 R 3981 0 R 3986 0 R 3994 0 R 3999 0 R 4001 0 R 4007 0 R 4009 0 R 4014 0 R 4018 0 R 4023 0 R 4027 0 R 4039 0 R 4055 0 R 4070 0 R 4075 0 R 4078 0 R 4081 0 R 4087 0 R 4092 0 R 4094 0 R 4096 0 R 4098 0 R 4100 0 R 4102 0 R 4111 0 R 4115 0 R 4119 0 R 4123 0 R 4125 0 R 4132 0 R 4142 0 R 4151 0 R 4154 0 R 4157 0 R 4159 0 R 4166 0 R 4173 0 R 4183 0 R 4187 0 R 4190 0 R 4194 0 R 4197 0 R 4203 0 R 4206 0 R 4221 0 R 4226 0 R 4249 0 R 4253 0 R 4260 0 R 4271 0 R 4280 0 R 4283 0 R 4286 0 R 4289 0 R 4305 0 R 4310 0 R 4317 0 R 4320 0 R 4323 0 R 4330 0 R 4335 0 R 4339 0 R 4341 0 R 4348 0 R 4355 0 R 4363 0 R 4367 0 R 4372 0 R 4377 0 R 4383 0 R 4390 0 R 4397 0 R 4403 0 R 4411 0 R 4419 0 R 4423 0 R 4432 0 R 4441 0 R 4447 0 R]
+/Kids [7 0 R 12 0 R 14 0 R 16 0 R 18 0 R 20 0 R 22 0 R 24 0 R 26 0 R 46 0 R 49 0 R 52 0 R 56 0 R 63 0 R 65 0 R 69 0 R 71 0 R 73 0 R 80 0 R 83 0 R 85 0 R 91 0 R 94 0 R 96 0 R 98 0 R 105 0 R 112 0 R 117 0 R 119 0 R 135 0 R 140 0 R 148 0 R 157 0 R 165 0 R 174 0 R 185 0 R 189 0 R 191 0 R 195 0 R 204 0 R 213 0 R 221 0 R 230 0 R 235 0 R 244 0 R 252 0 R 261 0 R 274 0 R 281 0 R 291 0 R 299 0 R 307 0 R 314 0 R 322 0 R 329 0 R 335 0 R 342 0 R 350 0 R 359 0 R 368 0 R 382 0 R 389 0 R 397 0 R 404 0 R 412 0 R 421 0 R 431 0 R 439 0 R 446 0 R 455 0 R 467 0 R 477 0 R 484 0 R 491 0 R 499 0 R 508 0 R 516 0 R 521 0 R 525 0 R 530 0 R 534 0 R 550 0 R 561 0 R 565 0 R 580 0 R 585 0 R 590 0 R 592 0 R 594 0 R 597 0 R 599 0 R 601 0 R 609 0 R 615 0 R 618 0 R 622 0 R 631 0 R 642 0 R 650 0 R 654 0 R 658 0 R 660 0 R 670 0 R 685 0 R 692 0 R 703 0 R 713 0 R 724 0 R 736 0 R 756 0 R 766 0 R 773 0 R 777 0 R 783 0 R 786 0 R 790 0 R 794 0 R 797 0 R 800 0 R 802 0 R 805 0 R 809 0 R 811 0 R 815 0 R 821 0 R 826 0 R 830 0 R 
 833 0 R 839 0 R 841 0 R 845 0 R 853 0 R 855 0 R 858 0 R 861 0 R 864 0 R 867 0 R 881 0 R 889 0 R 900 0 R 911 0 R 917 0 R 927 0 R 938 0 R 941 0 R 945 0 R 948 0 R 953 0 R 962 0 R 970 0 R 974 0 R 978 0 R 983 0 R 987 0 R 989 0 R 1005 0 R 1016 0 R 1021 0 R 1028 0 R 1031 0 R 1039 0 R 1047 0 R 1052 0 R 1057 0 R 1062 0 R 1064 0 R 1066 0 R 1068 0 R 1078 0 R 1086 0 R 1090 0 R 1097 0 R 1104 0 R 1112 0 R 1116 0 R 1122 0 R 1127 0 R 1135 0 R 1139 0 R 1144 0 R 1146 0 R 1152 0 R 1160 0 R 1166 0 R 1173 0 R 1184 0 R 1188 0 R 1190 0 R 1192 0 R 1196 0 R 1199 0 R 1204 0 R 1207 0 R 1219 0 R 1223 0 R 1229 0 R 1237 0 R 1242 0 R 1246 0 R 1250 0 R 1252 0 R 1255 0 R 1258 0 R 1261 0 R 1265 0 R 1269 0 R 1273 0 R 1278 0 R 1282 0 R 1285 0 R 1287 0 R 1297 0 R 1300 0 R 1308 0 R 1317 0 R 1323 0 R 1327 0 R 1329 0 R 1340 0 R 1343 0 R 1349 0 R 1357 0 R 1360 0 R 1367 0 R 1374 0 R 1377 0 R 1379 0 R 1388 0 R 1390 0 R 1392 0 R 1395 0 R 1397 0 R 1399 0 R 1401 0 R 1403 0 R 1406 0 R 1410 0 R 1415 0 R 1417 0 R 1419 0 R 1421 0 R
  1426 0 R 1433 0 R 1439 0 R 1442 0 R 1444 0 R 1447 0 R 1451 0 R 1455 0 R 1458 0 R 1460 0 R 1462 0 R 1465 0 R 1470 0 R 1476 0 R 1484 0 R 1498 0 R 1512 0 R 1515 0 R 1520 0 R 1533 0 R 1538 0 R 1553 0 R 1561 0 R 1565 0 R 1574 0 R 1589 0 R 1603 0 R 1611 0 R 1616 0 R 1627 0 R 1632 0 R 1638 0 R 1644 0 R 1656 0 R 1659 0 R 1668 0 R 1671 0 R 1680 0 R 1686 0 R 1690 0 R 1702 0 R 1707 0 R 1713 0 R 1715 0 R 1722 0 R 1730 0 R 1738 0 R 1742 0 R 1744 0 R 1746 0 R 1758 0 R 1764 0 R 1773 0 R 1779 0 R 1792 0 R 1798 0 R 1804 0 R 1815 0 R 1821 0 R 1826 0 R 1831 0 R 1834 0 R 1837 0 R 1842 0 R 1847 0 R 1854 0 R 1858 0 R 1863 0 R 1872 0 R 1877 0 R 1882 0 R 1884 0 R 1893 0 R 1900 0 R 1906 0 R 1912 0 R 1916 0 R 1920 0 R 1925 0 R 1930 0 R 1936 0 R 1938 0 R 1940 0 R 1943 0 R 1954 0 R 1957 0 R 1964 0 R 1972 0 R 1977 0 R 1981 0 R 1986 0 R 1988 0 R 1991 0 R 1996 0 R 1999 0 R 2001 0 R 2004 0 R 2007 0 R 2010 0 R 2020 0 R 2025 0 R 2030 0 R 2032 0 R 2040 0 R 2047 0 R 2054 0 R 2060 0 R 2065 0 R 2067 0 R 2076 0 R 2086 0
  R 2096 0 R 2102 0 R 2109 0 R 2111 0 R 2116 0 R 2118 0 R 2120 0 R 2124 0 R 2127 0 R 2130 0 R 2135 0 R 2139 0 R 2150 0 R 2153 0 R 2156 0 R 2160 0 R 2164 0 R 2167 0 R 2169 0 R 2174 0 R 2177 0 R 2179 0 R 2184 0 R 2194 0 R 2196 0 R 2198 0 R 2200 0 R 2202 0 R 2205 0 R 2207 0 R 2209 0 R 2212 0 R 2214 0 R 2216 0 R 2220 0 R 2225 0 R 2234 0 R 2236 0 R 2238 0 R 2244 0 R 2246 0 R 2251 0 R 2253 0 R 2255 0 R 2262 0 R 2267 0 R 2271 0 R 2276 0 R 2280 0 R 2282 0 R 2284 0 R 2288 0 R 2291 0 R 2293 0 R 2295 0 R 2299 0 R 2301 0 R 2304 0 R 2306 0 R 2308 0 R 2310 0 R 2317 0 R 2320 0 R 2325 0 R 2327 0 R 2329 0 R 2331 0 R 2333 0 R 2341 0 R 2352 0 R 2366 0 R 2377 0 R 2381 0 R 2386 0 R 2390 0 R 2393 0 R 2398 0 R 2404 0 R 2406 0 R 2409 0 R 2411 0 R 2413 0 R 2415 0 R 2420 0 R 2422 0 R 2435 0 R 2438 0 R 2446 0 R 2452 0 R 2464 0 R 2478 0 R 2491 0 R 2510 0 R 2512 0 R 2514 0 R 2518 0 R 2536 0 R 2542 0 R 2554 0 R 2558 0 R 2562 0 R 2571 0 R 2583 0 R 2588 0 R 2598 0 R 2611 0 R 2630 0 R 2639 0 R 2642 0 R 2651 0 R 2668
  0 R 2675 0 R 2678 0 R 2683 0 R 2687 0 R 2690 0 R 2699 0 R 2708 0 R 2711 0 R 2713 0 R 2717 0 R 2731 0 R 2740 0 R 2745 0 R 2749 0 R 2752 0 R 2754 0 R 2756 0 R 2758 0 R 2763 0 R 2776 0 R 2786 0 R 2794 0 R 2800 0 R 2805 0 R 2816 0 R 2823 0 R 2829 0 R 2831 0 R 2840 0 R 2848 0 R 2850 0 R 2858 0 R 2866 0 R 2868 0 R 2877 0 R 2880 0 R 2890 0 R 2894 0 R 2903 0 R 2911 0 R 2916 0 R 2920 0 R 2924 0 R 2926 0 R 2932 0 R 2936 0 R 2940 0 R 2946 0 R 2952 0 R 2955 0 R 2961 0 R 2965 0 R 2974 0 R 2979 0 R 2985 0 R 2995 0 R 3002 0 R 3009 0 R 3012 0 R 3015 0 R 3022 0 R 3027 0 R 3030 0 R 3035 0 R 3045 0 R 3050 0 R 3052 0 R 3056 0 R 3063 0 R 3066 0 R 3077 0 R 3080 0 R 3087 0 R 3095 0 R 3101 0 R 3106 0 R 3115 0 R 3120 0 R 3124 0 R 3132 0 R 3137 0 R 3141 0 R 3143 0 R 3154 0 R 3159 0 R 3162 0 R 3164 0 R 3166 0 R 3176 0 R 3183 0 R 3187 0 R 3190 0 R 3197 0 R 3201 0 R 3204 0 R 3208 0 R 3213 0 R 3221 0 R 3226 0 R 3231 0 R 3236 0 R 3238 0 R 3241 0 R 3243 0 R 3247 0 R 3258 0 R 3260 0 R 3264 0 R 3267 0 R 3271 0 R 32
 74 0 R 3278 0 R 3280 0 R 3293 0 R 3298 0 R 3303 0 R 3309 0 R 3317 0 R 3319 0 R 3327 0 R 3345 0 R 3357 0 R 3363 0 R 3379 0 R 3383 0 R 3388 0 R 3390 0 R 3397 0 R 3400 0 R 3405 0 R 3408 0 R 3410 0 R 3412 0 R 3414 0 R 3417 0 R 3435 0 R 3438 0 R 3443 0 R 3449 0 R 3459 0 R 3464 0 R 3474 0 R 3484 0 R 3492 0 R 3497 0 R 3503 0 R 3508 0 R 3511 0 R 3519 0 R 3523 0 R 3528 0 R 3533 0 R 3546 0 R 3549 0 R 3555 0 R 3561 0 R 3566 0 R 3575 0 R 3584 0 R 3590 0 R 3599 0 R 3608 0 R 3613 0 R 3619 0 R 3625 0 R 3629 0 R 3631 0 R 3637 0 R 3644 0 R 3646 0 R 3653 0 R 3655 0 R 3662 0 R 3670 0 R 3676 0 R 3685 0 R 3691 0 R 3702 0 R 3711 0 R 3723 0 R 3736 0 R 3739 0 R 3741 0 R 3745 0 R 3758 0 R 3764 0 R 3769 0 R 3775 0 R 3779 0 R 3782 0 R 3787 0 R 3789 0 R 3793 0 R 3795 0 R 3799 0 R 3802 0 R 3805 0 R 3813 0 R 3815 0 R 3821 0 R 3824 0 R 3830 0 R 3834 0 R 3837 0 R 3840 0 R 3843 0 R 3847 0 R 3850 0 R 3855 0 R 3860 0 R 3863 0 R 3871 0 R 3875 0 R 3879 0 R 3881 0 R 3884 0 R 3887 0 R 3892 0 R 3899 0 R 3905 0 R 3909 0 R 
 3912 0 R 3919 0 R 3927 0 R 3931 0 R 3934 0 R 3936 0 R 3940 0 R 3945 0 R 3950 0 R 3953 0 R 3962 0 R 3967 0 R 3971 0 R 3974 0 R 3982 0 R 3987 0 R 3995 0 R 4000 0 R 4002 0 R 4008 0 R 4010 0 R 4015 0 R 4019 0 R 4024 0 R 4028 0 R 4040 0 R 4056 0 R 4071 0 R 4076 0 R 4079 0 R 4082 0 R 4088 0 R 4093 0 R 4095 0 R 4097 0 R 4099 0 R 4101 0 R 4103 0 R 4112 0 R 4116 0 R 4120 0 R 4124 0 R 4126 0 R 4133 0 R 4143 0 R 4152 0 R 4155 0 R 4158 0 R 4160 0 R 4167 0 R 4174 0 R 4184 0 R 4188 0 R 4191 0 R 4195 0 R 4198 0 R 4204 0 R 4207 0 R 4222 0 R 4227 0 R 4250 0 R 4254 0 R 4261 0 R 4272 0 R 4281 0 R 4284 0 R 4287 0 R 4290 0 R 4306 0 R 4311 0 R 4318 0 R 4321 0 R 4324 0 R 4331 0 R 4336 0 R 4340 0 R 4342 0 R 4349 0 R 4356 0 R 4364 0 R 4368 0 R 4373 0 R 4378 0 R 4384 0 R 4391 0 R 4398 0 R 4404 0 R 4412 0 R 4420 0 R 4424 0 R 4433 0 R 4442 0 R 4448 0 R]
 >>
 endobj
 4 0 obj
@@ -187,11 +187,11 @@ endobj
 << /Type /Font
 /BaseFont /71be00+NotoSerif
 /Subtype /TrueType
-/FontDescriptor 5203 0 R
+/FontDescriptor 5204 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5205 0 R
-/ToUnicode 5204 0 R
+/Widths 5206 0 R
+/ToUnicode 5205 0 R
 >>
 endobj
 11 0 obj
@@ -1750,7 +1750,7 @@ endobj
 /F1.0 10 0 R
 >>
 >>
-/Annots [4448 0 R 4449 0 R 4450 0 R 4451 0 R 4452 0 R 4453 0 R 4454 0 R 4455 0 R 4456 0 R 4457 0 R 4458 0 R 4459 0 R 4460 0 R 4461 0 R 4462 0 R 4463 0 R 4464 0 R 4465 0 R 4466 0 R 4467 0 R 4468 0 R 4469 0 R 4470 0 R 4471 0 R 4472 0 R 4473 0 R 4474 0 R 4475 0 R 4476 0 R 4477 0 R 4478 0 R 4479 0 R 4480 0 R 4481 0 R 4482 0 R 4483 0 R 4484 0 R 4485 0 R 4486 0 R 4487 0 R 4488 0 R 4489 0 R 4490 0 R 4491 0 R 4492 0 R 4493 0 R 4494 0 R 4495 0 R 4496 0 R 4497 0 R 4498 0 R 4499 0 R 4500 0 R 4501 0 R 4502 0 R 4503 0 R 4504 0 R 4505 0 R 4506 0 R 4507 0 R 4508 0 R 4509 0 R 4510 0 R 4511 0 R 4512 0 R 4513 0 R 4514 0 R 4515 0 R 4516 0 R 4517 0 R 4518 0 R 4519 0 R 4520 0 R 4521 0 R 4522 0 R 4523 0 R]
+/Annots [4449 0 R 4450 0 R 4451 0 R 4452 0 R 4453 0 R 4454 0 R 4455 0 R 4456 0 R 4457 0 R 4458 0 R 4459 0 R 4460 0 R 4461 0 R 4462 0 R 4463 0 R 4464 0 R 4465 0 R 4466 0 R 4467 0 R 4468 0 R 4469 0 R 4470 0 R 4471 0 R 4472 0 R 4473 0 R 4474 0 R 4475 0 R 4476 0 R 4477 0 R 4478 0 R 4479 0 R 4480 0 R 4481 0 R 4482 0 R 4483 0 R 4484 0 R 4485 0 R 4486 0 R 4487 0 R 4488 0 R 4489 0 R 4490 0 R 4491 0 R 4492 0 R 4493 0 R 4494 0 R 4495 0 R 4496 0 R 4497 0 R 4498 0 R 4499 0 R 4500 0 R 4501 0 R 4502 0 R 4503 0 R 4504 0 R 4505 0 R 4506 0 R 4507 0 R 4508 0 R 4509 0 R 4510 0 R 4511 0 R 4512 0 R 4513 0 R 4514 0 R 4515 0 R 4516 0 R 4517 0 R 4518 0 R 4519 0 R 4520 0 R 4521 0 R 4522 0 R 4523 0 R 4524 0 R]
 >>
 endobj
 13 0 obj
@@ -3417,7 +3417,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4524 0 R 4525 0 R 4526 0 R 4527 0 R 4528 0 R 4529 0 R 4530 0 R 4531 0 R 4532 0 R 4533 0 R 4534 0 R 4535 0 R 4536 0 R 4537 0 R 4538 0 R 4539 0 R 4540 0 R 4541 0 R 4542 0 R 4543 0 R 4544 0 R 4545 0 R 4546 0 R 4547 0 R 4548 0 R 4549 0 R 4550 0 R 4551 0 R 4552 0 R 4553 0 R 4554 0 R 4555 0 R 4556 0 R 4557 0 R 4558 0 R 4559 0 R 4560 0 R 4561 0 R 4562 0 R 4563 0 R 4564 0 R 4565 0 R 4566 0 R 4567 0 R 4568 0 R 4569 0 R 4570 0 R 4571 0 R 4572 0 R 4573 0 R 4574 0 R 4575 0 R 4576 0 R 4577 0 R 4578 0 R 4579 0 R 4580 0 R 4581 0 R 4582 0 R 4583 0 R 4584 0 R 4585 0 R 4586 0 R 4587 0 R 4588 0 R 4589 0 R 4590 0 R 4591 0 R 4592 0 R 4593 0 R 4594 0 R 4595 0 R 4596 0 R 4597 0 R 4598 0 R 4599 0 R 4600 0 R 4601 0 R 4602 0 R 4603 0 R 4604 0 R 4605 0 R]
+/Annots [4525 0 R 4526 0 R 4527 0 R 4528 0 R 4529 0 R 4530 0 R 4531 0 R 4532 0 R 4533 0 R 4534 0 R 4535 0 R 4536 0 R 4537 0 R 4538 0 R 4539 0 R 4540 0 R 4541 0 R 4542 0 R 4543 0 R 4544 0 R 4545 0 R 4546 0 R 4547 0 R 4548 0 R 4549 0 R 4550 0 R 4551 0 R 4552 0 R 4553 0 R 4554 0 R 4555 0 R 4556 0 R 4557 0 R 4558 0 R 4559 0 R 4560 0 R 4561 0 R 4562 0 R 4563 0 R 4564 0 R 4565 0 R 4566 0 R 4567 0 R 4568 0 R 4569 0 R 4570 0 R 4571 0 R 4572 0 R 4573 0 R 4574 0 R 4575 0 R 4576 0 R 4577 0 R 4578 0 R 4579 0 R 4580 0 R 4581 0 R 4582 0 R 4583 0 R 4584 0 R 4585 0 R 4586 0 R 4587 0 R 4588 0 R 4589 0 R 4590 0 R 4591 0 R 4592 0 R 4593 0 R 4594 0 R 4595 0 R 4596 0 R 4597 0 R 4598 0 R 4599 0 R 4600 0 R 4601 0 R 4602 0 R 4603 0 R 4604 0 R 4605 0 R 4606 0 R]
 >>
 endobj
 15 0 obj
@@ -5084,7 +5084,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4606 0 R 4607 0 R 4608 0 R 4609 0 R 4610 0 R 4611 0 R 4612 0 R 4613 0 R 4614 0 R 4615 0 R 4616 0 R 4617 0 R 4618 0 R 4619 0 R 4620 0 R 4621 0 R 4622 0 R 4623 0 R 4624 0 R 4625 0 R 4626 0 R 4627 0 R 4628 0 R 4629 0 R 4630 0 R 4631 0 R 4632 0 R 4633 0 R 4634 0 R 4635 0 R 4636 0 R 4637 0 R 4638 0 R 4639 0 R 4640 0 R 4641 0 R 4642 0 R 4643 0 R 4644 0 R 4645 0 R 4646 0 R 4647 0 R 4648 0 R 4649 0 R 4650 0 R 4651 0 R 4652 0 R 4653 0 R 4654 0 R 4655 0 R 4656 0 R 4657 0 R 4658 0 R 4659 0 R 4660 0 R 4661 0 R 4662 0 R 4663 0 R 4664 0 R 4665 0 R 4666 0 R 4667 0 R 4668 0 R 4669 0 R 4670 0 R 4671 0 R 4672 0 R 4673 0 R 4674 0 R 4675 0 R 4676 0 R 4677 0 R 4678 0 R 4679 0 R 4680 0 R 4681 0 R 4682 0 R 4683 0 R 4684 0 R 4685 0 R 4686 0 R 4687 0 R]
+/Annots [4607 0 R 4608 0 R 4609 0 R 4610 0 R 4611 0 R 4612 0 R 4613 0 R 4614 0 R 4615 0 R 4616 0 R 4617 0 R 4618 0 R 4619 0 R 4620 0 R 4621 0 R 4622 0 R 4623 0 R 4624 0 R 4625 0 R 4626 0 R 4627 0 R 4628 0 R 4629 0 R 4630 0 R 4631 0 R 4632 0 R 4633 0 R 4634 0 R 4635 0 R 4636 0 R 4637 0 R 4638 0 R 4639 0 R 4640 0 R 4641 0 R 4642 0 R 4643 0 R 4644 0 R 4645 0 R 4646 0 R 4647 0 R 4648 0 R 4649 0 R 4650 0 R 4651 0 R 4652 0 R 4653 0 R 4654 0 R 4655 0 R 4656 0 R 4657 0 R 4658 0 R 4659 0 R 4660 0 R 4661 0 R 4662 0 R 4663 0 R 4664 0 R 4665 0 R 4666 0 R 4667 0 R 4668 0 R 4669 0 R 4670 0 R 4671 0 R 4672 0 R 4673 0 R 4674 0 R 4675 0 R 4676 0 R 4677 0 R 4678 0 R 4679 0 R 4680 0 R 4681 0 R 4682 0 R 4683 0 R 4684 0 R 4685 0 R 4686 0 R 4687 0 R 4688 0 R]
 >>
 endobj
 17 0 obj
@@ -6751,7 +6751,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4688 0 R 4689 0 R 4690 0 R 4691 0 R 4692 0 R 4693 0 R 4694 0 R 4695 0 R 4696 0 R 4697 0 R 4698 0 R 4699 0 R 4700 0 R 4701 0 R 4702 0 R 4703 0 R 4704 0 R 4705 0 R 4706 0 R 4707 0 R 4708 0 R 4709 0 R 4710 0 R 4711 0 R 4712 0 R 4713 0 R 4714 0 R 4715 0 R 4716 0 R 4717 0 R 4718 0 R 4719 0 R 4720 0 R 4721 0 R 4722 0 R 4723 0 R 4724 0 R 4725 0 R 4726 0 R 4727 0 R 4728 0 R 4729 0 R 4730 0 R 4731 0 R 4732 0 R 4733 0 R 4734 0 R 4735 0 R 4736 0 R 4737 0 R 4738 0 R 4739 0 R 4740 0 R 4741 0 R 4742 0 R 4743 0 R 4744 0 R 4745 0 R 4746 0 R 4747 0 R 4748 0 R 4749 0 R 4750 0 R 4751 0 R 4752 0 R 4753 0 R 4754 0 R 4755 0 R 4756 0 R 4757 0 R 4758 0 R 4759 0 R 4760 0 R 4761 0 R 4762 0 R 4763 0 R 4764 0 R 4765 0 R 4766 0 R 4767 0 R 4768 0 R 4769 0 R]
+/Annots [4689 0 R 4690 0 R 4691 0 R 4692 0 R 4693 0 R 4694 0 R 4695 0 R 4696 0 R 4697 0 R 4698 0 R 4699 0 R 4700 0 R 4701 0 R 4702 0 R 4703 0 R 4704 0 R 4705 0 R 4706 0 R 4707 0 R 4708 0 R 4709 0 R 4710 0 R 4711 0 R 4712 0 R 4713 0 R 4714 0 R 4715 0 R 4716 0 R 4717 0 R 4718 0 R 4719 0 R 4720 0 R 4721 0 R 4722 0 R 4723 0 R 4724 0 R 4725 0 R 4726 0 R 4727 0 R 4728 0 R 4729 0 R 4730 0 R 4731 0 R 4732 0 R 4733 0 R 4734 0 R 4735 0 R 4736 0 R 4737 0 R 4738 0 R 4739 0 R 4740 0 R 4741 0 R 4742 0 R 4743 0 R 4744 0 R 4745 0 R 4746 0 R 4747 0 R 4748 0 R 4749 0 R 4750 0 R 4751 0 R 4752 0 R 4753 0 R 4754 0 R 4755 0 R 4756 0 R 4757 0 R 4758 0 R 4759 0 R 4760 0 R 4761 0 R 4762 0 R 4763 0 R 4764 0 R 4765 0 R 4766 0 R 4767 0 R 4768 0 R 4769 0 R 4770 0 R]
 >>
 endobj
 19 0 obj
@@ -8429,7 +8429,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4770 0 R 4771 0 R 4772 0 R 4773 0 R 4774 0 R 4775 0 R 4776 0 R 4777 0 R 4778 0 R 4779 0 R 4780 0 R 4781 0 R 4782 0 R 4783 0 R 4784 0 R 4785 0 R 4786 0 R 4787 0 R 4788 0 R 4789 0 R 4790 0 R 4791 0 R 4792 0 R 4793 0 R 4794 0 R 4795 0 R 4796 0 R 4797 0 R 4798 0 R 4799 0 R 4800 0 R 4801 0 R 4802 0 R 4803 0 R 4804 0 R 4805 0 R 4806 0 R 4807 0 R 4808 0 R 4809 0 R 4810 0 R 4811 0 R 4812 0 R 4813 0 R 4814 0 R 4815 0 R 4816 0 R 4817 0 R 4818 0 R 4819 0 R 4820 0 R 4821 0 R 4822 0 R 4823 0 R 4824 0 R 4825 0 R 4826 0 R 4827 0 R 4828 0 R 4829 0 R 4830 0 R 4831 0 R 4832 0 R 4833 0 R 4834 0 R 4835 0 R 4836 0 R 4837 0 R 4838 0 R 4839 0 R 4840 0 R 4841 0 R 4842 0 R 4843 0 R 4844 0 R 4845 0 R 4846 0 R 4847 0 R 4848 0 R 4849 0 R 4850 0 R 4851 0 R 4852 0 R 4853 0 R]
+/Annots [4771 0 R 4772 0 R 4773 0 R 4774 0 R 4775 0 R 4776 0 R 4777 0 R 4778 0 R 4779 0 R 4780 0 R 4781 0 R 4782 0 R 4783 0 R 4784 0 R 4785 0 R 4786 0 R 4787 0 R 4788 0 R 4789 0 R 4790 0 R 4791 0 R 4792 0 R 4793 0 R 4794 0 R 4795 0 R 4796 0 R 4797 0 R 4798 0 R 4799 0 R 4800 0 R 4801 0 R 4802 0 R 4803 0 R 4804 0 R 4805 0 R 4806 0 R 4807 0 R 4808 0 R 4809 0 R 4810 0 R 4811 0 R 4812 0 R 4813 0 R 4814 0 R 4815 0 R 4816 0 R 4817 0 R 4818 0 R 4819 0 R 4820 0 R 4821 0 R 4822 0 R 4823 0 R 4824 0 R 4825 0 R 4826 0 R 4827 0 R 4828 0 R 4829 0 R 4830 0 R 4831 0 R 4832 0 R 4833 0 R 4834 0 R 4835 0 R 4836 0 R 4837 0 R 4838 0 R 4839 0 R 4840 0 R 4841 0 R 4842 0 R 4843 0 R 4844 0 R 4845 0 R 4846 0 R 4847 0 R 4848 0 R 4849 0 R 4850 0 R 4851 0 R 4852 0 R 4853 0 R 4854 0 R]
 >>
 endobj
 21 0 obj
@@ -10107,7 +10107,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4854 0 R 4855 0 R 4856 0 R 4857 0 R 4858 0 R 4859 0 R 4860 0 R 4861 0 R 4862 0 R 4863 0 R 4864 0 R 4865 0 R 4866 0 R 4867 0 R 4868 0 R 4869 0 R 4870 0 R 4871 0 R 4872 0 R 4873 0 R 4874 0 R 4875 0 R 4876 0 R 4877 0 R 4878 0 R 4879 0 R 4880 0 R 4881 0 R 4882 0 R 4883 0 R 4884 0 R 4885 0 R 4886 0 R 4887 0 R 4888 0 R 4889 0 R 4890 0 R 4891 0 R 4892 0 R 4893 0 R 4894 0 R 4895 0 R 4896 0 R 4897 0 R 4898 0 R 4899 0 R 4900 0 R 4901 0 R 4902 0 R 4903 0 R 4904 0 R 4905 0 R 4906 0 R 4907 0 R 4908 0 R 4909 0 R 4910 0 R 4911 0 R 4912 0 R 4913 0 R 4914 0 R 4915 0 R 4916 0 R 4917 0 R 4918 0 R 4919 0 R 4920 0 R 4921 0 R 4922 0 R 4923 0 R 4924 0 R 4925 0 R 4926 0 R 4927 0 R 4928 0 R 4929 0 R 4930 0 R 4931 0 R 4932 0 R 4933 0 R 4934 0 R 4935 0 R 4936 0 R 4937 0 R]
+/Annots [4855 0 R 4856 0 R 4857 0 R 4858 0 R 4859 0 R 4860 0 R 4861 0 R 4862 0 R 4863 0 R 4864 0 R 4865 0 R 4866 0 R 4867 0 R 4868 0 R 4869 0 R 4870 0 R 4871 0 R 4872 0 R 4873 0 R 4874 0 R 4875 0 R 4876 0 R 4877 0 R 4878 0 R 4879 0 R 4880 0 R 4881 0 R 4882 0 R 4883 0 R 4884 0 R 4885 0 R 4886 0 R 4887 0 R 4888 0 R 4889 0 R 4890 0 R 4891 0 R 4892 0 R 4893 0 R 4894 0 R 4895 0 R 4896 0 R 4897 0 R 4898 0 R 4899 0 R 4900 0 R 4901 0 R 4902 0 R 4903 0 R 4904 0 R 4905 0 R 4906 0 R 4907 0 R 4908 0 R 4909 0 R 4910 0 R 4911 0 R 4912 0 R 4913 0 R 4914 0 R 4915 0 R 4916 0 R 4917 0 R 4918 0 R 4919 0 R 4920 0 R 4921 0 R 4922 0 R 4923 0 R 4924 0 R 4925 0 R 4926 0 R 4927 0 R 4928 0 R 4929 0 R 4930 0 R 4931 0 R 4932 0 R 4933 0 R 4934 0 R 4935 0 R 4936 0 R 4937 0 R 4938 0 R]
 >>
 endobj
 23 0 obj
@@ -10334,7 +10334,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4938 0 R 4939 0 R 4940 0 R 4941 0 R 4942 0 R 4943 0 R 4944 0 R 4945 0 R 4946 0 R 4947 0 R]
+/Annots [4939 0 R 4940 0 R 4941 0 R 4942 0 R 4943 0 R 4944 0 R 4945 0 R 4946 0 R 4947 0 R 4948 0 R]
 >>
 endobj
 25 0 obj
@@ -11146,7 +11146,7 @@ endobj
 /F4.0 37 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [32 0 R 33 0 R 34 0 R 36 0 R 38 0 R 39 0 R 41 0 R 42 0 R 43 0 R]
@@ -11161,7 +11161,7 @@ endobj
 >>
 endobj
 29 0 obj
-<< /Kids [645 0 R 3695 0 R 1946 0 R 646 0 R 4148 0 R 1176 0 R 2577 0 R 3921 0 R]
+<< /Kids [645 0 R 3696 0 R 1947 0 R 646 0 R 4149 0 R 1176 0 R 2578 0 R 3922 0 R]
 >>
 endobj
 30 0 obj
@@ -11171,11 +11171,11 @@ endobj
 << /Type /Font
 /BaseFont /309344+NotoSerif-Bold
 /Subtype /TrueType
-/FontDescriptor 5207 0 R
+/FontDescriptor 5208 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5209 0 R
-/ToUnicode 5208 0 R
+/Widths 5210 0 R
+/ToUnicode 5209 0 R
 >>
 endobj
 32 0 obj
@@ -11215,11 +11215,11 @@ endobj
 << /Type /Font
 /BaseFont /fbe45d+NotoSerif-Italic
 /Subtype /TrueType
-/FontDescriptor 5211 0 R
+/FontDescriptor 5212 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5213 0 R
-/ToUnicode 5212 0 R
+/Widths 5214 0 R
+/ToUnicode 5213 0 R
 >>
 endobj
 36 0 obj
@@ -11237,11 +11237,11 @@ endobj
 << /Type /Font
 /BaseFont /c7d210+mplus1mn-regular
 /Subtype /TrueType
-/FontDescriptor 5215 0 R
+/FontDescriptor 5216 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5217 0 R
-/ToUnicode 5216 0 R
+/Widths 5218 0 R
+/ToUnicode 5217 0 R
 >>
 endobj
 38 0 obj
@@ -11267,11 +11267,11 @@ endobj
 << /Type /Font
 /BaseFont /6bc580+NotoSerif
 /Subtype /TrueType
-/FontDescriptor 5219 0 R
+/FontDescriptor 5220 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5221 0 R
-/ToUnicode 5220 0 R
+/Widths 5222 0 R
+/ToUnicode 5221 0 R
 >>
 endobj
 41 0 obj
@@ -11705,7 +11705,7 @@ endobj
 /F5.1 47 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -11714,11 +11714,11 @@ endobj
 << /Type /Font
 /BaseFont /26ec65+FontAwesome
 /Subtype /TrueType
-/FontDescriptor 5223 0 R
+/FontDescriptor 5224 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5225 0 R
-/ToUnicode 5224 0 R
+/Widths 5226 0 R
+/ToUnicode 5225 0 R
 >>
 endobj
 48 0 obj
@@ -11776,7 +11776,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -11861,7 +11861,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [54 0 R]
@@ -13434,7 +13434,7 @@ endobj
 /F1.1 40 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [59 0 R 61 0 R]
@@ -14554,7 +14554,7 @@ endobj
 /F1.0 10 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -15433,7 +15433,7 @@ endobj
 /F3.0 35 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [66 0 R]
@@ -16223,7 +16223,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -16942,7 +16942,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -17818,7 +17818,7 @@ endobj
 /F2.0 31 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [75 0 R 76 0 R 77 0 R 78 0 R]
@@ -18808,7 +18808,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [81 0 R]
@@ -19731,7 +19731,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -21242,7 +21242,7 @@ endobj
 /F4.0 37 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [86 0 R 88 0 R]
@@ -22590,7 +22590,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [92 0 R]
@@ -23664,7 +23664,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -24387,7 +24387,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -25026,7 +25026,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [99 0 R 100 0 R 101 0 R 103 0 R]
@@ -25270,7 +25270,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [107 0 R 108 0 R 109 0 R 110 0 R]
@@ -26142,7 +26142,7 @@ endobj
 /F4.0 37 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [114 0 R 115 0 R]
@@ -26422,7 +26422,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -27902,7 +27902,7 @@ endobj
 /F5.1 47 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R 128 0 R 130 0 R 131 0 R 132 0 R 133 0 R]
@@ -28942,7 +28942,7 @@ endobj
 /F2.0 31 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [136 0 R 138 0 R]
@@ -29695,7 +29695,7 @@ endobj
 /F2.0 31 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [141 0 R 143 0 R 144 0 R 145 0 R 146 0 R]
@@ -33197,7 +33197,7 @@ endobj
 /F2.0 31 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R]
@@ -33998,7 +33998,7 @@ endobj
 /F2.0 31 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [161 0 R 162 0 R]
@@ -34009,12 +34009,12 @@ endobj
 endobj
 159 0 obj
 << /Limits [(__anchor-top) (adding.new.node)]
-/Names [(__anchor-top) 27 0 R (__indexterm-2002) 3592 0 R (__indexterm-2004) 3594 0 R (__indexterm-2006) 3596 0 R (__indexterm-2008) 3599 0 R (accesscontrolclient-changes) 4445 0 R (acid) 949 0 R (acl) 3397 0 R (add-metric-name-and-function-to-hadoop-compat-interface) 3693 0 R (add-the-implementation-to-both-hadoop-1-and-hadoop-2-compat-modules) 3696 0 R (add.metrics) 3691 0 R (adding-a-new-chapter-to-the-hbase-reference-guide) 4024 0 R (adding.new.node) 3138 0 R]
+/Names [(__anchor-top) 27 0 R (__indexterm-2002) 3593 0 R (__indexterm-2004) 3595 0 R (__indexterm-2006) 3597 0 R (__indexterm-2008) 3600 0 R (accesscontrolclient-changes) 4446 0 R (acid) 949 0 R (acl) 3398 0 R (add-metric-name-and-function-to-hadoop-compat-interface) 3694 0 R (add-the-implementation-to-both-hadoop-1-and-hadoop-2-compat-modules) 3697 0 R (add.metrics) 3692 0 R (adding-a-new-chapter-to-the-hbase-reference-guide) 4025 0 R (adding.new.node) 3139 0 R]
 >>
 endobj
 160 0 obj
 << /Limits [(io.storefile.bloom.block.size) (jdk-version-requirements)]
-/Names [(io.storefile.bloom.block.size) 360 0 R (ipc) 4352 0 R (irbrc) 812 0 R (irc) 3428 0 R (isolate-system-tables) 3391 0 R (java) 121 0 R (java-2) 1949 0 R (java-3) 1954 0 R (java.client.config) 518 0 R (jdk-issues) 2946 0 R (jdk-version-requirements) 58 0 R]
+/Names [(io.storefile.bloom.block.size) 360 0 R (ipc) 4353 0 R (irbrc) 812 0 R (irc) 3429 0 R (isolate-system-tables) 3392 0 R (java) 121 0 R (java-2) 1950 0 R (java-3) 1955 0 R (java.client.config) 518 0 R (jdk-issues) 2947 0 R (jdk-version-requirements) 58 0 R]
 >>
 endobj
 161 0 obj
@@ -35153,7 +35153,7 @@ endobj
 /F4.0 37 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [167 0 R 168 0 R 170 0 R]
@@ -35953,7 +35953,7 @@ endobj
 /F5.1 47 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [175 0 R 176 0 R 177 0 R 179 0 R 180 0 R 182 0 R 183 0 R]
@@ -37425,7 +37425,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [186 0 R 187 0 R]
@@ -37850,7 +37850,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -38506,7 +38506,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [193 0 R]
@@ -39273,7 +39273,7 @@ endobj
 /F4.0 37 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [198 0 R]
@@ -39804,7 +39804,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -39820,7 +39820,7 @@ endobj
 endobj
 208 0 obj
 << /Limits [(getshortmidpointkey-an-optimization-for-data-index-block) (handling-of-errors-during-log-splitting)]
-/Names [(getshortmidpointkey-an-optimization-for-data-index-block) 4204 0 R (getting.involved) 3417 0 R (getting_started) 50 0 R (git.best.practices) 3697 0 R (git.patch.flow) 3750 0 R (goals) 4297 0 R (guide-for-hbase-committers) 3724 0 R (guidelines-for-deploying-a-coprocessor) 2415 0 R (guidelines-for-reporting-effective-issues) 3435 0 R (hadoop) 142 0 R (hadoop.native.lib) 4121 0 R (hadoop.policy.file) 385 0 R (handling-of-errors-during-log-splitting) 1691 0 R]
+/Names [(getshortmidpointkey-an-optimization-for-data-index-block) 4205 0 R (getting.involved) 3418 0 R (getting_started) 50 0 R (git.best.practices) 3698 0 R (git.patch.flow) 3751 0 R (goals) 4298 0 R (guide-for-hbase-committers) 3725 0 R (guidelines-for-deploying-a-coprocessor) 2416 0 R (guidelines-for-reporting-effective-issues) 3436 0 R (hadoop) 142 0 R (hadoop.native.lib) 4122 0 R (hadoop.policy.file) 385 0 R (handling-of-errors-during-log-splitting) 1691 0 R]
 >>
 endobj
 209 0 obj
@@ -40350,7 +40350,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -40872,7 +40872,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -41507,7 +41507,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -42016,7 +42016,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -42547,7 +42547,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -43126,7 +43126,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [254 0 R 255 0 R]
@@ -43693,7 +43693,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [263 0 R 264 0 R 266 0 R 267 0 R]
@@ -43757,7 +43757,7 @@ endobj
 endobj
 270 0 obj
 << /Limits [(hbase.table.lock.enable) (hbase.tmp.dir)]
-/Names [(hbase.table.lock.enable) 410 0 R (hbase.table.max.rowsize) 413 0 R (hbase.tags) 1368 0 R (hbase.tests) 3575 0 R (hbase.tests.categories) 3619 0 R (hbase.tests.cluster) 3621 0 R (hbase.tests.example.code) 3622 0 R (hbase.tests.rules) 3615 0 R (hbase.tests.sleeps) 3620 0 R (hbase.tests.writing) 3614 0 R (hbase.thrift.maxQueuedRequests) 417 0 R (hbase.thrift.maxWorkerThreads) 416 0 R (hbase.thrift.minWorkerThreads) 415 0 R (hbase.tmp.dir) 200 0 R]
+/Names [(hbase.table.lock.enable) 410 0 R (hbase.table.max.rowsize) 413 0 R (hbase.tags) 1368 0 R (hbase.tests) 3576 0 R (hbase.tests.categories) 3620 0 R (hbase.tests.cluster) 3622 0 R (hbase.tests.example.code) 3623 0 R (hbase.tests.rules) 3616 0 R (hbase.tests.sleeps) 3621 0 R (hbase.tests.writing) 3615 0 R (hbase.thrift.maxQueuedRequests) 417 0 R (hbase.thrift.maxWorkerThreads) 416 0 R (hbase.thrift.minWorkerThreads) 415 0 R (hbase.tmp.dir) 200 0 R]
 >>
 endobj
 271 0 obj
@@ -44313,7 +44313,7 @@ endobj
 /F1.0 10 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -44908,7 +44908,7 @@ endobj
 /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [287 0 R 288 0 R]
@@ -44928,7 +44928,7 @@ endobj
 endobj
 286 0 obj
 << /Limits [(hbase.cluster.distributed) (hbase.data.umask.enable)]
-/Names [(hbase.cluster.distributed) 202 0 R (hbase.column.max.version) 436 0 R (hbase.commit.msg.format) 3967 0 R (hbase.coordinated.state.manager.class) 479 0 R (hbase.coprocessor.abortonerror) 401 0 R (hbase.coprocessor.enabled) 394 0 R (hbase.coprocessor.master.classes) 400 0 R (hbase.coprocessor.region.classes) 399 0 R (hbase.coprocessor.user.enabled) 398 0 R (hbase.data.umask) 427 0 R (hbase.data.umask.enable) 426 0 R]
+/Names [(hbase.cluster.distributed) 202 0 R (hbase.column.max.version) 436 0 R (hbase.commit.msg.format) 3968 0 R (hbase.coordinated.state.manager.class) 479 0 R (hbase.coprocessor.abortonerror) 401 0 R (hbase.coprocessor.enabled) 394 0 R (hbase.coprocessor.master.classes) 400 0 R (hbase.coprocessor.region.classes) 399 0 R (hbase.coprocessor.user.enabled) 398 0 R (hbase.data.umask) 427 0 R (hbase.data.umask.enable) 426 0 R]
 >>
 endobj
 287 0 obj
@@ -45474,7 +45474,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -45965,7 +45965,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -46537,7 +46537,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -47098,7 +47098,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -47695,7 +47695,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -48299,7 +48299,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -48842,7 +48842,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -49350,7 +49350,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -49925,7 +49925,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [352 0 R 356 0 R]
@@ -50494,7 +50494,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -50504,7 +50504,7 @@ endobj
 endobj
 361 0 obj
 << /Limits [(quota) (regions.arch)]
-/Names [(quota) 3251 0 R (read-api-and-usage) 1950 0 R (read-hbase-shell-commands-from-a-command-file) 798 0 R (reading-filtering-and-sending-edits) 3231 0 R (reading_cells_with_labels) 1422 0 R (recommended.configurations.hdfs) 548 0 R (recommended_configurations) 543 0 R (recommended_configurations.zk) 544 0 R (references) 3855 0 R (region-overlap-repairs) 4079 0 R (region-replication-for-meta-table-s-region) 1927 0 R (region-scanner-changes) 4424 0 R (region-transition-rpc-and-rs-heartbeat-can-arrive-at-same-time-on-master) 3888 0 R (regioncoprocessorenvironment-getregion-abstract-hregion) 4349 0 R (regioncoprocessorhost-postappend-append-append-result-result-void) 4350 0 R (regioncoprocessorhost-prestorefilereaderopen-filesystem-fs-path-p-fsdatainputstreamwrapper-in-long-size-cacheconfig-cacheconf-reference-r-storefile-reader) 4351 0 R (regionobserver) 4336 0 R (regions.arch) 1723 0 R]
+/Names [(quota) 3252 0 R (read-api-and-usage) 1951 0 R (read-hbase-shell-commands-from-a-command-file) 798 0 R (reading-filtering-and-sending-edits) 3232 0 R (reading_cells_with_labels) 1422 0 R (recommended.configurations.hdfs) 548 0 R (recommended_configurations) 543 0 R (recommended_configurations.zk) 544 0 R (references) 3856 0 R (region-overlap-repairs) 4080 0 R (region-replication-for-meta-table-s-region) 1928 0 R (region-scanner-changes) 4425 0 R (region-transition-rpc-and-rs-heartbeat-can-arrive-at-same-time-on-master) 3889 0 R (regioncoprocessorenvironment-getregion-abstract-hregion) 4350 0 R (regioncoprocessorhost-postappend-append-append-result-result-void) 4351 0 R (regioncoprocessorhost-prestorefilereaderopen-filesystem-fs-path-p-fsdatainputstreamwrapper-in-long-size-cacheconfig-cacheconf-reference-r-storefile-reader) 4352 0 R (regionobserver) 4337 0 R (regions.arch) 1723 0 R]
 >>
 endobj
 362 0 obj
@@ -51105,7 +51105,7 @@ endobj
 /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [372 0 R 373 0 R 375 0 R 377 0 R 378 0 R]
@@ -51116,7 +51116,7 @@ endobj
 endobj
 370 0 obj
 << /Limits [(hbase.regionserver.thrift.compact) (hbase.rootdir.perms)]
-/Names [(hbase.regionserver.thrift.compact) 422 0 R (hbase.regionserver.thrift.framed) 418 0 R (hbase.regionserver.thrift.framed.max_frame_size_in_mb) 419 0 R (hbase.release.announcement) 3555 0 R (hbase.replication.management) 3201 0 R (hbase.replication.rpc.codec) 488 0 R (hbase.replication.source.maxthreads) 489 0 R (hbase.rest-csrf.browser-useragents-regex) 472 0 R (hbase.rest.csrf.enabled) 471 0 R (hbase.rest.filter.classes) 460 0 R (hbase.rest.port) 402 0 R (hbase.rest.readonly) 405 0 R (hbase.rest.support.proxyuser) 408 0 R (hbase.rest.threads.max) 406 0 R (hbase.rest.threads.min) 407 0 R (hbase.rolling.restart) 637 0 R (hbase.rolling.upgrade) 633 0 R (hbase.rootdir) 201 0 R (hbase.rootdir.perms) 423 0 R]
+/Names [(hbase.regionserver.thrift.compact) 422 0 R (hbase.regionserver.thrift.framed) 418 0 R (hbase.regionserver.thrift.framed.max_frame_size_in_mb) 419 0 R (hbase.release.announcement) 3556 0 R (hbase.replication.management) 3202 0 R (hbase.replication.rpc.codec) 488 0 R (hbase.replication.source.maxthreads) 489 0 R (hbase.rest-csrf.browser-useragents-regex) 472 0 R (hbase.rest.csrf.enabled) 471 0 R (hbase.rest.filter.classes) 460 0 R (hbase.rest.port) 402 0 R (hbase.rest.readonly) 405 0 R (hbase.rest.support.proxyuser) 408 0 R (hbase.rest.threads.max) 406 0 R (hbase.rest.threads.min) 407 0 R (hbase.rolling.restart) 637 0 R (hbase.rolling.upgrade) 633 0 R (hbase.rootdir) 201 0 R (hbase.rootdir.perms) 423 0 R]
 >>
 endobj
 371 0 obj
@@ -51696,7 +51696,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -52238,7 +52238,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -52789,7 +52789,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -53308,7 +53308,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -53826,7 +53826,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -53836,7 +53836,7 @@ endobj
 endobj
 414 0 obj
 << /Limits [(hbase.zookeeper.property.maxClientCnxns) (hbase_supported_tested_definitions)]
-/Names [(hbase.zookeeper.property.maxClientCnxns) 275 0 R (hbase.zookeeper.property.syncLimit) 269 0 R (hbase.zookeeper.quorum) 205 0 R (hbase_apis) 2169 0 R (hbase_default_configurations) 199 0 R (hbase_env) 532 0 R (hbase_metrics) 3143 0 R (hbase_mob) 1964 0 R (hbase_site) 528 0 R (hbase_supported_tested_definitions) 44 0 R]
+/Names [(hbase.zookeeper.property.maxClientCnxns) 275 0 R (hbase.zookeeper.property.syncLimit) 269 0 R (hbase.zookeeper.quorum) 205 0 R (hbase_apis) 2170 0 R (hbase_default_configurations) 199 0 R (hbase_env) 532 0 R (hbase_metrics) 3144 0 R (hbase_mob) 1965 0 R (hbase_site) 528 0 R (hbase_supported_tested_definitions) 44 0 R]
 >>
 endobj
 415 0 obj
@@ -54322,7 +54322,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -54335,7 +54335,7 @@ endobj
 endobj
 424 0 obj
 << /Limits [(hbase.rpc) (hbase.secure.spnego.ui)]
-/Names [(hbase.rpc) 4290 0 R (hbase.rpc.rows.warning.threshold) 511 0 R (hbase.rpc.shortoperation.timeout) 369 0 R (hbase.rpc.timeout) 363 0 R (hbase.rs.cacheblocksonwrite) 362 0 R (hbase.secure.bulkload) 1448 0 R (hbase.secure.configuration) 1288 0 R (hbase.secure.enable) 1452 0 R (hbase.secure.simpleconfiguration) 1330 0 R (hbase.secure.spnego.ui) 1283 0 R]
+/Names [(hbase.rpc) 4291 0 R (hbase.rpc.rows.warning.threshold) 511 0 R (hbase.rpc.shortoperation.timeout) 369 0 R (hbase.rpc.timeout) 363 0 R (hbase.rs.cacheblocksonwrite) 362 0 R (hbase.secure.bulkload) 1448 0 R (hbase.secure.configuration) 1288 0 R (hbase.secure.enable) 1452 0 R (hbase.secure.simpleconfiguration) 1330 0 R (hbase.secure.spnego.ui) 1283 0 R]
 >>
 endobj
 425 0 obj
@@ -54856,7 +54856,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -55424,7 +55424,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -55941,7 +55941,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -56484,7 +56484,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [463 0 R 464 0 R]
@@ -57131,7 +57131,7 @@ endobj
 /F4.0 37 0 R
 /F6.0 473 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [469 0 R 470 0 R]
@@ -57172,11 +57172,11 @@ endobj
 << /Type /Font
 /BaseFont /066905+mplus1mn-bold
 /Subtype /TrueType
-/FontDescriptor 5227 0 R
+/FontDescriptor 5228 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5229 0 R
-/ToUnicode 5228 0 R
+/Widths 5230 0 R
+/ToUnicode 5229 0 R
 >>
 endobj
 474 0 obj
@@ -57742,7 +57742,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -57755,7 +57755,7 @@ endobj
 endobj
 480 0 obj
 << /Limits [(hbase.defaults.for.version.skip) (hbase.hregion.percolumnfamilyflush.size.lower.bound.min)]
-/Names [(hbase.defaults.for.version.skip) 409 0 R (hbase.dfs.client.read.shortcircuit.buffer.size) 441 0 R (hbase.display.keys) 393 0 R (hbase.dynamic.jars.dir) 458 0 R (hbase.encryption.server) 1435 0 R (hbase.env.sh) 513 0 R (hbase.fix.version.in.jira) 3955 0 R (hbase.history) 4250 0 R (hbase.hregion.majorcompaction) 316 0 R (hbase.hregion.majorcompaction.jitter) 317 0 R (hbase.hregion.max.filesize) 315 0 R (hbase.hregion.memstore.block.multiplier) 311 0 R (hbase.hregion.memstore.flush.size) 308 0 R (hbase.hregion.memstore.mslab.enabled) 312 0 R (hbase.hregion.percolumnfamilyflush.size.lower.bound.min) 309 0 R]
+/Names [(hbase.defaults.for.version.skip) 409 0 R (hbase.dfs.client.read.shortcircuit.buffer.size) 441 0 R (hbase.display.keys) 393 0 R (hbase.dynamic.jars.dir) 458 0 R (hbase.encryption.server) 1435 0 R (hbase.env.sh) 513 0 R (hbase.fix.version.in.jira) 3956 0 R (hbase.history) 4251 0 R (hbase.hregion.majorcompaction) 316 0 R (hbase.hregion.majorcompaction.jitter) 317 0 R (hbase.hregion.max.filesize) 315 0 R (hbase.hregion.memstore.block.multiplier) 311 0 R (hbase.hregion.memstore.flush.size) 308 0 R (hbase.hregion.memstore.mslab.enabled) 312 0 R (hbase.hregion.percolumnfamilyflush.size.lower.bound.min) 309 0 R]
 >>
 endobj
 481 0 obj
@@ -58294,7 +58294,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -58809,7 +58809,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -59320,7 +59320,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -59336,7 +59336,7 @@ endobj
 endobj
 503 0 obj
 << /Limits [(hbase.mob.file.cache.size) (hbase.org.site.contributing)]
-/Names [(hbase.mob.file.cache.size) 494 0 R (hbase.moduletest.run) 3584 0 R (hbase.moduletest.shell) 3579 0 R (hbase.moduletests) 3577 0 R (hbase.normalizer.min.region.count) 302 0 R (hbase.normalizer.period) 301 0 R (hbase.offpeak.end.hour) 337 0 R (hbase.offpeak.start.hour) 336 0 R (hbase.org) 3566 0 R (hbase.org.site.contributing) 3568 0 R]
+/Names [(hbase.mob.file.cache.size) 494 0 R (hbase.moduletest.run) 3585 0 R (hbase.moduletest.shell) 3580 0 R (hbase.moduletests) 3578 0 R (hbase.normalizer.min.region.count) 302 0 R (hbase.normalizer.period) 301 0 R (hbase.offpeak.end.hour) 337 0 R (hbase.offpeak.start.hour) 336 0 R (hbase.org) 3567 0 R (hbase.org.site.contributing) 3569 0 R]
 >>
 endobj
 504 0 obj
@@ -59851,7 +59851,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -60962,7 +60962,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [519 0 R]
@@ -61810,7 +61810,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [522 0 R]
@@ -63267,7 +63267,7 @@ endobj
 /F3.0 35 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -63791,7 +63791,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -64444,7 +64444,7 @@ endobj
 /F4.0 37 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [537 0 R 538 0 R 540 0 R 541 0 R 542 0 R 547 0 R]
@@ -65199,7 +65199,7 @@ endobj
 /F2.0 31 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [553 0 R 556 0 R 559 0 R]
@@ -65238,7 +65238,7 @@ endobj
 endobj
 558 0 obj
 << /Limits [(configuration) (coprocessor-implementation-overview)]
-/Names [(configuration) 106 0 R (configuration-2) 3172 0 R (configuration-3) 4042 0 R (configuration-files) 113 0 R (configuration-from-scratch) 3940 0 R (configuration-properties) 1932 0 R (configure-mob-compaction-mergeable-threshold) 1973 0 R (configure-mob-compaction-policy) 1972 0 R (configuring-columns-for-mob) 1969 0 R (configuring-server-wide-behavior-of-bloom-filters) 2539 0 R (configuring-the-rest-server-and-client) 2188 0 R (confirm) 192 0 R (connection-setup) 4302 0 R (constraints) 1087 0 R (contributing-to-documentation-or-other-strings) 3978 0 R (coprocessor-api-changes) 4326 0 R (coprocessor-implementation-overview) 2344 0 R]
+/Names [(configuration) 106 0 R (configuration-2) 3173 0 R (configuration-3) 4043 0 R (configuration-files) 113 0 R (configuration-from-scratch) 3941 0 R (configuration-properties) 1933 0 R (configure-mob-compaction-mergeable-threshold) 1974 0 R (configure-mob-compaction-policy) 1973 0 R (configuring-columns-for-mob) 1970 0 R (configuring-server-wide-behavior-of-bloom-filters) 2540 0 R (configuring-the-rest-server-and-client) 2189 0 R (confirm) 192 0 R (connection-setup) 4303 0 R (constraints) 1087 0 R (contributing-to-documentation-or-other-strings) 3979 0 R (coprocessor-api-changes) 4327 0 R (coprocessor-implementation-overview) 2345 0 R]
 >>
 endobj
 559 0 obj
@@ -66100,7 +66100,7 @@ endobj
 /F4.0 37 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [563 0 R]
@@ -66914,7 +66914,7 @@ endobj
 /F5.1 47 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [567 0 R 568 0 R 569 0 R 573 0 R 576 0 R 577 0 R 578 0 R]
@@ -67656,7 +67656,7 @@ endobj
 /F1.1 40 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [582 0 R 583 0 R]
@@ -69088,7 +69088,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [587 0 R 588 0 R]
@@ -69865,7 +69865,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -70566,7 +70566,7 @@ endobj
 /F3.0 35 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -71897,7 +71897,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -73392,7 +73392,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -73558,7 +73558,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -73756,7 +73756,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [603 0 R 604 0 R 605 0 R 606 0 R 607 0 R]
@@ -74510,7 +74510,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [612 0 R]
@@ -75427,7 +75427,7 @@ endobj
 /F3.0 35 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [616 0 R]
@@ -77742,7 +77742,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [619 0 R 620 0 R]
@@ -78775,7 +78775,7 @@ endobj
 /F1.1 40 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [624 0 R 625 0 R 626 0 R]
@@ -79439,7 +79439,7 @@ endobj
 /F2.0 31 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [634 0 R 635 0 R 636 0 R 638 0 R 639 0 R 640 0 R]
@@ -80234,7 +80234,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [648 0 R]
@@ -80245,17 +80245,17 @@ endobj
 endobj
 644 0 obj
 << /Limits [(standalone.over.hdfs) (storefile-refresher)]
-/Names [(standalone.over.hdfs) 171 0 R (standalone_dist) 166 0 R (starting-and-stopping-the-rest-server) 2187 0 R (statemachineprocedure) 3851 0 R (static-loading) 2378 0 R (static-unloading) 2381 0 R (store) 1774 0 R (store-file-ttl) 1926 0 R (store.file.dir) 1789 0 R (store.memstore) 1775 0 R (storefile-changes) 4426 0 R (storefile-refresher) 1922 0 R]
+/Names [(standalone.over.hdfs) 171 0 R (standalone_dist) 166 0 R (starting-and-stopping-the-rest-server) 2188 0 R (statemachineprocedure) 3852 0 R (static-loading) 2379 0 R (static-unloading) 2382 0 R (store) 1774 0 R (store-file-ttl) 1927 0 R (store.file.dir) 1789 0 R (store.memstore) 1775 0 R (storefile-changes) 4427 0 R (storefile-refresher) 1923 0 R]
 >>
 endobj
 645 0 obj
 << /Limits [(__anchor-top) (build.thrift)]
-/Kids [159 0 R 3694 0 R 4386 0 R 1891 0 R 1472 0 R 3647 0 R 1635 0 R 4199 0 R 2121 0 R 2079 0 R 2036 0 R 2070 0 R]
+/Kids [159 0 R 3695 0 R 4387 0 R 1891 0 R 1472 0 R 3648 0 R 1635 0 R 4200 0 R 2122 0 R 2080 0 R 2037 0 R 2071 0 R]
 >>
 endobj
 646 0 obj
 << /Limits [(hbase.mob.file.cache.size) (hbase.zookeeper.property.initLimit)]
-/Kids [503 0 R 4147 0 R 443 0 R 241 0 R 370 0 R 424 0 R 4291 0 R 457 0 R 270 0 R 3616 0 R 3587 0 R]
+/Kids [503 0 R 4148 0 R 443 0 R 241 0 R 370 0 R 424 0 R 4292 0 R 457 0 R 270 0 R 3617 0 R 3588 0 R]
 >>
 endobj
 647 0 obj
@@ -80919,7 +80919,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -81634,7 +81634,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [656 0 R]
@@ -82101,7 +82101,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -82821,7 +82821,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [665 0 R 668 0 R]
@@ -84087,7 +84087,7 @@ endobj
 /F3.0 35 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [671 0 R 672 0 R 673 0 R 674 0 R 675 0 R 676 0 R 677 0 R 678 0 R 681 0 R 682 0 R 683 0 R]
@@ -85023,7 +85023,7 @@ endobj
 /Font << /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [686 0 R 687 0 R 690 0 R]
@@ -85922,7 +85922,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [695 0 R 696 0 R 698 0 R 700 0 R 701 0 R]
@@ -86741,7 +86741,7 @@ endobj
 /Font << /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [704 0 R 707 0 R 710 0 R 711 0 R]
@@ -87745,7 +87745,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [716 0 R 718 0 R 720 0 R]
@@ -88565,7 +88565,7 @@ endobj
 /F3.0 35 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [725 0 R 731 0 R 732 0 R 733 0 R]
@@ -89602,7 +89602,7 @@ endobj
 /F2.0 31 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [739 0 R 740 0 R 741 0 R 743 0 R 744 0 R 745 0 R 746 0 R 747 0 R 748 0 R 749 0 R 750 0 R 751 0 R 752 0 R 753 0 R 754 0 R]
@@ -90658,7 +90658,7 @@ endobj
 /F4.0 37 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [757 0 R 758 0 R 760 0 R 761 0 R 762 0 R 763 0 R 764 0 R]
@@ -91410,7 +91410,7 @@ endobj
 /F2.0 31 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [767 0 R]
@@ -91658,7 +91658,7 @@ endobj
 /Font << /F1.0 10 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -92012,7 +92012,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [779 0 R 780 0 R 781 0 R]
@@ -92213,7 +92213,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -92451,7 +92451,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [788 0 R]
@@ -93047,7 +93047,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [792 0 R]
@@ -93584,7 +93584,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -93834,7 +93834,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -94318,7 +94318,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -94593,7 +94593,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -95030,7 +95030,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -95593,7 +95593,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -96204,7 +96204,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -97374,7 +97374,7 @@ endobj
 /F2.0 31 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [816 0 R]
@@ -97396,7 +97396,7 @@ endobj
 endobj
 818 0 obj
 << /Limits [(multiple-typed-queues) (new-system)]
-/Names [(multiple-typed-queues) 3264 0 R (multiwal) 1683 0 R (nagles) 575 0 R (namespace) 846 0 R (namespace_creation) 850 0 R (namespace_quotas) 3260 0 R (namespace_special) 851 0 R (network-saturation-the-winner) 2976 0 R (new-committers) 3725 0 R (new-configs) 3892 0 R (new-system) 3871 0 R]
+/Names [(multiple-typed-queues) 3265 0 R (multiwal) 1683 0 R (nagles) 575 0 R (namespace) 846 0 R (namespace_creation) 850 0 R (namespace_quotas) 3261 0 R (namespace_special) 851 0 R (network-saturation-the-winner) 2977 0 R (new-committers) 3726 0 R (new-configs) 3893 0 R (new-system) 3872 0 R]
 >>
 endobj
 819 0 obj
@@ -102660,7 +102660,7 @@ endobj
 /F2.0 31 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -103036,7 +103036,7 @@ endobj
 /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -103651,7 +103651,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -106192,7 +106192,7 @@ endobj
 /F5.1 47 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [835 0 R 836 0 R 837 0 R]
@@ -109211,7 +109211,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -110645,7 +110645,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [843 0 R]
@@ -111429,7 +111429,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [847 0 R 848 0 R 849 0 R]
@@ -111631,7 +111631,7 @@ endobj
 /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -111702,7 +111702,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -111806,7 +111806,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -112223,7 +112223,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -112343,7 +112343,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -114530,7 +114530,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [869 0 R 871 0 R 872 0 R 874 0 R 875 0 R 876 0 R 878 0 R 879 0 R]
@@ -114859,7 +114859,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [884 0 R 885 0 R 886 0 R 887 0 R]
@@ -114870,7 +114870,7 @@ endobj
 endobj
 883 0 obj
 << /Limits [(dfs.datanode.failed.volumes.tolerated) (dm.column.metadata)]
-/Names [(dfs.datanode.failed.volumes.tolerated) 551 0 R (dfs.datanode.max.transfer.threads) 158 0 R (dfs.domain.socket.path) 440 0 R (dialog) 3758 0 R (direct.memory) 1640 0 R (disable-nagle-for-rpc) 1149 0 R (disable.splitting) 562 0 R (disabling-metrics) 3150 0 R (disabling.blockcache) 574 0 R (discovering.available.metrics) 3151 0 R (distributed) 172 0 R (distributed.log.replay.failure.reasons) 1711 0 R (distributed.log.splitting) 1699 0 R (dm.column.metadata) 942 0 R]
+/Names [(dfs.datanode.failed.volumes.tolerated) 551 0 R (dfs.datanode.max.transfer.threads) 158 0 R (dfs.domain.socket.path) 440 0 R (dialog) 3759 0 R (direct.memory) 1640 0 R (disable-nagle-for-rpc) 1149 0 R (disable.splitting) 562 0 R (disabling-metrics) 3151 0 R (disabling.blockcache) 574 0 R (discovering.available.metrics) 3152 0 R (distributed) 172 0 R (distributed.log.replay.failure.reasons) 1711 0 R (distributed.log.splitting) 1699 0 R (dm.column.metadata) 942 0 R]
 >>
 endobj
 884 0 obj
@@ -115879,7 +115879,7 @@ endobj
 /F7.0 897 0 R
 /F7.1 898 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [892 0 R 893 0 R 896 0 R]
@@ -115890,7 +115890,7 @@ endobj
 endobj
 891 0 obj
 << /Limits [(upgrade2.0.ui.splitmerge.by.row) (using-the-java-api)]
-/Names [(upgrade2.0.ui.splitmerge.by.row) 714 0 R (upgrade2.0.zkconfig) 705 0 R (upgrading) 602 0 R (upgrading-2) 4037 0 R (use-cases-for-observer-coprocessors) 2356 0 R (user-interface) 1943 0 R (using-existing-zookeeper-ensemble) 3912 0 R (using-hbase-shell) 2394 0 R (using-rest-endpoints) 2191 0 R (using-secure-http-https-for-the-web-ui) 1279 0 R (using-the-code-rolling-restart-sh-code-script) 3129 0 R (using-the-java-api) 2395 0 R]
+/Names [(upgrade2.0.ui.splitmerge.by.row) 714 0 R (upgrade2.0.zkconfig) 705 0 R (upgrading) 602 0 R (upgrading-2) 4038 0 R (use-cases-for-observer-coprocessors) 2357 0 R (user-interface) 1944 0 R (using-existing-zookeeper-ensemble) 3913 0 R (using-hbase-shell) 2395 0 R (using-rest-endpoints) 2192 0 R (using-secure-http-https-for-the-web-ui) 1279 0 R (using-the-code-rolling-restart-sh-code-script) 3130 0 R (using-the-java-api) 2396 0 R]
 >>
 endobj
 892 0 obj
@@ -115920,7 +115920,7 @@ endobj
 endobj
 895 0 obj
 << /Limits [(rowcounter) (save-the-dataframe)]
-/Names [(rowcounter) 3080 0 R (rowcounter-example) 1224 0 R (rowkey.design) 984 0 R (rowkey.regionsplits) 1026 0 R (rowkey.scope) 1023 0 R (rpc) 4299 0 R (rpc.configs) 4318 0 R (rpc.logging) 2705 0 R (rpcscheduler-dispatch-callrunner-p1-abstract-void-1) 4357 0 R (rs.failover.details) 3233 0 R (rs_metrics) 3159 0 R (rsgroup) 3383 0 R (run-canary-test-as-daemon-mode) 3018 0 R (run.insitu) 3688 0 R (running-canary-in-a-kerberos-enabled-cluster) 3024 0 R (running-hbck-to-identify-inconsistencies) 4072 0 R (running-multiple-workloads-on-a-single-cluster) 3247 0 R (running-the-shell-in-non-interactive-mode) 787 0 R (save-the-dataframe) 2314 0 R]
+/Names [(rowcounter) 3081 0 R (rowcounter-example) 1224 0 R (rowkey.design) 984 0 R (rowkey.regionsplits) 1026 0 R (rowkey.scope) 1023 0 R (rpc) 4300 0 R (rpc.configs) 4319 0 R (rpc.logging) 2706 0 R (rpcscheduler-dispatch-callrunner-p1-abstract-void-1) 4358 0 R (rs.failover.details) 3234 0 R (rs_metrics) 3160 0 R (rsgroup) 3384 0 R (run-canary-test-as-daemon-mode) 3019 0 R (run.insitu) 3689 0 R (running-canary-in-a-kerberos-enabled-cluster) 3025 0 R (running-hbck-to-identify-inconsistencies) 4073 0 R (running-multiple-workloads-on-a-single-cluster) 3248 0 R (running-the-shell-in-non-interactive-mode) 787 0 R (save-the-dataframe) 2315 0 R]
 >>
 endobj
 896 0 obj
@@ -115938,22 +115938,22 @@ endobj
 << /Type /Font
 /BaseFont /0c7a4a+mplus-1p-regular
 /Subtype /TrueType
-/FontDescriptor 5231 0 R
+/FontDescriptor 5232 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5233 0 R
-/ToUnicode 5232 0 R
+/Widths 5234 0 R
+/ToUnicode 5233 0 R
 >>
 endobj
 898 0 obj
 << /Type /Font
 /BaseFont /a99fc7+mplus-1p-regular
 /Subtype /TrueType
-/FontDescriptor 5235 0 R
+/FontDescriptor 5236 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5237 0 R
-/ToUnicode 5236 0 R
+/Widths 5238 0 R
+/ToUnicode 5237 0 R
 >>
 endobj
 899 0 obj
@@ -117821,7 +117821,7 @@ endobj
 /F7.1 898 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [901 0 R 902 0 R 905 0 R 906 0 R 907 0 R 908 0 R]
@@ -121757,7 +121757,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -122739,7 +122739,7 @@ endobj
 /F1.1 40 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [919 0 R 920 0 R 921 0 R 922 0 R 923 0 R 924 0 R]
@@ -123631,7 +123631,7 @@ endobj
 /F2.0 31 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [928 0 R 929 0 R 931 0 R 932 0 R 934 0 R 936 0 R]
@@ -123796,7 +123796,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -123963,7 +123963,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [943 0 R]
@@ -124192,7 +124192,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -124310,7 +124310,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [950 0 R 951 0 R]
@@ -124723,7 +124723,7 @@ endobj
 /F1.0 10 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [955 0 R 956 0 R 957 0 R 958 0 R 959 0 R 960 0 R]
@@ -126198,7 +126198,7 @@ endobj
 /F4.0 37 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [964 0 R 965 0 R 966 0 R 968 0 R]
@@ -126718,7 +126718,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [972 0 R]
@@ -126935,7 +126935,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [976 0 R]
@@ -127252,7 +127252,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [980 0 R]
@@ -127668,7 +127668,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -128397,7 +128397,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -129330,7 +129330,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [990 0 R 991 0 R 992 0 R 993 0 R 996 0 R 997 0 R 998 0 R 999 0 R 1000 0 R 1002 0 R 1003 0 R]
@@ -129960,7 +129960,7 @@ endobj
 /F2.0 31 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1006 0 R 1007 0 R 1008 0 R 1010 0 R 1012 0 R]
@@ -133541,7 +133541,7 @@ endobj
 /F5.1 47 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1018 0 R 1019 0 R]
@@ -134259,7 +134259,7 @@ endobj
 /F2.0 31 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1022 0 R]
@@ -134281,7 +134281,7 @@ endobj
 endobj
 1025 0 obj
 << /Limits [(cf.in.memory) (class-coprocessorrpcchannel-1)]
-/Names [(cf.in.memory) 2545 0 R (cf.keep.deleted) 1058 0 R (changes-of-note) 663 0 R (changing.compression) 4149 0 R (changing.rowkeys) 1024 0 R (chaos.monkey.properties) 3648 0 R (checking-for-success-or-failure-in-scripts) 795 0 R (choosing-region-servers-to-replicate-to) 3226 0 R (class-class-locktimeoutexception-1) 4405 0 R (class-coprocessorhost-e) 4331 0 R (class-coprocessorrpcchannel-1) 4328 0 R]
+/Names [(cf.in.memory) 2546 0 R (cf.keep.deleted) 1058 0 R (changes-of-note) 663 0 R (changing.compression) 4150 0 R (changing.rowkeys) 1024 0 R (chaos.monkey.properties) 3649 0 R (checking-for-success-or-failure-in-scripts) 795 0 R (choosing-region-servers-to-replicate-to) 3227 0 R (class-class-locktimeoutexception-1) 4406 0 R (class-coprocessorhost-e) 4332 0 R (class-coprocessorrpcchannel-1) 4329 0 R]
 >>
 endobj
 1026 0 obj
@@ -138036,7 +138036,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1029 0 R]
@@ -138509,7 +138509,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1034 0 R 1035 0 R 1037 0 R]
@@ -138889,7 +138889,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1041 0 R 1042 0 R 1043 0 R 1045 0 R]
@@ -139030,7 +139030,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1050 0 R]
@@ -139041,7 +139041,7 @@ endobj
 endobj
 1049 0 obj
 << /Limits [(schema.versions) (sect.zookeeper.session.timeout)]
-/Names [(schema.versions) 1032 0 R (schema.versions.max) 1033 0 R (scopes) 4089 0 R (scripting) 784 0 R (secondary-replica-failover) 1931 0 R (secondary.indexes) 1069 0 R (secondary.indexes.coproc) 1083 0 R (secondary.indexes.dualwrite) 1079 0 R (secondary.indexes.filter) 1073 0 R (secondary.indexes.periodic) 1075 0 R (secondary.indexes.summary) 1081 0 R (sect.zookeeper.session.timeout) 545 0 R]
+/Names [(schema.versions) 1032 0 R (schema.versions.max) 1033 0 R (scopes) 4090 0 R (scripting) 784 0 R (secondary-replica-failover) 1932 0 R (secondary.indexes) 1069 0 R (secondary.indexes.coproc) 1083 0 R (secondary.indexes.dualwrite) 1079 0 R (secondary.indexes.filter) 1073 0 R (secondary.indexes.periodic) 1075 0 R (secondary.indexes.summary) 1081 0 R (sect.zookeeper.session.timeout) 545 0 R]
 >>
 endobj
 1050 0 obj
@@ -139467,7 +139467,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1054 0 R 1055 0 R]
@@ -140158,7 +140158,7 @@ endobj
 /F7.0 897 0 R
 /F7.1 898 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1059 0 R 1060 0 R]
@@ -145873,7 +145873,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -151819,7 +151819,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -152905,7 +152905,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -153591,7 +153591,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1070 0 R 1071 0 R 1072 0 R 1074 0 R 1076 0 R]
@@ -153896,7 +153896,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1080 0 R 1082 0 R 1084 0 R]
@@ -154104,7 +154104,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1088 0 R]
@@ -154900,7 +154900,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1092 0 R 1095 0 R]
@@ -155878,7 +155878,7 @@ endobj
 /F5.1 47 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1100 0 R 1101 0 R]
@@ -156558,7 +156558,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1105 0 R 1107 0 R 1108 0 R 1109 0 R]
@@ -157311,7 +157311,7 @@ endobj
 /F3.0 35 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1113 0 R]
@@ -157947,7 +157947,7 @@ endobj
 /F2.0 31 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1120 0 R]
@@ -157961,7 +157961,7 @@ endobj
 endobj
 1119 0 obj
 << /Limits [(schema.casestudies.custorder.obj.rectype) (schema.updates)]
-/Names [(schema.casestudies.custorder.obj.rectype) 1123 0 R (schema.casestudies.custorder.obj.singleobj) 1128 0 R (schema.casestudies.custorder.tables) 1114 0 R (schema.casestudies.log_steroids) 1106 0 R (schema.casestudies.log_timeseries) 1093 0 R (schema.casestudies.log_timeseries.hostlead) 1098 0 R (schema.casestudies.log_timeseries.revts) 1099 0 R (schema.casestudies.log_timeseries.tslead) 1094 0 R (schema.casestudies.log_timeseries.varkeys) 1102 0 R (schema.cf.blocksize) 2542 0 R (schema.creation) 963 0 R (schema.joins) 1048 0 R (schema.minversions) 1036 0 R (schema.ops) 1147 0 R (schema.regionsize) 2524 0 R (schema.smackdown) 1130 0 R (schema.smackdown.rowsascols) 1133 0 R (schema.smackdown.rowscols) 1132 0 R (schema.smackdown.rowsversions) 1131 0 R (schema.updates) 967 0 R]
+/Names [(schema.casestudies.custorder.obj.rectype) 1123 0 R (schema.casestudies.custorder.obj.singleobj) 1128 0 R (schema.casestudies.custorder.tables) 1114 0 R (schema.casestudies.log_steroids) 1106 0 R (schema.casestudies.log_timeseries) 1093 0 R (schema.casestudies.log_timeseries.hostlead) 1098 0 R (schema.casestudies.log_timeseries.revts) 1099 0 R (schema.casestudies.log_timeseries.tslead) 1094 0 R (schema.casestudies.log_timeseries.varkeys) 1102 0 R (schema.cf.blocksize) 2543 0 R (schema.creation) 963 0 R (schema.joins) 1048 0 R (schema.minversions) 1036 0 R (schema.ops) 1147 0 R (schema.regionsize) 2525 0 R (schema.smackdown) 1130 0 R (schema.smackdown.rowsascols) 1133 0 R (schema.smackdown.rowscols) 1132 0 R (schema.smackdown.rowsversions) 1131 0 R (schema.updates) 967 0 R]
 >>
 endobj
 1120 0 obj
@@ -158751,7 +158751,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1124 0 R]
@@ -159314,7 +159314,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1129 0 R]
@@ -160873,7 +160873,7 @@ endobj
 /F4.0 37 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1136 0 R]
@@ -161617,7 +161617,7 @@ endobj
 /F2.0 31 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1140 0 R 1141 0 R 1142 0 R]
@@ -161785,7 +161785,7 @@ endobj
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /Font << /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -162931,7 +162931,7 @@ endobj
 /F4.0 37 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -164209,7 +164209,7 @@ endobj
 /F2.0 31 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1154 0 R 1155 0 R 1156 0 R 1157 0 R 1158 0 R]
@@ -164958,7 +164958,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -164974,7 +164974,7 @@ endobj
 endobj
 1164 0 obj
 << /Limits [(others) (perf.general)]
-/Names [(others) 2322 0 R (output) 3176 0 R (package) 3478 0 R (page-allocation-failure) 2941 0 R (passing-vm-options-to-the-shell) 803 0 R (passwordless.ssh.quickstart) 89 0 R (perf.99th.percentile) 2480 0 R (perf.batch.loading) 2563 0 R (perf.casestudy) 2683 0 R (perf.compactions.and.splits) 2481 0 R (perf.compression) 2548 0 R (perf.compression.however) 2551 0 R (perf.configurations) 2478 0 R (perf.deleting) 2642 0 R (perf.deleting.queue) 2643 0 R (perf.deleting.rpc) 2647 0 R (perf.ec2) 2675 0 R (perf.general) 2558 0 R]
+/Names [(others) 2323 0 R (output) 3177 0 R (package) 3479 0 R (page-allocation-failure) 2942 0 R (passing-vm-options-to-the-shell) 803 0 R (passwordless.ssh.quickstart) 89 0 R (perf.99th.percentile) 2481 0 R (perf.batch.loading) 2564 0 R (perf.casestudy) 2684 0 R (perf.compactions.and.splits) 2482 0 R (perf.compression) 2549 0 R (perf.compression.however) 2552 0 R (perf.configurations) 2479 0 R (perf.deleting) 2643 0 R (perf.deleting.queue) 2644 0 R (perf.deleting.rpc) 2648 0 R (perf.ec2) 2676 0 R (perf.general) 2559 0 R]
 >>
 endobj
 1165 0 obj
@@ -165809,7 +165809,7 @@ endobj
 /F1.1 40 0 R
 /F7.0 897 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1171 0 R]
@@ -166357,7 +166357,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1177 0 R 1178 0 R 1179 0 R 1180 0 R 1181 0 R 1182 0 R]
@@ -166368,12 +166368,12 @@ endobj
 endobj
 1175 0 obj
 << /Limits [(keysize.cf) (load-the-dataframe)]
-/Names [(keysize.cf) 1009 0 R (keysize.patterns) 1014 0 R (keysize.row) 1013 0 R (keyvalue) 1795 0 R (keyvalue.example) 1796 0 R (known-incompatibilities-among-hbase-versions) 4321 0 R (language-integrated-query) 2320 0 R (lb) 3120 0 R (life-of-a-wal-edit) 3216 0 R (limit-server-failure-impact) 1150 0 R (list-of-major-changes-for-hbase-2-0) 4325 0 R (load-the-dataframe) 2317 0 R]
+/Names [(keysize.cf) 1009 0 R (keysize.patterns) 1014 0 R (keysize.row) 1013 0 R (keyvalue) 1795 0 R (keyvalue.example) 1796 0 R (known-incompatibilities-among-hbase-versions) 4322 0 R (language-integrated-query) 2321 0 R (lb) 3121 0 R (life-of-a-wal-edit) 3217 0 R (limit-server-failure-impact) 1150 0 R (list-of-major-changes-for-hbase-2-0) 4326 0 R (load-the-dataframe) 2318 0 R]
 >>
 endobj
 1176 0 obj
 << /Limits [(multiple-typed-queues) (schema.updates)]
-/Kids [818 0 R 3872 0 R 1869 0 R 3346 0 R 3284 0 R 2996 0 R 1164 0 R 2576 0 R 2612 0 R 2482 0 R 2589 0 R 2441 0 R 361 0 R 3252 0 R 1598 0 R 2980 0 R 3718 0 R 895 0 R 3081 0 R 1119 0 R]
+/Kids [818 0 R 3873 0 R 1869 0 R 3347 0 R 3285 0 R 2997 0 R 1164 0 R 2577 0 R 2613 0 R 2483 0 R 2590 0 R 2442 0 R 361 0 R 3253 0 R 1598 0 R 2981 0 R 3719 0 R 895 0 R 3082 0 R 1119 0 R]
 >>
 endobj
 1177 0 obj
@@ -167447,7 +167447,7 @@ endobj
 /F3.0 35 0 R
 /F1.1 40 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1186 0 R]
@@ -168074,7 +168074,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -168404,7 +168404,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -169157,7 +169157,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1193 0 R 1194 0 R]
@@ -169595,7 +169595,7 @@ endobj
 /Font << /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1197 0 R]
@@ -170123,7 +170123,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1201 0 R 1202 0 R]
@@ -170437,7 +170437,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -171189,7 +171189,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1209 0 R 1210 0 R 1211 0 R 1212 0 R 1213 0 R 1214 0 R 1215 0 R 1216 0 R 1217 0 R]
@@ -171426,7 +171426,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1221 0 R]
@@ -171735,7 +171735,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1225 0 R 1226 0 R 1227 0 R]
@@ -171987,7 +171987,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1233 0 R 1235 0 R]
@@ -172001,7 +172001,7 @@ endobj
 endobj
 1232 0 obj
 << /Limits [(secure-a-full-backup-image-first) (security.gateway.thrift.doas)]
-/Names [(secure-a-full-backup-image-first) 2104 0 R (securing-access-to-hdfs-and-zookeeper) 1350 0 R (securing-access-to-your-data) 1361 0 R (securing-file-system-hdfs-data) 1355 0 R (securing-zookeeper-data) 1351 0 R (security) 1274 0 R (security.client.thrift) 1298 0 R (security.data.basic.server.side) 1363 0 R (security.example.config) 1456 0 R (security.gateway.thrift) 1303 0 R (security.gateway.thrift.doas) 1313 0 R]
+/Names [(secure-a-full-backup-image-first) 2105 0 R (securing-access-to-hdfs-and-zookeeper) 1350 0 R (securing-access-to-your-data) 1361 0 R (securing-file-system-hdfs-data) 1355 0 R (securing-zookeeper-data) 1351 0 R (security) 1274 0 R (security.client.thrift) 1298 0 R (security.data.basic.server.side) 1363 0 R (security.example.config) 1456 0 R (security.gateway.thrift) 1303 0 R (security.gateway.thrift.doas) 1313 0 R]
 >>
 endobj
 1233 0 obj
@@ -174543,7 +174543,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1240 0 R]
@@ -176800,7 +176800,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1244 0 R]
@@ -178756,7 +178756,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -182757,7 +182757,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -185016,7 +185016,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -188471,7 +188471,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -190078,7 +190078,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -191242,7 +191242,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -191399,7 +191399,7 @@ endobj
 /Font << /F2.0 31 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1267 0 R]
@@ -194857,7 +194857,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1271 0 R]
@@ -195212,7 +195212,7 @@ endobj
 /F3.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1275 0 R 1276 0 R]
@@ -195831,7 +195831,7 @@ endobj
 /F3.0 35 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1280 0 R]
@@ -196421,7 +196421,7 @@ endobj
 /F4.0 37 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -197217,7 +197217,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -198065,7 +198065,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1289 0 R 1290 0 R 1293 0 R 1295 0 R]
@@ -199770,7 +199770,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -200905,7 +200905,7 @@ endobj
 /F2.0 31 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1302 0 R 1304 0 R 1305 0 R 1306 0 R]
@@ -200915,11 +200915,11 @@ endobj
 << /Type /Font
 /BaseFont /294f18+mplus1mn-italic
 /Subtype /TrueType
-/FontDescriptor 5239 0 R
+/FontDescriptor 5240 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 5241 0 R
-/ToUnicode 5240 0 R
+/Widths 5242 0 R
+/ToUnicode 5241 0 R
 >>
 endobj
 1302 0 obj
@@ -202130,7 +202130,7 @@ endobj
 /F2.0 31 0 R
 /F6.0 473 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1309 0 R 1310 0 R 1311 0 R 1312 0 R 1314 0 R 1315 0 R]
@@ -203361,7 +203361,7 @@ endobj
 /F3.0 35 0 R
 /F8.0 1301 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1318 0 R 1320 0 R 1321 0 R]
@@ -204387,7 +204387,7 @@ endobj
 /F3.0 35 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1324 0 R]
@@ -205312,7 +205312,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -205673,7 +205673,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1331 0 R 1332 0 R 1334 0 R 1335 0 R]
@@ -205731,7 +205731,7 @@ endobj
 endobj
 1338 0 obj
 << /Limits [(shell-tricks) (space-quotas)]
-/Names [(shell-tricks) 806 0 R (shell_exercises) 67 0 R (shortcircuit.reads) 1153 0 R (simple-versus-secure-access) 1333 0 R (slack) 3424 0 R (slowness-due-to-high-processor-usage) 2975 0 R (snappy.compression.installation) 4140 0 R (snapshot-errors-due-to-reverse-dns) 2874 0 R (snapshots_azure) 3319 0 R (snapshots_s3) 3312 0 R (space-quotas) 3267 0 R]
+/Names [(shell-tricks) 806 0 R (shell_exercises) 67 0 R (shortcircuit.reads) 1153 0 R (simple-versus-secure-access) 1333 0 R (slack) 3425 0 R (slowness-due-to-high-processor-usage) 2976 0 R (snappy.compression.installation) 4141 0 R (snapshot-errors-due-to-reverse-dns) 2875 0 R (snapshots_azure) 3320 0 R (snapshots_s3) 3313 0 R (space-quotas) 3268 0 R]
 >>
 endobj
 1339 0 obj
@@ -206829,7 +206829,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -207851,7 +207851,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1345 0 R 1347 0 R]
@@ -208618,7 +208618,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1352 0 R 1353 0 R 1354 0 R]
@@ -208956,7 +208956,7 @@ endobj
 /F4.0 37 0 R
 /F7.0 897 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1358 0 R]
@@ -209819,7 +209819,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1362 0 R 1364 0 R 1365 0 R]
@@ -210543,7 +210543,7 @@ endobj
 /F4.0 37 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 /Annots [1370 0 R]
@@ -211744,7 +211744,7 @@ endobj
 /F3.0 35 0 R
 /F4.0 37 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -213347,7 +213347,7 @@ endobj
 /F4.0 37 0 R
 /F2.0 31 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -214491,7 +214491,7 @@ endobj
 /F3.0 35 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 /Annots [1380 0 R 1382 0 R 1384 0 R 1385 0 R 1386 0 R]
@@ -215335,7 +215335,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 35 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject << /Stamp2 4950 0 R
 >>
 >>
 >>
@@ -216530,7 +216530,7 @@ endobj
 /Font << /F4.0 37 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4948 0 R
+/XObject << /Stamp1 4949 0 R
 >>
 >>
 >>
@@ -217567,7 +217567,7 @@ endobj
 /F2.0 31 0 R
 /F5.1 47 0 R
 >>
-/XObject << /Stamp2 4949 0 R
+/XObject

<TRUNCATED>