You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by mi...@apache.org on 2016/03/04 18:51:18 UTC

[34/51] [partial] hbase-site git commit: Published site at 7dabcf23e8dd53f563981e1e03f82336fc0a44da.

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/3e48e84d/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileBlock.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileBlock.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileBlock.html
index de952bf..7fb6887 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileBlock.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileBlock.html
@@ -100,39 +100,48 @@
 <hr>
 <br>
 <pre><a href="../../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.Private</a>
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.89">HFileBlock</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.100">HFileBlock</a>
 extends <a href="http://docs.oracle.com/javase/7/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/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a></pre>
-<div class="block">Reading <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFile.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFile</code></a> version 1 and 2 blocks, and writing version 2 blocks.
- <ul>
- <li>In version 1 all blocks are always compressed or uncompressed, as
+<div class="block">Reads <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFile.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFile</code></a> version 1 and version 2 blocks but writes version 2 blocks only.
+ Version 2 was introduced in hbase-0.92.0. Does read and write out to the filesystem but also
+ the read and write to Cache.
+
+ <h3>HFileBlock: Version 1</h3>
+ As of this writing, there should be no more version 1 blocks found out in the wild. Version 2
+ as introduced in hbase-0.92.0.
+ In version 1 all blocks are always compressed or uncompressed, as
  specified by the <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFile.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFile</code></a>'s compression algorithm, with a type-specific
  magic record stored in the beginning of the compressed data (i.e. one needs
  to uncompress the compressed block to determine the block type). There is
  only a single compression algorithm setting for all blocks. Offset and size
  information from the block index are required to read a block.
- <li>In version 2 a block is structured as follows:
+ <h3>HFileBlock: Version 2</h3>
+ In version 2, a block is structured as follows:
  <ul>
- <li>header (see Writer#finishBlock())
+ <li><b>Header:</b> See Writer#putHeader(); header total size is HFILEBLOCK_HEADER_SIZE)
  <ul>
- <li>Magic record identifying the block type (8 bytes)
- <li>Compressed block size, excluding header, including checksum (4 bytes)
- <li>Uncompressed block size, excluding header, excluding checksum (4 bytes)
+ <li>Magic record identifying the <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><code>BlockType</code></a> (8 bytes): e.g. <code>DATABLK*</code>
+ <li>Compressed -- a.k.a 'on disk' -- block size, excluding header, but including
+     tailing checksum bytes (4 bytes)
+ <li>Uncompressed block size, excluding header, and excluding checksum bytes (4 bytes)
  <li>The offset of the previous block of the same type (8 bytes). This is
- used to be able to navigate to the previous block without going to the block
+ used to navigate to the previous block without having to go to the block index
  <li>For minorVersions &gt;=1, the ordinal describing checksum type (1 byte)
  <li>For minorVersions &gt;=1, the number of data bytes/checksum chunk (4 bytes)
- <li>For minorVersions &gt;=1, the size of data on disk, including header,
+ <li>For minorVersions &gt;=1, the size of data 'on disk', including header,
  excluding checksums (4 bytes)
  </ul>
  </li>
- <li>Raw/Compressed/Encrypted/Encoded data. The compression algorithm is the
+ <li><b>Raw/Compressed/Encrypted/Encoded data:</b> The compression algorithm is the
  same for all the blocks in the <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFile.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFile</code></a>, similarly to what was done in
- version 1.
- <li>For minorVersions &gt;=1, a series of 4 byte checksums, one each for
+ version 1. If compression is NONE, this is just raw, serialized Cells.
+ <li><b>Tail:</b> For minorVersions &gt;=1, a series of 4 byte checksums, one each for
  the number of bytes specified by bytesPerChecksum.
  </ul>
- </ul></div>
+ <p>Be aware that when we read from HDFS, we overread pulling in the next blocks' header too.
+ We do this to save having to do two seeks to read an HFileBlock; a seek to read the header
+ to figure lengths, etc., and then another seek to pull in the data.</div>
 </li>
 </ul>
 </div>
@@ -152,19 +161,19 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <th class="colLast" scope="col">Class and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>static interface&nbsp;</code></td>
+<td class="colFirst"><code>(package private) static interface&nbsp;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.BlockIterator.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileBlock.BlockIterator</a></strong></code>
 <div class="block">An interface allowing to iterate <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFileBlock</code></a>s.</div>
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>static interface&nbsp;</code></td>
+<td class="colFirst"><code>(package private) static interface&nbsp;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.BlockWritable.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileBlock.BlockWritable</a></strong></code>
 <div class="block">Something that can be written into a block.</div>
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>static interface&nbsp;</code></td>
+<td class="colFirst"><code>(package private) static interface&nbsp;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileBlock.FSReader</a></strong></code>
 <div class="block">A full-fledged reader with iteration ability.</div>
 </td>
@@ -183,7 +192,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>static class&nbsp;</code></td>
+<td class="colFirst"><code>(package private) static class&nbsp;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock.Writer</a></strong></code>
 <div class="block">Unified version 2 <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFile.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFile</code></a> block writer.</div>
 </td>
@@ -212,7 +221,9 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>(package private) static <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;</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#blockDeserializer">blockDeserializer</a></strong></code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#blockDeserializer">blockDeserializer</a></strong></code>
+<div class="block">Used deserializing blocks from Cache.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a></code></td>
@@ -235,9 +246,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <tr class="altColor">
 <td class="colFirst"><code>(package private) static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD">CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD</a></strong></code>
-<div class="block">On a checksum failure on a Reader, these many suceeding read
- requests switch back to using hdfs checksums before auto-reenabling
- hbase checksum verification.</div>
+<div class="block">On a checksum failure, do these many succeeding read requests using hdfs checksums before
+ auto-reenabling hbase checksum verification.</div>
 </td>
 </tr>
 <tr class="rowColor">
@@ -254,24 +264,24 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#ENCODED_HEADER_SIZE">ENCODED_HEADER_SIZE</a></strong></code>
-<div class="block">The size of block header when blockType is <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html#ENCODED_DATA"><code>BlockType.ENCODED_DATA</code></a>.</div>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#EXTRA_SERIALIZATION_SPACE">EXTRA_SERIALIZATION_SPACE</a></strong></code>
+<div class="block">See #blockDeserializer method for more info.</div>
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>static int</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#EXTRA_SERIALIZATION_SPACE">EXTRA_SERIALIZATION_SPACE</a></strong></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#fileContext">fileContext</a></strong></code>
 <div class="block">Meta data that holds meta information on the hfileblock</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#FILL_HEADER">FILL_HEADER</a></strong></code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.apache.commons.logging.Log</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#LOG">LOG</a></strong></code>&nbsp;</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile">Cacheable.MemoryType</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#memType">memType</a></strong></code>&nbsp;</td>
@@ -318,6 +328,10 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <div class="block">Size of pure data.</div>
 </td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static int</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#UNSET">UNSET</a></strong></code>&nbsp;</td>
+</tr>
 </table>
 </li>
 </ul>
@@ -410,157 +424,153 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#equals(java.lang.Object)">equals</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;comparison)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#expectType(org.apache.hadoop.hbase.io.hfile.BlockType)">expectType</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;expectedType)</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getBlockType()">getBlockType</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a></code></td>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getBufferReadOnly()">getBufferReadOnly</a></strong>()</code>
 <div class="block">Returns the buffer this block stores internally.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getBufferReadOnlyWithHeader()">getBufferReadOnlyWithHeader</a></strong>()</code>
 <div class="block">Returns the buffer of this block, including header data.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getBufferWithHeader()">getBufferWithHeader</a></strong>()</code>
 <div class="block">Returns a byte buffer of this block, including header data and checksum, positioned at
  the beginning of header.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getBufferWithoutHeader()">getBufferWithoutHeader</a></strong>()</code>
 <div class="block">Returns a buffer that does not include the header or checksum.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getBytesPerChecksum()">getBytesPerChecksum</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/DataInputStream.html?is-external=true" title="class or interface in java.io">DataInputStream</a></code></td>
+<tr class="rowColor">
+<td class="colFirst"><code>(package private) <a href="http://docs.oracle.com/javase/7/docs/api/java/io/DataInputStream.html?is-external=true" title="class or interface in java.io">DataInputStream</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getByteStream()">getByteStream</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) byte</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getChecksumType()">getChecksumType</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.html" title="enum in org.apache.hadoop.hbase.io.encoding">DataBlockEncoding</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getDataBlockEncoding()">getDataBlockEncoding</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>short</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getDataBlockEncodingId()">getDataBlockEncodingId</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><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;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getDeserializer()">getDeserializer</a></strong>()</code>
 <div class="block">Returns CacheableDeserializer instance which reconstructs original object from ByteBuffer.</div>
 </td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code>byte[]</code></td>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getDummyHeaderForVersion()">getDummyHeaderForVersion</a></strong>()</code>
 <div class="block">Return the appropriate DUMMY_HEADER for the minor version</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getDummyHeaderForVersion(boolean)">getDummyHeaderForVersion</a></strong>(boolean&nbsp;usesHBaseChecksum)</code>
 <div class="block">Return the appropriate DUMMY_HEADER for the minor version</div>
 </td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a></code></td>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getHFileContext()">getHFileContext</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile">Cacheable.MemoryType</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getMemoryType()">getMemoryType</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getNextBlockOnDiskSizeWithHeader()">getNextBlockOnDiskSizeWithHeader</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><code>long</code></td>
+<tr class="rowColor">
+<td class="colFirst"><code>(package private) long</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getOffset()">getOffset</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getOnDiskDataSizeWithHeader()">getOnDiskDataSizeWithHeader</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getOnDiskSizeWithHeader()">getOnDiskSizeWithHeader</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code>int</code></td>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getOnDiskSizeWithoutHeader()">getOnDiskSizeWithoutHeader</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><code>long</code></td>
+<tr class="rowColor">
+<td class="colFirst"><code>(package private) long</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getPrevBlockOffset()">getPrevBlockOffset</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getSerializedLength()">getSerializedLength</a></strong>()</code>
 <div class="block">Returns the length of the ByteBuffer required to serialized the object.</div>
 </td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><code>int</code></td>
+<tr class="rowColor">
+<td class="colFirst"><code>(package private) int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#getUncompressedSizeWithoutHeader()">getUncompressedSizeWithoutHeader</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#hashCode()">hashCode</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#hasNextBlockHeader()">hasNextBlockHeader</a></strong>()</code>
 <div class="block">Return true when this buffer includes next block's header.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#headerSize()">headerSize</a></strong>()</code>
 <div class="block">Returns the size of this block header.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#headerSize(boolean)">headerSize</a></strong>(boolean&nbsp;usesHBaseChecksum)</code>
 <div class="block">Maps a minor version to the size of the header.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#heapSize()">heapSize</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#isUnpacked()">isUnpacked</a></strong>()</code>
 <div class="block">Return true when this block's buffer has been unpacked, false otherwise.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#overwriteHeader()">overwriteHeader</a></strong>()</code>
 <div class="block">Rewinds <code>buf</code> and writes first 4 header fields.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) static boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#positionalReadWithExtra(org.apache.hadoop.fs.FSDataInputStream,%20long,%20byte[],%20int,%20int,%20int)">positionalReadWithExtra</a></strong>(org.apache.hadoop.fs.FSDataInputStream&nbsp;in,
                                               long&nbsp;position,
@@ -568,75 +578,79 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
                                               int&nbsp;bufOffset,
                                               int&nbsp;necessaryLen,
                                               int&nbsp;extraLen)</code>
-<div class="block">Read from an input stream.</div>
+<div class="block">Read from an input stream at least <code>necessaryLen</code> and if possible,
+ <code>extraLen</code> also if available.</div>
 </td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code>static boolean</code></td>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) static boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#readWithExtra(java.io.InputStream,%20byte[],%20int,%20int,%20int)">readWithExtra</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;in,
                           byte[]&nbsp;buf,
                           int&nbsp;bufOffset,
                           int&nbsp;necessaryLen,
                           int&nbsp;extraLen)</code>
-<div class="block">Read from an input stream.</div>
+<div class="block">Read from an input stream at least <code>necessaryLen</code> and if possible,
+ <code>extraLen</code> also if available.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#sanityCheck()">sanityCheck</a></strong>()</code>
 <div class="block">Checks if the block is internally consistent, i.e.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#sanityCheckAssertion(org.apache.hadoop.hbase.io.hfile.BlockType,%20org.apache.hadoop.hbase.io.hfile.BlockType)">sanityCheckAssertion</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;valueFromBuf,
                                         <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;valueFromField)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#sanityCheckAssertion(long,%20long,%20java.lang.String)">sanityCheckAssertion</a></strong>(long&nbsp;valueFromBuf,
                                         long&nbsp;valueFromField,
                                         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fieldName)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#serialize(java.nio.ByteBuffer)">serialize</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;destination)</code>
 <div class="block">Serializes its data into destination.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#serializeExtraInfo(java.nio.ByteBuffer)">serializeExtraInfo</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;destination)</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#serializeExtraInfo(java.nio.ByteBuffer)">serializeExtraInfo</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;destination)</code>
+<div class="block">Write out the content of EXTRA_SERIALIZATION_SPACE.</div>
+</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#toString()">toString</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#toStringHeader(org.apache.hadoop.hbase.nio.ByteBuff)">toStringHeader</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;buf)</code>
 <div class="block">Convert the contents of the block header into a human readable string.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#totalChecksumBytes()">totalChecksumBytes</a></strong>()</code>
-<div class="block">Calcuate the number of bytes required to store all the checksums
+<div class="block">Calculate the number of bytes required to store all the checksums
  for this block.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#unpack(org.apache.hadoop.hbase.io.hfile.HFileContext,%20org.apache.hadoop.hbase.io.hfile.HFileBlock.FSReader)">unpack</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a>&nbsp;fileContext,
             <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileBlock.FSReader</a>&nbsp;reader)</code>
 <div class="block">Retrieves the decompressed/decrypted view of this block.</div>
 </td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code>boolean</code></td>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#usesSharedMemory()">usesSharedMemory</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#validateOnDiskSizeWithoutHeader(int)">validateOnDiskSizeWithoutHeader</a></strong>(int&nbsp;expectedOnDiskSizeWithoutHeader)</code>
 <div class="block">Called after reading a block with provided onDiskSizeWithHeader.</div>
@@ -664,58 +678,54 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <!--   -->
 </a>
 <h3>Field Detail</h3>
-<a name="CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD">
+<a name="LOG">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD</h4>
-<pre>static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.96">CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD</a></pre>
-<div class="block">On a checksum failure on a Reader, these many suceeding read
- requests switch back to using hdfs checksums before auto-reenabling
- hbase checksum verification.</div>
-<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.HFileBlock.CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD">Constant Field Values</a></dd></dl>
+<h4>LOG</h4>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.101">LOG</a></pre>
 </li>
 </ul>
-<a name="FILL_HEADER">
+<a name="CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>FILL_HEADER</h4>
-<pre>public static final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.98">FILL_HEADER</a></pre>
-<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.HFileBlock.FILL_HEADER">Constant Field Values</a></dd></dl>
+<h4>CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD</h4>
+<pre>static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.107">CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD</a></pre>
+<div class="block">On a checksum failure, do these many succeeding read requests using hdfs checksums before
+ auto-reenabling hbase checksum verification.</div>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.HFileBlock.CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD">Constant Field Values</a></dd></dl>
 </li>
 </ul>
-<a name="DONT_FILL_HEADER">
+<a name="UNSET">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>DONT_FILL_HEADER</h4>
-<pre>public static final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.99">DONT_FILL_HEADER</a></pre>
-<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.HFileBlock.DONT_FILL_HEADER">Constant Field Values</a></dd></dl>
+<h4>UNSET</h4>
+<pre>private static&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.109">UNSET</a></pre>
 </li>
 </ul>
-<a name="ENCODED_HEADER_SIZE">
+<a name="FILL_HEADER">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>ENCODED_HEADER_SIZE</h4>
-<pre>public static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.105">ENCODED_HEADER_SIZE</a></pre>
-<div class="block">The size of block header when blockType is <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html#ENCODED_DATA"><code>BlockType.ENCODED_DATA</code></a>.
- This extends normal header by adding the id of encoder.</div>
-<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.HFileBlock.ENCODED_HEADER_SIZE">Constant Field Values</a></dd></dl>
+<h4>FILL_HEADER</h4>
+<pre>public static final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.110">FILL_HEADER</a></pre>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.HFileBlock.FILL_HEADER">Constant Field Values</a></dd></dl>
 </li>
 </ul>
-<a name="DUMMY_HEADER_NO_CHECKSUM">
+<a name="DONT_FILL_HEADER">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>DUMMY_HEADER_NO_CHECKSUM</h4>
-<pre>static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.108">DUMMY_HEADER_NO_CHECKSUM</a></pre>
+<h4>DONT_FILL_HEADER</h4>
+<pre>public static final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.111">DONT_FILL_HEADER</a></pre>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.HFileBlock.DONT_FILL_HEADER">Constant Field Values</a></dd></dl>
 </li>
 </ul>
 <a name="MULTI_BYTE_BUFFER_HEAP_SIZE">
@@ -724,7 +734,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>MULTI_BYTE_BUFFER_HEAP_SIZE</h4>
-<pre>public static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.112">MULTI_BYTE_BUFFER_HEAP_SIZE</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.114">MULTI_BYTE_BUFFER_HEAP_SIZE</a></pre>
 </li>
 </ul>
 <a name="EXTRA_SERIALIZATION_SPACE">
@@ -733,7 +743,12 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>EXTRA_SERIALIZATION_SPACE</h4>
-<pre>public static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.116">EXTRA_SERIALIZATION_SPACE</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.124">EXTRA_SERIALIZATION_SPACE</a></pre>
+<div class="block">See #blockDeserializer method for more info.
+ 13 bytes of extra stuff stuck on the end of the HFileBlock that we pull in from HDFS (note,
+ when we read from HDFS, we pull in an HFileBlock AND the header of the next block if one).
+ The 13 bytes are: usesHBaseChecksum (1 byte) + offset of this block (long) +
+ nextBlockOnDiskSizeWithHeader (int).</div>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.HFileBlock.EXTRA_SERIALIZATION_SPACE">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -743,18 +758,48 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>CHECKSUM_SIZE</h4>
-<pre>static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.122">CHECKSUM_SIZE</a></pre>
+<pre>static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.130">CHECKSUM_SIZE</a></pre>
 <div class="block">Each checksum value is an integer that can be stored in 4 bytes.</div>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.HFileBlock.CHECKSUM_SIZE">Constant Field Values</a></dd></dl>
 </li>
 </ul>
+<a name="DUMMY_HEADER_NO_CHECKSUM">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DUMMY_HEADER_NO_CHECKSUM</h4>
+<pre>static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.132">DUMMY_HEADER_NO_CHECKSUM</a></pre>
+</li>
+</ul>
 <a name="blockDeserializer">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>blockDeserializer</h4>
-<pre>static final&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; <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.124">blockDeserializer</a></pre>
+<pre>static final&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; <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.158">blockDeserializer</a></pre>
+<div class="block">Used deserializing blocks from Cache.
+
+ Serializing to cache is a little hard to follow. See Writer#finishBlock for where it is done.
+ When we start to append to a new HFileBlock,
+ we skip over where the header should go before we start adding Cells. When the block is
+ done, we'll then go back and fill in the header and the checksum tail. Be aware that what
+ gets serialized into the blockcache is a byte array that contains an HFileBlock followed by
+ its checksums and then the header of the next HFileBlock (needed to help navigate), followed
+ again by an extra 13 bytes of meta info needed when time to recreate the HFileBlock from cache.
+
+ ++++++++++++++
+ + HFileBlock +
+ ++++++++++++++
+ + Checksums  +
+ ++++++++++++++
+ + NextHeader +
+ ++++++++++++++
+ + ExtraMeta! +
+ ++++++++++++++
+
+ TODO: Fix it so we do NOT put the NextHeader into blockcache. It is not necessary.</div>
 </li>
 </ul>
 <a name="deserializerIdentifier">
@@ -763,7 +808,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>deserializerIdentifier</h4>
-<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.161">deserializerIdentifier</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.198">deserializerIdentifier</a></pre>
 </li>
 </ul>
 <a name="blockType">
@@ -772,7 +817,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>blockType</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.168">blockType</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.205">blockType</a></pre>
 <div class="block">Type of block. Header field 0.</div>
 </li>
 </ul>
@@ -782,8 +827,9 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>onDiskSizeWithoutHeader</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.171">onDiskSizeWithoutHeader</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.211">onDiskSizeWithoutHeader</a></pre>
 <div class="block">Size on disk excluding header, including checksum. Header field 1.</div>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.html#putHeader(byte[],%20int,%20int,%20int,%20int)"><code>HFileBlock.Writer.putHeader(byte[], int, int, int, int)</code></a></dd></dl>
 </li>
 </ul>
 <a name="uncompressedSizeWithoutHeader">
@@ -792,8 +838,9 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>uncompressedSizeWithoutHeader</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.174">uncompressedSizeWithoutHeader</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.217">uncompressedSizeWithoutHeader</a></pre>
 <div class="block">Size of pure data. Does not include header or checksums. Header field 2.</div>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.html#putHeader(byte[],%20int,%20int,%20int,%20int)"><code>HFileBlock.Writer.putHeader(byte[], int, int, int, int)</code></a></dd></dl>
 </li>
 </ul>
 <a name="prevBlockOffset">
@@ -802,8 +849,9 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>prevBlockOffset</h4>
-<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.177">prevBlockOffset</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.223">prevBlockOffset</a></pre>
 <div class="block">The offset of the previous block on disk. Header field 3.</div>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.html#putHeader(byte[],%20int,%20int,%20int,%20int)"><code>HFileBlock.Writer.putHeader(byte[], int, int, int, int)</code></a></dd></dl>
 </li>
 </ul>
 <a name="onDiskDataSizeWithHeader">
@@ -812,9 +860,10 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>onDiskDataSizeWithHeader</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.183">onDiskDataSizeWithHeader</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.230">onDiskDataSizeWithHeader</a></pre>
 <div class="block">Size on disk of header + data. Excludes checksum. Header field 6,
  OR calculated from <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#onDiskSizeWithoutHeader"><code>onDiskSizeWithoutHeader</code></a> when using HDFS checksum.</div>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.html#putHeader(byte[],%20int,%20int,%20int,%20int)"><code>HFileBlock.Writer.putHeader(byte[], int, int, int, int)</code></a></dd></dl>
 </li>
 </ul>
 <a name="buf">
@@ -823,7 +872,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>buf</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.186">buf</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.233">buf</a></pre>
 <div class="block">The in-memory representation of the hfile block</div>
 </li>
 </ul>
@@ -833,7 +882,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>fileContext</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.189">fileContext</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.236">fileContext</a></pre>
 <div class="block">Meta data that holds meta information on the hfileblock</div>
 </li>
 </ul>
@@ -843,7 +892,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>offset</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.195">offset</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.242">offset</a></pre>
 <div class="block">The offset of this block in the file. Populated by the reader for
  convenience of access. This offset is not part of the block header.</div>
 </li>
@@ -854,7 +903,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>nextBlockOnDiskSizeWithHeader</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.202">nextBlockOnDiskSizeWithHeader</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.249">nextBlockOnDiskSizeWithHeader</a></pre>
 <div class="block">The on-disk size of the next block, including the header, obtained by
  peeking into the first <a href="../../../../../../org/apache/hadoop/hbase/HConstants.html#HFILEBLOCK_HEADER_SIZE"><code>HConstants.HFILEBLOCK_HEADER_SIZE</code></a> bytes of the next block's
  header, or -1 if unknown.</div>
@@ -866,7 +915,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>memType</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile">Cacheable.MemoryType</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.204">memType</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile">Cacheable.MemoryType</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.251">memType</a></pre>
 </li>
 </ul>
 </li>
@@ -883,7 +932,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>HFileBlock</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.222">HFileBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;blockType,
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.269">HFileBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;blockType,
           int&nbsp;onDiskSizeWithoutHeader,
           int&nbsp;uncompressedSizeWithoutHeader,
           long&nbsp;prevBlockOffset,
@@ -893,10 +942,10 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
           int&nbsp;onDiskDataSizeWithHeader,
           <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a>&nbsp;fileContext)</pre>
 <div class="block">Creates a new <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFile.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFile</code></a> block from the given fields. This constructor
- is mostly used when the block data has already been read and uncompressed,
+ is used when the block data has already been read and uncompressed,
  and is sitting in a byte buffer.</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>blockType</code> - the type of this block, see <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><code>BlockType</code></a></dd><dd><code>onDiskSizeWithoutHeader</code> - see <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#onDiskSizeWithoutHeader"><code>onDiskSizeWithoutHeader</code></a></dd><dd><code>uncompressedSizeWithoutHeader</code> - see <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#uncompressedSizeWithoutHeader"><code>uncompressedSizeWithoutHeader</code></a></dd><dd><code>prevBlockOffset</code> - see <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#prevBlockOffset"><code>prevBlockOffset</code></a></dd><dd><code>buf</code> - block header (<a href="../../../../../../org/apache/hadoop/hbase/HConstants.html#HFILEBLOCK_HEADER_SIZE"><code>HConstants.HFILEBLOCK_HEA
 DER_SIZE</code></a> bytes) followed by
-          uncompressed data. This</dd><dd><code>fillHeader</code> - when true, parse <code>buf</code> and override the first 4 header fields.</dd><dd><code>offset</code> - the file offset the block was read from</dd><dd><code>onDiskDataSizeWithHeader</code> - see <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#onDiskDataSizeWithHeader"><code>onDiskDataSizeWithHeader</code></a></dd><dd><code>fileContext</code> - HFile meta data</dd></dl>
+          uncompressed data.</dd><dd><code>fillHeader</code> - when true, write the first 4 header fields into passed buffer.</dd><dd><code>offset</code> - the file offset the block was read from</dd><dd><code>onDiskDataSizeWithHeader</code> - see <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html#onDiskDataSizeWithHeader"><code>onDiskDataSizeWithHeader</code></a></dd><dd><code>fileContext</code> - HFile meta data</dd></dl>
 </li>
 </ul>
 <a name="HFileBlock(org.apache.hadoop.hbase.io.hfile.BlockType, int, int, long, java.nio.ByteBuffer, boolean, long, int, org.apache.hadoop.hbase.io.hfile.HFileContext)">
@@ -905,7 +954,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>HFileBlock</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.238">HFileBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;blockType,
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.286">HFileBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;blockType,
           int&nbsp;onDiskSizeWithoutHeader,
           int&nbsp;uncompressedSizeWithoutHeader,
           long&nbsp;prevBlockOffset,
@@ -922,7 +971,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>HFileBlock</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.248">HFileBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock</a>&nbsp;that)</pre>
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.296">HFileBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock</a>&nbsp;that)</pre>
 <div class="block">Copy constructor. Creates a shallow copy of <code>that</code>'s buffer.</div>
 </li>
 </ul>
@@ -932,7 +981,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>HFileBlock</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.260">HFileBlock</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;b,
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.308">HFileBlock</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;b,
           boolean&nbsp;usesHBaseChecksum)
      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -945,7 +994,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>HFileBlock</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.270">HFileBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;b,
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.318">HFileBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;b,
           boolean&nbsp;usesHBaseChecksum)
      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Creates a block from an existing buffer starting with a header. Rewinds
@@ -962,7 +1011,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HFileBlock</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.280">HFileBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;b,
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.328">HFileBlock</a>(<a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;b,
           boolean&nbsp;usesHBaseChecksum,
           <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile">Cacheable.MemoryType</a>&nbsp;memType)
      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -988,7 +1037,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getBlockType</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.304">getBlockType</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.352">getBlockType</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html#getBlockType()">getBlockType</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a></code></dd>
@@ -1001,7 +1050,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataBlockEncodingId</h4>
-<pre>public&nbsp;short&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.309">getDataBlockEncodingId</a>()</pre>
+<pre>public&nbsp;short&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.357">getDataBlockEncodingId</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>get data block encoding id that was used to encode this block</dd></dl>
 </li>
 </ul>
@@ -1011,7 +1060,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getOnDiskSizeWithHeader</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.320">getOnDiskSizeWithHeader</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.368">getOnDiskSizeWithHeader</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the on-disk size of header + data part + checksum.</dd></dl>
 </li>
 </ul>
@@ -1021,7 +1070,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getOnDiskSizeWithoutHeader</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.327">getOnDiskSizeWithoutHeader</a>()</pre>
+<pre>int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.375">getOnDiskSizeWithoutHeader</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the on-disk size of the data part + checksum (header excluded).</dd></dl>
 </li>
 </ul>
@@ -1031,7 +1080,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getUncompressedSizeWithoutHeader</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.334">getUncompressedSizeWithoutHeader</a>()</pre>
+<pre>int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.382">getUncompressedSizeWithoutHeader</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the uncompressed size of data part (header and checksum excluded).</dd></dl>
 </li>
 </ul>
@@ -1041,7 +1090,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getPrevBlockOffset</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.342">getPrevBlockOffset</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.390">getPrevBlockOffset</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the offset of the previous block of the same type in the file, or
          -1 if unknown</dd></dl>
 </li>
@@ -1052,7 +1101,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>overwriteHeader</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.350">overwriteHeader</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.398">overwriteHeader</a>()</pre>
 <div class="block">Rewinds <code>buf</code> and writes first 4 header fields. <code>buf</code> position
  is modified as side-effect.</div>
 </li>
@@ -1063,7 +1112,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getBufferWithoutHeader</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.368">getBufferWithoutHeader</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.416">getBufferWithoutHeader</a>()</pre>
 <div class="block">Returns a buffer that does not include the header or checksum.</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the buffer with header skipped and checksum omitted.</dd></dl>
 </li>
@@ -1074,7 +1123,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getBufferReadOnly</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.384">getBufferReadOnly</a>()</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.432">getBufferReadOnly</a>()</pre>
 <div class="block">Returns the buffer this block stores internally. The clients must not
  modify the buffer object. This method has to be public because it is used
  in <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CompoundBloomFilter.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>CompoundBloomFilter</code></a> to avoid object creation on every Bloom
@@ -1089,7 +1138,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getBufferReadOnlyWithHeader</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.397">getBufferReadOnlyWithHeader</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.445">getBufferReadOnlyWithHeader</a>()</pre>
 <div class="block">Returns the buffer of this block, including header data. The clients must
  not modify the buffer object. This method has to be public because it is
  used in <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket"><code>BucketCache</code></a> to avoid buffer copy.</div>
@@ -1102,7 +1151,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getBufferWithHeader</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.408">getBufferWithHeader</a>()</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.456">getBufferWithHeader</a>()</pre>
 <div class="block">Returns a byte buffer of this block, including header data and checksum, positioned at
  the beginning of header. The underlying data array is not copied.</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the byte buffer with header and checksum included</dd></dl>
@@ -1114,7 +1163,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>sanityCheckAssertion</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.414">sanityCheckAssertion</a>(long&nbsp;valueFromBuf,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.462">sanityCheckAssertion</a>(long&nbsp;valueFromBuf,
                         long&nbsp;valueFromField,
                         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fieldName)
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1128,7 +1177,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>sanityCheckAssertion</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.422">sanityCheckAssertion</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;valueFromBuf,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.470">sanityCheckAssertion</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;valueFromBuf,
                         <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;valueFromField)
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -1141,7 +1190,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>sanityCheck</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.437">sanityCheck</a>()
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.485">sanityCheck</a>()
            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Checks if the block is internally consistent, i.e. the first
  <a href="../../../../../../org/apache/hadoop/hbase/HConstants.html#HFILEBLOCK_HEADER_SIZE"><code>HConstants.HFILEBLOCK_HEADER_SIZE</code></a> bytes of the buffer contain a
@@ -1158,7 +1207,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/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/HFileBlock.html#line.474">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/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/HFileBlock.html#line.522">toString</a>()</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -1171,7 +1220,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>validateOnDiskSizeWithoutHeader</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.517">validateOnDiskSizeWithoutHeader</a>(int&nbsp;expectedOnDiskSizeWithoutHeader)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.565">validateOnDiskSizeWithoutHeader</a>(int&nbsp;expectedOnDiskSizeWithoutHeader)
                                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Called after reading a block with provided onDiskSizeWithHeader.</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -1184,7 +1233,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>unpack</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.542">unpack</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a>&nbsp;fileContext,
+<pre><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.590">unpack</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a>&nbsp;fileContext,
                 <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileBlock.FSReader</a>&nbsp;reader)
             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Retrieves the decompressed/decrypted view of this block. An encoded block remains in its
@@ -1199,7 +1248,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>hasNextBlockHeader</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.584">hasNextBlockHeader</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.632">hasNextBlockHeader</a>()</pre>
 <div class="block">Return true when this buffer includes next block's header.</div>
 </li>
 </ul>
@@ -1209,7 +1258,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>allocateBuffer</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.593">allocateBuffer</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.641">allocateBuffer</a>()</pre>
 <div class="block">Always allocates a new buffer of the correct size. Copies header bytes
  from the existing buffer. Does not change header fields.
  Reserve room to keep checksum bytes too.</div>
@@ -1221,7 +1270,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>isUnpacked</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.616">isUnpacked</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.664">isUnpacked</a>()</pre>
 <div class="block">Return true when this block's buffer has been unpacked, false otherwise. Note this is a
  calculated heuristic, not tracked attribute of the block.</div>
 </li>
@@ -1232,33 +1281,20 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>assumeUncompressed</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.625">assumeUncompressed</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.673">assumeUncompressed</a>()
                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">An additional sanity-check in case no compression or encryption is being used.</div>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/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="expectType(org.apache.hadoop.hbase.io.hfile.BlockType)">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>expectType</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.639">expectType</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;expectedType)
-                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
-<dl><dt><span class="strong">Parameters:</span></dt><dd><code>expectedType</code> - the expected type of this block</dd>
-<dt><span class="strong">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if this block's type is different than expected</dd></dl>
-</li>
-</ul>
 <a name="getOffset()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getOffset</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.647">getOffset</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.684">getOffset</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the offset of this block in the file it was read from</dd></dl>
 </li>
 </ul>
@@ -1268,7 +1304,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getByteStream</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/DataInputStream.html?is-external=true" title="class or interface in java.io">DataInputStream</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.658">getByteStream</a>()</pre>
+<pre><a href="http://docs.oracle.com/javase/7/docs/api/java/io/DataInputStream.html?is-external=true" title="class or interface in java.io">DataInputStream</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.695">getByteStream</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>a byte stream reading the data + checksum of this block</dd></dl>
 </li>
 </ul>
@@ -1278,7 +1314,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>heapSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.665">heapSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.702">heapSize</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></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>
@@ -1292,18 +1328,17 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>readWithExtra</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.702">readWithExtra</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;in,
+<pre>static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.738">readWithExtra</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;in,
                     byte[]&nbsp;buf,
                     int&nbsp;bufOffset,
                     int&nbsp;necessaryLen,
                     int&nbsp;extraLen)
-                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
-<div class="block">Read from an input stream. Analogous to
+                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<div class="block">Read from an input stream at least <code>necessaryLen</code> and if possible,
+ <code>extraLen</code> also if available. Analogous to
  <code>IOUtils.readFully(InputStream, byte[], int, int)</code>, but specifies a
- number of "extra" bytes that would be desirable but not absolutely
- necessary to read.</div>
-<dl><dt><span class="strong">Parameters:</span></dt><dd><code>in</code> - the input stream to read from</dd><dd><code>buf</code> - the buffer to read into</dd><dd><code>bufOffset</code> - the destination offset in the buffer</dd><dd><code>necessaryLen</code> - the number of bytes that are absolutely necessary to
-          read</dd><dd><code>extraLen</code> - the number of extra bytes that would be nice to read</dd>
+ number of "extra" bytes to also optionally read.</div>
+<dl><dt><span class="strong">Parameters:</span></dt><dd><code>in</code> - the input stream to read from</dd><dd><code>buf</code> - the buffer to read into</dd><dd><code>bufOffset</code> - the destination offset in the buffer</dd><dd><code>necessaryLen</code> - the number of bytes that are absolutely necessary to read</dd><dd><code>extraLen</code> - the number of extra bytes that would be nice to read</dd>
 <dt><span class="strong">Returns:</span></dt><dd>true if succeeded reading the extra bytes</dd>
 <dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - if failed to read the necessary bytes</dd></dl>
@@ -1315,14 +1350,15 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>positionalReadWithExtra</h4>
-<pre>static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.743">positionalReadWithExtra</a>(org.apache.hadoop.fs.FSDataInputStream&nbsp;in,
+<pre>static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.780">positionalReadWithExtra</a>(org.apache.hadoop.fs.FSDataInputStream&nbsp;in,
                               long&nbsp;position,
                               byte[]&nbsp;buf,
                               int&nbsp;bufOffset,
                               int&nbsp;necessaryLen,
                               int&nbsp;extraLen)
                                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
-<div class="block">Read from an input stream. Analogous to
+<div class="block">Read from an input stream at least <code>necessaryLen</code> and if possible,
+ <code>extraLen</code> also if available. Analogous to
  <code>IOUtils.readFully(InputStream, byte[], int, int)</code>, but uses
  positional read and specifies a number of "extra" bytes that would be
  desirable but not absolutely necessary to read.</div>
@@ -1340,7 +1376,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getNextBlockOnDiskSizeWithHeader</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.768">getNextBlockOnDiskSizeWithHeader</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.805">getNextBlockOnDiskSizeWithHeader</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the on-disk size of the next block (including the header size)
          that was read by peeking into the next block's header</dd></dl>
 </li>
@@ -1351,7 +1387,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getSerializedLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1764">getSerializedLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1823">getSerializedLength</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html#getSerializedLength()">Cacheable</a></code></strong></div>
 <div class="block">Returns the length of the ByteBuffer required to serialized the object. If the
  object cannot be serialized, it should return 0.</div>
@@ -1367,7 +1403,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>serialize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1774">serialize</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;destination)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock

<TRUNCATED>