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 2015/12/14 17:38:23 UTC

[12/45] hbase-site git commit: Published site at 04622254f7209c5cfeadcfa137a97fbed161075a.

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/736088b3/xref-test/org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html b/xref-test/org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html
index 58d8f10..1d60c2d 100644
--- a/xref-test/org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html
+++ b/xref-test/org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html
@@ -931,524 +931,656 @@
 <a class="jxr_linenumber" name="921" href="#921">921</a>   }
 <a class="jxr_linenumber" name="922" href="#922">922</a> 
 <a class="jxr_linenumber" name="923" href="#923">923</a>   @Test
-<a class="jxr_linenumber" name="924" href="#924">924</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScanWithException() <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
-<a class="jxr_linenumber" name="925" href="#925">925</a>     HTable table = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="926" href="#926">926</a>     <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="927" href="#927">927</a>       latch = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
-<a class="jxr_linenumber" name="928" href="#928">928</a>       exceptionLatch = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
-<a class="jxr_linenumber" name="929" href="#929">929</a>       TableName tableName = TableName.valueOf(<span class="jxr_string">"testScanWithException"</span>);
-<a class="jxr_linenumber" name="930" href="#930">930</a>       <em class="jxr_comment">// Create KV that will give you two blocks</em>
-<a class="jxr_linenumber" name="931" href="#931">931</a>       <em class="jxr_comment">// Create a table with block size as 1024</em>
-<a class="jxr_linenumber" name="932" href="#932">932</a>       table = TEST_UTIL.createTable(tableName, FAMILIES_1, 1, 1024,
-<a class="jxr_linenumber" name="933" href="#933">933</a>           CustomInnerRegionObserverWrapper.<strong class="jxr_keyword">class</strong>.getName());
-<a class="jxr_linenumber" name="934" href="#934">934</a>       <em class="jxr_comment">// get the block cache and region</em>
-<a class="jxr_linenumber" name="935" href="#935">935</a>       RegionLocator locator = table.getRegionLocator();
-<a class="jxr_linenumber" name="936" href="#936">936</a>       String regionName = locator.getAllRegionLocations().get(0).getRegionInfo().getEncodedName();
-<a class="jxr_linenumber" name="937" href="#937">937</a>       Region region = TEST_UTIL.getRSForFirstRegionInTable(tableName).getFromOnlineRegions(
-<a class="jxr_linenumber" name="938" href="#938">938</a>           regionName);
-<a class="jxr_linenumber" name="939" href="#939">939</a>       Store store = region.getStores().iterator().next();
-<a class="jxr_linenumber" name="940" href="#940">940</a>       CacheConfig cacheConf = store.getCacheConfig();
-<a class="jxr_linenumber" name="941" href="#941">941</a>       cacheConf.setCacheDataOnWrite(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="942" href="#942">942</a>       cacheConf.setEvictOnClose(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="943" href="#943">943</a>       BlockCache cache = cacheConf.getBlockCache();
-<a class="jxr_linenumber" name="944" href="#944">944</a>       <em class="jxr_comment">// insert data. 2 Rows are added</em>
-<a class="jxr_linenumber" name="945" href="#945">945</a>       insertData(table);
-<a class="jxr_linenumber" name="946" href="#946">946</a>       <em class="jxr_comment">// flush the data</em>
-<a class="jxr_linenumber" name="947" href="#947">947</a>       System.out.println(<span class="jxr_string">"Flushing cache"</span>);
-<a class="jxr_linenumber" name="948" href="#948">948</a>       <em class="jxr_comment">// Should create one Hfile with 2 blocks</em>
-<a class="jxr_linenumber" name="949" href="#949">949</a>       region.flush(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="950" href="#950">950</a>       <em class="jxr_comment">// CustomInnerRegionObserver.sleepTime.set(5000);</em>
-<a class="jxr_linenumber" name="951" href="#951">951</a>       CustomInnerRegionObserver.throwException.set(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="952" href="#952">952</a>       <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">ScanThread</a>[] scanThreads = initiateScan(table, false);
-<a class="jxr_linenumber" name="953" href="#953">953</a>       <em class="jxr_comment">// The block would have been decremented for the scan case as it was</em>
-<a class="jxr_linenumber" name="954" href="#954">954</a>       <em class="jxr_comment">// wrapped</em>
-<a class="jxr_linenumber" name="955" href="#955">955</a>       <em class="jxr_comment">// before even the postNext hook gets executed.</em>
-<a class="jxr_linenumber" name="956" href="#956">956</a>       <em class="jxr_comment">// giving some time for the block to be decremented</em>
-<a class="jxr_linenumber" name="957" href="#957">957</a>       Thread.sleep(100);
-<a class="jxr_linenumber" name="958" href="#958">958</a>       Iterator&lt;CachedBlock&gt; iterator = cache.iterator();
-<a class="jxr_linenumber" name="959" href="#959">959</a>       <strong class="jxr_keyword">boolean</strong> usedBlocksFound = false;
-<a class="jxr_linenumber" name="960" href="#960">960</a>       <strong class="jxr_keyword">int</strong> refCount = 0;
-<a class="jxr_linenumber" name="961" href="#961">961</a>       <strong class="jxr_keyword">while</strong> (iterator.hasNext()) {
-<a class="jxr_linenumber" name="962" href="#962">962</a>         <a href="../../../../../org/apache/hadoop/hbase/io/hfile/TestCachedBlockQueue.html">CachedBlock</a> next = iterator.next();
-<a class="jxr_linenumber" name="963" href="#963">963</a>         BlockCacheKey cacheKey = <strong class="jxr_keyword">new</strong> BlockCacheKey(next.getFilename(), next.getOffset());
-<a class="jxr_linenumber" name="964" href="#964">964</a>         <strong class="jxr_keyword">if</strong> (cache instanceof BucketCache) {
-<a class="jxr_linenumber" name="965" href="#965">965</a>           refCount = ((BucketCache) cache).getRefCount(cacheKey);
-<a class="jxr_linenumber" name="966" href="#966">966</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (cache instanceof CombinedBlockCache) {
-<a class="jxr_linenumber" name="967" href="#967">967</a>           refCount = ((CombinedBlockCache) cache).getRefCount(cacheKey);
-<a class="jxr_linenumber" name="968" href="#968">968</a>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="969" href="#969">969</a>           <strong class="jxr_keyword">continue</strong>;
-<a class="jxr_linenumber" name="970" href="#970">970</a>         }
-<a class="jxr_linenumber" name="971" href="#971">971</a>         <strong class="jxr_keyword">if</strong> (refCount != 0) {
-<a class="jxr_linenumber" name="972" href="#972">972</a>           <em class="jxr_comment">// Blocks will be with count 3</em>
-<a class="jxr_linenumber" name="973" href="#973">973</a>           assertEquals(NO_OF_THREADS, refCount);
-<a class="jxr_linenumber" name="974" href="#974">974</a>           usedBlocksFound = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="975" href="#975">975</a>         }
-<a class="jxr_linenumber" name="976" href="#976">976</a>       }
-<a class="jxr_linenumber" name="977" href="#977">977</a>       assertTrue(usedBlocksFound);
-<a class="jxr_linenumber" name="978" href="#978">978</a>       exceptionLatch.countDown();
-<a class="jxr_linenumber" name="979" href="#979">979</a>       <em class="jxr_comment">// countdown the latch</em>
-<a class="jxr_linenumber" name="980" href="#980">980</a>       CustomInnerRegionObserver.getCdl().get().countDown();
-<a class="jxr_linenumber" name="981" href="#981">981</a>       <strong class="jxr_keyword">for</strong> (ScanThread thread : scanThreads) {
-<a class="jxr_linenumber" name="982" href="#982">982</a>         thread.join();
-<a class="jxr_linenumber" name="983" href="#983">983</a>       }
-<a class="jxr_linenumber" name="984" href="#984">984</a>       iterator = cache.iterator();
-<a class="jxr_linenumber" name="985" href="#985">985</a>       usedBlocksFound = false;
-<a class="jxr_linenumber" name="986" href="#986">986</a>       refCount = 0;
-<a class="jxr_linenumber" name="987" href="#987">987</a>       <strong class="jxr_keyword">while</strong> (iterator.hasNext()) {
-<a class="jxr_linenumber" name="988" href="#988">988</a>         <a href="../../../../../org/apache/hadoop/hbase/io/hfile/TestCachedBlockQueue.html">CachedBlock</a> next = iterator.next();
-<a class="jxr_linenumber" name="989" href="#989">989</a>         BlockCacheKey cacheKey = <strong class="jxr_keyword">new</strong> BlockCacheKey(next.getFilename(), next.getOffset());
-<a class="jxr_linenumber" name="990" href="#990">990</a>         <strong class="jxr_keyword">if</strong> (cache instanceof BucketCache) {
-<a class="jxr_linenumber" name="991" href="#991">991</a>           refCount = ((BucketCache) cache).getRefCount(cacheKey);
-<a class="jxr_linenumber" name="992" href="#992">992</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (cache instanceof CombinedBlockCache) {
-<a class="jxr_linenumber" name="993" href="#993">993</a>           refCount = ((CombinedBlockCache) cache).getRefCount(cacheKey);
-<a class="jxr_linenumber" name="994" href="#994">994</a>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="995" href="#995">995</a>           <strong class="jxr_keyword">continue</strong>;
-<a class="jxr_linenumber" name="996" href="#996">996</a>         }
-<a class="jxr_linenumber" name="997" href="#997">997</a>         <strong class="jxr_keyword">if</strong> (refCount != 0) {
-<a class="jxr_linenumber" name="998" href="#998">998</a>           <em class="jxr_comment">// Blocks will be with count 3</em>
-<a class="jxr_linenumber" name="999" href="#999">999</a>           assertEquals(NO_OF_THREADS, refCount);
-<a class="jxr_linenumber" name="1000" href="#1000">1000</a>           usedBlocksFound = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="1001" href="#1001">1001</a>         }
-<a class="jxr_linenumber" name="1002" href="#1002">1002</a>       }
-<a class="jxr_linenumber" name="1003" href="#1003">1003</a>       assertTrue(usedBlocksFound);
-<a class="jxr_linenumber" name="1004" href="#1004">1004</a>       <em class="jxr_comment">// Sleep till the scan lease would expire? Can we reduce this value?</em>
-<a class="jxr_linenumber" name="1005" href="#1005">1005</a>       Thread.sleep(5100);
-<a class="jxr_linenumber" name="1006" href="#1006">1006</a>       iterator = cache.iterator();
-<a class="jxr_linenumber" name="1007" href="#1007">1007</a>       refCount = 0;
-<a class="jxr_linenumber" name="1008" href="#1008">1008</a>       <strong class="jxr_keyword">while</strong> (iterator.hasNext()) {
-<a class="jxr_linenumber" name="1009" href="#1009">1009</a>         <a href="../../../../../org/apache/hadoop/hbase/io/hfile/TestCachedBlockQueue.html">CachedBlock</a> next = iterator.next();
-<a class="jxr_linenumber" name="1010" href="#1010">1010</a>         BlockCacheKey cacheKey = <strong class="jxr_keyword">new</strong> BlockCacheKey(next.getFilename(), next.getOffset());
-<a class="jxr_linenumber" name="1011" href="#1011">1011</a>         <strong class="jxr_keyword">if</strong> (cache instanceof BucketCache) {
-<a class="jxr_linenumber" name="1012" href="#1012">1012</a>           refCount = ((BucketCache) cache).getRefCount(cacheKey);
-<a class="jxr_linenumber" name="1013" href="#1013">1013</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (cache instanceof CombinedBlockCache) {
-<a class="jxr_linenumber" name="1014" href="#1014">1014</a>           refCount = ((CombinedBlockCache) cache).getRefCount(cacheKey);
-<a class="jxr_linenumber" name="1015" href="#1015">1015</a>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="1016" href="#1016">1016</a>           <strong class="jxr_keyword">continue</strong>;
-<a class="jxr_linenumber" name="1017" href="#1017">1017</a>         }
-<a class="jxr_linenumber" name="1018" href="#1018">1018</a>         assertEquals(0, refCount);
-<a class="jxr_linenumber" name="1019" href="#1019">1019</a>       }
-<a class="jxr_linenumber" name="1020" href="#1020">1020</a>     } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="1021" href="#1021">1021</a>       <strong class="jxr_keyword">if</strong> (table != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="1022" href="#1022">1022</a>         table.close();
-<a class="jxr_linenumber" name="1023" href="#1023">1023</a>       }
-<a class="jxr_linenumber" name="1024" href="#1024">1024</a>     }
-<a class="jxr_linenumber" name="1025" href="#1025">1025</a>   }
-<a class="jxr_linenumber" name="1026" href="#1026">1026</a> 
-<a class="jxr_linenumber" name="1027" href="#1027">1027</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> iterateBlockCache(BlockCache cache, Iterator&lt;CachedBlock&gt; iterator) {
-<a class="jxr_linenumber" name="1028" href="#1028">1028</a>     <strong class="jxr_keyword">int</strong> refCount;
-<a class="jxr_linenumber" name="1029" href="#1029">1029</a>     <strong class="jxr_keyword">while</strong> (iterator.hasNext()) {
-<a class="jxr_linenumber" name="1030" href="#1030">1030</a>       <a href="../../../../../org/apache/hadoop/hbase/io/hfile/TestCachedBlockQueue.html">CachedBlock</a> next = iterator.next();
-<a class="jxr_linenumber" name="1031" href="#1031">1031</a>       BlockCacheKey cacheKey = <strong class="jxr_keyword">new</strong> BlockCacheKey(next.getFilename(), next.getOffset());
-<a class="jxr_linenumber" name="1032" href="#1032">1032</a>       <strong class="jxr_keyword">if</strong> (cache instanceof BucketCache) {
-<a class="jxr_linenumber" name="1033" href="#1033">1033</a>         refCount = ((BucketCache) cache).getRefCount(cacheKey);
-<a class="jxr_linenumber" name="1034" href="#1034">1034</a>       } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (cache instanceof CombinedBlockCache) {
-<a class="jxr_linenumber" name="1035" href="#1035">1035</a>         refCount = ((CombinedBlockCache) cache).getRefCount(cacheKey);
-<a class="jxr_linenumber" name="1036" href="#1036">1036</a>       } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="1037" href="#1037">1037</a>         <strong class="jxr_keyword">continue</strong>;
-<a class="jxr_linenumber" name="1038" href="#1038">1038</a>       }
-<a class="jxr_linenumber" name="1039" href="#1039">1039</a>       assertEquals(0, refCount);
-<a class="jxr_linenumber" name="1040" href="#1040">1040</a>     }
-<a class="jxr_linenumber" name="1041" href="#1041">1041</a>   }
-<a class="jxr_linenumber" name="1042" href="#1042">1042</a> 
-<a class="jxr_linenumber" name="1043" href="#1043">1043</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> insertData(HTable table) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1044" href="#1044">1044</a>     Put put = <strong class="jxr_keyword">new</strong> Put(ROW);
-<a class="jxr_linenumber" name="1045" href="#1045">1045</a>     put.addColumn(FAMILY, QUALIFIER, data);
-<a class="jxr_linenumber" name="1046" href="#1046">1046</a>     table.put(put);
-<a class="jxr_linenumber" name="1047" href="#1047">1047</a>     put = <strong class="jxr_keyword">new</strong> Put(ROW1);
-<a class="jxr_linenumber" name="1048" href="#1048">1048</a>     put.addColumn(FAMILY, QUALIFIER, data);
-<a class="jxr_linenumber" name="1049" href="#1049">1049</a>     table.put(put);
-<a class="jxr_linenumber" name="1050" href="#1050">1050</a>     byte[] QUALIFIER2 = Bytes.add(QUALIFIER, QUALIFIER);
-<a class="jxr_linenumber" name="1051" href="#1051">1051</a>     put = <strong class="jxr_keyword">new</strong> Put(ROW);
-<a class="jxr_linenumber" name="1052" href="#1052">1052</a>     put.addColumn(FAMILY, QUALIFIER2, data2);
-<a class="jxr_linenumber" name="1053" href="#1053">1053</a>     table.put(put);
-<a class="jxr_linenumber" name="1054" href="#1054">1054</a>   }
-<a class="jxr_linenumber" name="1055" href="#1055">1055</a> 
-<a class="jxr_linenumber" name="1056" href="#1056">1056</a>   <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">ScanThread</a>[] initiateScan(HTable table, <strong class="jxr_keyword">boolean</strong> reverse) <strong class="jxr_keyword">throws</strong> IOException,
-<a class="jxr_linenumber" name="1057" href="#1057">1057</a>       InterruptedException {
-<a class="jxr_linenumber" name="1058" href="#1058">1058</a>     <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">ScanThread</a>[] scanThreads = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">ScanThread</a>[NO_OF_THREADS];
-<a class="jxr_linenumber" name="1059" href="#1059">1059</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; NO_OF_THREADS; i++) {
-<a class="jxr_linenumber" name="1060" href="#1060">1060</a>       scanThreads[i] = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">ScanThread</a>(table, reverse);
-<a class="jxr_linenumber" name="1061" href="#1061">1061</a>     }
-<a class="jxr_linenumber" name="1062" href="#1062">1062</a>     <strong class="jxr_keyword">for</strong> (ScanThread thread : scanThreads) {
-<a class="jxr_linenumber" name="1063" href="#1063">1063</a>       thread.start();
-<a class="jxr_linenumber" name="1064" href="#1064">1064</a>     }
-<a class="jxr_linenumber" name="1065" href="#1065">1065</a>     <strong class="jxr_keyword">return</strong> scanThreads;
-<a class="jxr_linenumber" name="1066" href="#1066">1066</a>   }
-<a class="jxr_linenumber" name="1067" href="#1067">1067</a> 
-<a class="jxr_linenumber" name="1068" href="#1068">1068</a>   <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">GetThread</a>[] initiateGet(HTable table, <strong class="jxr_keyword">boolean</strong> tracker, <strong class="jxr_keyword">boolean</strong> multipleCFs)
-<a class="jxr_linenumber" name="1069" href="#1069">1069</a>       <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
-<a class="jxr_linenumber" name="1070" href="#1070">1070</a>     <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">GetThread</a>[] getThreads = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">GetThread</a>[NO_OF_THREADS];
-<a class="jxr_linenumber" name="1071" href="#1071">1071</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; NO_OF_THREADS; i++) {
-<a class="jxr_linenumber" name="1072" href="#1072">1072</a>       getThreads[i] = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">GetThread</a>(table, tracker, multipleCFs);
-<a class="jxr_linenumber" name="1073" href="#1073">1073</a>     }
-<a class="jxr_linenumber" name="1074" href="#1074">1074</a>     <strong class="jxr_keyword">for</strong> (GetThread thread : getThreads) {
-<a class="jxr_linenumber" name="1075" href="#1075">1075</a>       thread.start();
-<a class="jxr_linenumber" name="1076" href="#1076">1076</a>     }
-<a class="jxr_linenumber" name="1077" href="#1077">1077</a>     <strong class="jxr_keyword">return</strong> getThreads;
-<a class="jxr_linenumber" name="1078" href="#1078">1078</a>   }
-<a class="jxr_linenumber" name="1079" href="#1079">1079</a> 
-<a class="jxr_linenumber" name="1080" href="#1080">1080</a>   <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">MultiGetThread</a>[] initiateMultiGet(HTable table)
-<a class="jxr_linenumber" name="1081" href="#1081">1081</a>       <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
-<a class="jxr_linenumber" name="1082" href="#1082">1082</a>     <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">MultiGetThread</a>[] multiGetThreads = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">MultiGetThread</a>[NO_OF_THREADS];
-<a class="jxr_linenumber" name="1083" href="#1083">1083</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; NO_OF_THREADS; i++) {
-<a class="jxr_linenumber" name="1084" href="#1084">1084</a>       multiGetThreads[i] = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">MultiGetThread</a>(table);
-<a class="jxr_linenumber" name="1085" href="#1085">1085</a>     }
-<a class="jxr_linenumber" name="1086" href="#1086">1086</a>     <strong class="jxr_keyword">for</strong> (MultiGetThread thread : multiGetThreads) {
-<a class="jxr_linenumber" name="1087" href="#1087">1087</a>       thread.start();
-<a class="jxr_linenumber" name="1088" href="#1088">1088</a>     }
-<a class="jxr_linenumber" name="1089" href="#1089">1089</a>     <strong class="jxr_keyword">return</strong> multiGetThreads;
-<a class="jxr_linenumber" name="1090" href="#1090">1090</a>   }
-<a class="jxr_linenumber" name="1091" href="#1091">1091</a> 
-<a class="jxr_linenumber" name="1092" href="#1092">1092</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> checkForBlockEviction(BlockCache cache, <strong class="jxr_keyword">boolean</strong> getClosed, <strong class="jxr_keyword">boolean</strong> expectOnlyZero,
-<a class="jxr_linenumber" name="1093" href="#1093">1093</a>       <strong class="jxr_keyword">boolean</strong> wrappedCp) <strong class="jxr_keyword">throws</strong> InterruptedException {
-<a class="jxr_linenumber" name="1094" href="#1094">1094</a>     <strong class="jxr_keyword">int</strong> counter = NO_OF_THREADS;
-<a class="jxr_linenumber" name="1095" href="#1095">1095</a>     <strong class="jxr_keyword">if</strong> (CustomInnerRegionObserver.waitForGets.get()) {
-<a class="jxr_linenumber" name="1096" href="#1096">1096</a>       <em class="jxr_comment">// Because only one row is selected, it has only 2 blocks</em>
-<a class="jxr_linenumber" name="1097" href="#1097">1097</a>       counter = counter - 1;
-<a class="jxr_linenumber" name="1098" href="#1098">1098</a>       <strong class="jxr_keyword">while</strong> (CustomInnerRegionObserver.countOfGets.get() &lt; NO_OF_THREADS) {
-<a class="jxr_linenumber" name="1099" href="#1099">1099</a>         Thread.sleep(100);
-<a class="jxr_linenumber" name="1100" href="#1100">1100</a>       }
-<a class="jxr_linenumber" name="1101" href="#1101">1101</a>     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="1102" href="#1102">1102</a>       <strong class="jxr_keyword">while</strong> (CustomInnerRegionObserver.countOfNext.get() &lt; NO_OF_THREADS) {
-<a class="jxr_linenumber" name="1103" href="#1103">1103</a>         Thread.sleep(100);
-<a class="jxr_linenumber" name="1104" href="#1104">1104</a>       }
-<a class="jxr_linenumber" name="1105" href="#1105">1105</a>     }
-<a class="jxr_linenumber" name="1106" href="#1106">1106</a>     Iterator&lt;CachedBlock&gt; iterator = cache.iterator();
-<a class="jxr_linenumber" name="1107" href="#1107">1107</a>     <strong class="jxr_keyword">int</strong> refCount = 0;
-<a class="jxr_linenumber" name="1108" href="#1108">1108</a>     <strong class="jxr_keyword">while</strong> (iterator.hasNext()) {
-<a class="jxr_linenumber" name="1109" href="#1109">1109</a>       <a href="../../../../../org/apache/hadoop/hbase/io/hfile/TestCachedBlockQueue.html">CachedBlock</a> next = iterator.next();
-<a class="jxr_linenumber" name="1110" href="#1110">1110</a>       BlockCacheKey cacheKey = <strong class="jxr_keyword">new</strong> BlockCacheKey(next.getFilename(), next.getOffset());
-<a class="jxr_linenumber" name="1111" href="#1111">1111</a>       <strong class="jxr_keyword">if</strong> (cache instanceof BucketCache) {
-<a class="jxr_linenumber" name="1112" href="#1112">1112</a>         refCount = ((BucketCache) cache).getRefCount(cacheKey);
-<a class="jxr_linenumber" name="1113" href="#1113">1113</a>       } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (cache instanceof CombinedBlockCache) {
-<a class="jxr_linenumber" name="1114" href="#1114">1114</a>         refCount = ((CombinedBlockCache) cache).getRefCount(cacheKey);
-<a class="jxr_linenumber" name="1115" href="#1115">1115</a>       } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="1116" href="#1116">1116</a>         <strong class="jxr_keyword">continue</strong>;
-<a class="jxr_linenumber" name="1117" href="#1117">1117</a>       }
-<a class="jxr_linenumber" name="1118" href="#1118">1118</a>       System.out.println(<span class="jxr_string">" the refcount is "</span> + refCount + <span class="jxr_string">" block is "</span> + cacheKey);
-<a class="jxr_linenumber" name="1119" href="#1119">1119</a>       <strong class="jxr_keyword">if</strong> (CustomInnerRegionObserver.waitForGets.get()) {
-<a class="jxr_linenumber" name="1120" href="#1120">1120</a>         <strong class="jxr_keyword">if</strong> (expectOnlyZero) {
-<a class="jxr_linenumber" name="1121" href="#1121">1121</a>           assertTrue(refCount == 0);
-<a class="jxr_linenumber" name="1122" href="#1122">1122</a>         }
-<a class="jxr_linenumber" name="1123" href="#1123">1123</a>         <strong class="jxr_keyword">if</strong> (refCount != 0) {
-<a class="jxr_linenumber" name="1124" href="#1124">1124</a>           <em class="jxr_comment">// Because the scan would have also touched up on these blocks but</em>
-<a class="jxr_linenumber" name="1125" href="#1125">1125</a>           <em class="jxr_comment">// it</em>
-<a class="jxr_linenumber" name="1126" href="#1126">1126</a>           <em class="jxr_comment">// would have touched</em>
-<a class="jxr_linenumber" name="1127" href="#1127">1127</a>           <em class="jxr_comment">// all 3</em>
-<a class="jxr_linenumber" name="1128" href="#1128">1128</a>           <strong class="jxr_keyword">if</strong> (getClosed) {
-<a class="jxr_linenumber" name="1129" href="#1129">1129</a>             <em class="jxr_comment">// If get has closed only the scan's blocks would be available</em>
-<a class="jxr_linenumber" name="1130" href="#1130">1130</a>             assertEquals(refCount, CustomInnerRegionObserver.countOfGets.get());
-<a class="jxr_linenumber" name="1131" href="#1131">1131</a>           } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="1132" href="#1132">1132</a>               assertEquals(refCount, CustomInnerRegionObserver.countOfGets.get() + (NO_OF_THREADS));
-<a class="jxr_linenumber" name="1133" href="#1133">1133</a>           }
-<a class="jxr_linenumber" name="1134" href="#1134">1134</a>         }
-<a class="jxr_linenumber" name="1135" href="#1135">1135</a>       } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="1136" href="#1136">1136</a>         <em class="jxr_comment">// Because the get would have also touched up on these blocks but it</em>
-<a class="jxr_linenumber" name="1137" href="#1137">1137</a>         <em class="jxr_comment">// would have touched</em>
-<a class="jxr_linenumber" name="1138" href="#1138">1138</a>         <em class="jxr_comment">// upon only 2 additionally</em>
-<a class="jxr_linenumber" name="1139" href="#1139">1139</a>         <strong class="jxr_keyword">if</strong> (expectOnlyZero) {
-<a class="jxr_linenumber" name="1140" href="#1140">1140</a>           assertTrue(refCount == 0);
-<a class="jxr_linenumber" name="1141" href="#1141">1141</a>         }
-<a class="jxr_linenumber" name="1142" href="#1142">1142</a>         <strong class="jxr_keyword">if</strong> (refCount != 0) {
-<a class="jxr_linenumber" name="1143" href="#1143">1143</a>           <strong class="jxr_keyword">if</strong> (getLatch == <strong class="jxr_keyword">null</strong> || wrappedCp) {
-<a class="jxr_linenumber" name="1144" href="#1144">1144</a>             assertEquals(refCount, CustomInnerRegionObserver.countOfNext.get());
-<a class="jxr_linenumber" name="1145" href="#1145">1145</a>           } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="1146" href="#1146">1146</a>             assertEquals(refCount, CustomInnerRegionObserver.countOfNext.get() + (NO_OF_THREADS));
-<a class="jxr_linenumber" name="1147" href="#1147">1147</a>           }
-<a class="jxr_linenumber" name="1148" href="#1148">1148</a>         }
-<a class="jxr_linenumber" name="1149" href="#1149">1149</a>       }
-<a class="jxr_linenumber" name="1150" href="#1150">1150</a>     }
-<a class="jxr_linenumber" name="1151" href="#1151">1151</a>     CustomInnerRegionObserver.getCdl().get().countDown();
-<a class="jxr_linenumber" name="1152" href="#1152">1152</a>   }
-<a class="jxr_linenumber" name="1153" href="#1153">1153</a> 
-<a class="jxr_linenumber" name="1154" href="#1154">1154</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">MultiGetThread</a> <strong class="jxr_keyword">extends</strong> Thread {
-<a class="jxr_linenumber" name="1155" href="#1155">1155</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> HTable table;
-<a class="jxr_linenumber" name="1156" href="#1156">1156</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> List&lt;Get&gt; gets = <strong class="jxr_keyword">new</strong> ArrayList&lt;Get&gt;();
-<a class="jxr_linenumber" name="1157" href="#1157">1157</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">MultiGetThread</a>(HTable table) {
-<a class="jxr_linenumber" name="1158" href="#1158">1158</a>       <strong class="jxr_keyword">this</strong>.table = table;
-<a class="jxr_linenumber" name="1159" href="#1159">1159</a>     }
-<a class="jxr_linenumber" name="1160" href="#1160">1160</a>     @Override
-<a class="jxr_linenumber" name="1161" href="#1161">1161</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> run() {
-<a class="jxr_linenumber" name="1162" href="#1162">1162</a>       gets.add(<strong class="jxr_keyword">new</strong> Get(ROW));
-<a class="jxr_linenumber" name="1163" href="#1163">1163</a>       gets.add(<strong class="jxr_keyword">new</strong> Get(ROW1));
-<a class="jxr_linenumber" name="1164" href="#1164">1164</a>       <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="1165" href="#1165">1165</a>         CustomInnerRegionObserver.getCdl().set(latch);
-<a class="jxr_linenumber" name="1166" href="#1166">1166</a>         Result[] r = table.get(gets);
-<a class="jxr_linenumber" name="1167" href="#1167">1167</a>         assertTrue(Bytes.equals(r[0].getRow(), ROW));
-<a class="jxr_linenumber" name="1168" href="#1168">1168</a>         assertTrue(Bytes.equals(r[1].getRow(), ROW1));
-<a class="jxr_linenumber" name="1169" href="#1169">1169</a>       } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="924" href="#924">924</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testBlockEvictionAfterHBASE13082WithCompactionAndFlush()
+<a class="jxr_linenumber" name="925" href="#925">925</a>       <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
+<a class="jxr_linenumber" name="926" href="#926">926</a>     <em class="jxr_comment">// do flush and scan in parallel</em>
+<a class="jxr_linenumber" name="927" href="#927">927</a>     HTable table = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="928" href="#928">928</a>     <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="929" href="#929">929</a>       latch = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
+<a class="jxr_linenumber" name="930" href="#930">930</a>       compactionLatch = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
+<a class="jxr_linenumber" name="931" href="#931">931</a>       TableName tableName =
+<a class="jxr_linenumber" name="932" href="#932">932</a>           TableName.valueOf(<span class="jxr_string">"testBlockEvictionAfterHBASE13082WithCompactionAndFlush"</span>);
+<a class="jxr_linenumber" name="933" href="#933">933</a>       <em class="jxr_comment">// Create a table with block size as 1024</em>
+<a class="jxr_linenumber" name="934" href="#934">934</a>       table = TEST_UTIL.createTable(tableName, FAMILIES_1, 1, 1024,
+<a class="jxr_linenumber" name="935" href="#935">935</a>           CustomInnerRegionObserverWrapper.<strong class="jxr_keyword">class</strong>.getName());
+<a class="jxr_linenumber" name="936" href="#936">936</a>       <em class="jxr_comment">// get the block cache and region</em>
+<a class="jxr_linenumber" name="937" href="#937">937</a>       RegionLocator locator = table.getRegionLocator();
+<a class="jxr_linenumber" name="938" href="#938">938</a>       String regionName = locator.getAllRegionLocations().get(0).getRegionInfo().getEncodedName();
+<a class="jxr_linenumber" name="939" href="#939">939</a>       Region region = TEST_UTIL.getRSForFirstRegionInTable(tableName).getFromOnlineRegions(
+<a class="jxr_linenumber" name="940" href="#940">940</a>           regionName);
+<a class="jxr_linenumber" name="941" href="#941">941</a>       Store store = region.getStores().iterator().next();
+<a class="jxr_linenumber" name="942" href="#942">942</a>       CacheConfig cacheConf = store.getCacheConfig();
+<a class="jxr_linenumber" name="943" href="#943">943</a>       cacheConf.setCacheDataOnWrite(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="944" href="#944">944</a>       cacheConf.setEvictOnClose(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="945" href="#945">945</a>       BlockCache cache = cacheConf.getBlockCache();
+<a class="jxr_linenumber" name="946" href="#946">946</a> 
+<a class="jxr_linenumber" name="947" href="#947">947</a>       <em class="jxr_comment">// insert data. 2 Rows are added</em>
+<a class="jxr_linenumber" name="948" href="#948">948</a>       Put put = <strong class="jxr_keyword">new</strong> Put(ROW);
+<a class="jxr_linenumber" name="949" href="#949">949</a>       put.addColumn(FAMILY, QUALIFIER, data);
+<a class="jxr_linenumber" name="950" href="#950">950</a>       table.put(put);
+<a class="jxr_linenumber" name="951" href="#951">951</a>       put = <strong class="jxr_keyword">new</strong> Put(ROW1);
+<a class="jxr_linenumber" name="952" href="#952">952</a>       put.addColumn(FAMILY, QUALIFIER, data);
+<a class="jxr_linenumber" name="953" href="#953">953</a>       table.put(put);
+<a class="jxr_linenumber" name="954" href="#954">954</a>       assertTrue(Bytes.equals(table.get(<strong class="jxr_keyword">new</strong> Get(ROW)).value(), data));
+<a class="jxr_linenumber" name="955" href="#955">955</a>       <em class="jxr_comment">// Should create one Hfile with 2 blocks</em>
+<a class="jxr_linenumber" name="956" href="#956">956</a>       region.flush(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="957" href="#957">957</a>       <em class="jxr_comment">// read the data and expect same blocks, one new hit, no misses</em>
+<a class="jxr_linenumber" name="958" href="#958">958</a>       <strong class="jxr_keyword">int</strong> refCount = 0;
+<a class="jxr_linenumber" name="959" href="#959">959</a>       <em class="jxr_comment">// Check how this miss is happening</em>
+<a class="jxr_linenumber" name="960" href="#960">960</a>       <em class="jxr_comment">// insert a second column, read the row, no new blocks, 3 new hits</em>
+<a class="jxr_linenumber" name="961" href="#961">961</a>       byte[] QUALIFIER2 = Bytes.add(QUALIFIER, QUALIFIER);
+<a class="jxr_linenumber" name="962" href="#962">962</a>       byte[] data2 = Bytes.add(data, data);
+<a class="jxr_linenumber" name="963" href="#963">963</a>       put = <strong class="jxr_keyword">new</strong> Put(ROW);
+<a class="jxr_linenumber" name="964" href="#964">964</a>       put.addColumn(FAMILY, QUALIFIER2, data2);
+<a class="jxr_linenumber" name="965" href="#965">965</a>       table.put(put);
+<a class="jxr_linenumber" name="966" href="#966">966</a>       <em class="jxr_comment">// flush, one new block</em>
+<a class="jxr_linenumber" name="967" href="#967">967</a>       System.out.println(<span class="jxr_string">"Flushing cache"</span>);
+<a class="jxr_linenumber" name="968" href="#968">968</a>       region.flush(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="969" href="#969">969</a>       Iterator&lt;CachedBlock&gt; iterator = cache.iterator();
+<a class="jxr_linenumber" name="970" href="#970">970</a>       iterateBlockCache(cache, iterator);
+<a class="jxr_linenumber" name="971" href="#971">971</a>       <em class="jxr_comment">// Create three sets of scan</em>
+<a class="jxr_linenumber" name="972" href="#972">972</a>       <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">ScanThread</a>[] scanThreads = initiateScan(table, false);
+<a class="jxr_linenumber" name="973" href="#973">973</a>       Thread.sleep(100);
+<a class="jxr_linenumber" name="974" href="#974">974</a>       iterator = cache.iterator();
+<a class="jxr_linenumber" name="975" href="#975">975</a>       <strong class="jxr_keyword">boolean</strong> usedBlocksFound = false;
+<a class="jxr_linenumber" name="976" href="#976">976</a>       <strong class="jxr_keyword">while</strong> (iterator.hasNext()) {
+<a class="jxr_linenumber" name="977" href="#977">977</a>         <a href="../../../../../org/apache/hadoop/hbase/io/hfile/TestCachedBlockQueue.html">CachedBlock</a> next = iterator.next();
+<a class="jxr_linenumber" name="978" href="#978">978</a>         BlockCacheKey cacheKey = <strong class="jxr_keyword">new</strong> BlockCacheKey(next.getFilename(), next.getOffset());
+<a class="jxr_linenumber" name="979" href="#979">979</a>         <strong class="jxr_keyword">if</strong> (cache instanceof BucketCache) {
+<a class="jxr_linenumber" name="980" href="#980">980</a>           refCount = ((BucketCache) cache).getRefCount(cacheKey);
+<a class="jxr_linenumber" name="981" href="#981">981</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (cache instanceof CombinedBlockCache) {
+<a class="jxr_linenumber" name="982" href="#982">982</a>           refCount = ((CombinedBlockCache) cache).getRefCount(cacheKey);
+<a class="jxr_linenumber" name="983" href="#983">983</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="984" href="#984">984</a>           <strong class="jxr_keyword">continue</strong>;
+<a class="jxr_linenumber" name="985" href="#985">985</a>         }
+<a class="jxr_linenumber" name="986" href="#986">986</a>         <strong class="jxr_keyword">if</strong> (refCount != 0) {
+<a class="jxr_linenumber" name="987" href="#987">987</a>           <em class="jxr_comment">// Blocks will be with count 3</em>
+<a class="jxr_linenumber" name="988" href="#988">988</a>           assertEquals(NO_OF_THREADS, refCount);
+<a class="jxr_linenumber" name="989" href="#989">989</a>           usedBlocksFound = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="990" href="#990">990</a>         }
+<a class="jxr_linenumber" name="991" href="#991">991</a>       }
+<a class="jxr_linenumber" name="992" href="#992">992</a>       <em class="jxr_comment">// Make a put and do a flush</em>
+<a class="jxr_linenumber" name="993" href="#993">993</a>       QUALIFIER2 = Bytes.add(QUALIFIER, QUALIFIER);
+<a class="jxr_linenumber" name="994" href="#994">994</a>       data2 = Bytes.add(data, data);
+<a class="jxr_linenumber" name="995" href="#995">995</a>       put = <strong class="jxr_keyword">new</strong> Put(ROW1);
+<a class="jxr_linenumber" name="996" href="#996">996</a>       put.addColumn(FAMILY, QUALIFIER2, data2);
+<a class="jxr_linenumber" name="997" href="#997">997</a>       table.put(put);
+<a class="jxr_linenumber" name="998" href="#998">998</a>       <em class="jxr_comment">// flush, one new block</em>
+<a class="jxr_linenumber" name="999" href="#999">999</a>       System.out.println(<span class="jxr_string">"Flushing cache"</span>);
+<a class="jxr_linenumber" name="1000" href="#1000">1000</a>       region.flush(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="1001" href="#1001">1001</a>       assertTrue(<span class="jxr_string">"Blocks with non zero ref count should be found "</span>, usedBlocksFound);
+<a class="jxr_linenumber" name="1002" href="#1002">1002</a>       usedBlocksFound = false;
+<a class="jxr_linenumber" name="1003" href="#1003">1003</a>       System.out.println(<span class="jxr_string">"Compacting"</span>);
+<a class="jxr_linenumber" name="1004" href="#1004">1004</a>       assertEquals(3, store.getStorefilesCount());
+<a class="jxr_linenumber" name="1005" href="#1005">1005</a>       store.triggerMajorCompaction();
+<a class="jxr_linenumber" name="1006" href="#1006">1006</a>       region.compact(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="1007" href="#1007">1007</a>       waitForStoreFileCount(store, 1, 10000); <em class="jxr_comment">// wait 10 seconds max</em>
+<a class="jxr_linenumber" name="1008" href="#1008">1008</a>       assertEquals(1, store.getStorefilesCount());
+<a class="jxr_linenumber" name="1009" href="#1009">1009</a>       <em class="jxr_comment">// Even after compaction is done we will have some blocks that cannot</em>
+<a class="jxr_linenumber" name="1010" href="#1010">1010</a>       <em class="jxr_comment">// be evicted this is because the scan is still referencing them</em>
+<a class="jxr_linenumber" name="1011" href="#1011">1011</a>       iterator = cache.iterator();
+<a class="jxr_linenumber" name="1012" href="#1012">1012</a>       <strong class="jxr_keyword">while</strong> (iterator.hasNext()) {
+<a class="jxr_linenumber" name="1013" href="#1013">1013</a>         <a href="../../../../../org/apache/hadoop/hbase/io/hfile/TestCachedBlockQueue.html">CachedBlock</a> next = iterator.next();
+<a class="jxr_linenumber" name="1014" href="#1014">1014</a>         BlockCacheKey cacheKey = <strong class="jxr_keyword">new</strong> BlockCacheKey(next.getFilename(), next.getOffset());
+<a class="jxr_linenumber" name="1015" href="#1015">1015</a>         <strong class="jxr_keyword">if</strong> (cache instanceof BucketCache) {
+<a class="jxr_linenumber" name="1016" href="#1016">1016</a>           refCount = ((BucketCache) cache).getRefCount(cacheKey);
+<a class="jxr_linenumber" name="1017" href="#1017">1017</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (cache instanceof CombinedBlockCache) {
+<a class="jxr_linenumber" name="1018" href="#1018">1018</a>           refCount = ((CombinedBlockCache) cache).getRefCount(cacheKey);
+<a class="jxr_linenumber" name="1019" href="#1019">1019</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="1020" href="#1020">1020</a>           <strong class="jxr_keyword">continue</strong>;
+<a class="jxr_linenumber" name="1021" href="#1021">1021</a>         }
+<a class="jxr_linenumber" name="1022" href="#1022">1022</a>         <strong class="jxr_keyword">if</strong> (refCount != 0) {
+<a class="jxr_linenumber" name="1023" href="#1023">1023</a>           <em class="jxr_comment">// Blocks will be with count 3 as they are not yet cleared</em>
+<a class="jxr_linenumber" name="1024" href="#1024">1024</a>           assertEquals(NO_OF_THREADS, refCount);
+<a class="jxr_linenumber" name="1025" href="#1025">1025</a>           usedBlocksFound = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="1026" href="#1026">1026</a>         }
+<a class="jxr_linenumber" name="1027" href="#1027">1027</a>       }
+<a class="jxr_linenumber" name="1028" href="#1028">1028</a>       assertTrue(<span class="jxr_string">"Blocks with non zero ref count should be found "</span>, usedBlocksFound);
+<a class="jxr_linenumber" name="1029" href="#1029">1029</a>       <em class="jxr_comment">// Should not throw exception</em>
+<a class="jxr_linenumber" name="1030" href="#1030">1030</a>       compactionLatch.countDown();
+<a class="jxr_linenumber" name="1031" href="#1031">1031</a>       latch.countDown();
+<a class="jxr_linenumber" name="1032" href="#1032">1032</a>       <strong class="jxr_keyword">for</strong> (ScanThread thread : scanThreads) {
+<a class="jxr_linenumber" name="1033" href="#1033">1033</a>         thread.join();
+<a class="jxr_linenumber" name="1034" href="#1034">1034</a>       }
+<a class="jxr_linenumber" name="1035" href="#1035">1035</a>       <em class="jxr_comment">// by this time all blocks should have been evicted</em>
+<a class="jxr_linenumber" name="1036" href="#1036">1036</a>       iterator = cache.iterator();
+<a class="jxr_linenumber" name="1037" href="#1037">1037</a>       <em class="jxr_comment">// Since a flush and compaction happened after a scan started</em>
+<a class="jxr_linenumber" name="1038" href="#1038">1038</a>       <em class="jxr_comment">// we need to ensure that all the original blocks of the compacted file</em>
+<a class="jxr_linenumber" name="1039" href="#1039">1039</a>       <em class="jxr_comment">// is also removed.</em>
+<a class="jxr_linenumber" name="1040" href="#1040">1040</a>       iterateBlockCache(cache, iterator);
+<a class="jxr_linenumber" name="1041" href="#1041">1041</a>       Result r = table.get(<strong class="jxr_keyword">new</strong> Get(ROW));
+<a class="jxr_linenumber" name="1042" href="#1042">1042</a>       assertTrue(Bytes.equals(r.getValue(FAMILY, QUALIFIER), data));
+<a class="jxr_linenumber" name="1043" href="#1043">1043</a>       assertTrue(Bytes.equals(r.getValue(FAMILY, QUALIFIER2), data2));
+<a class="jxr_linenumber" name="1044" href="#1044">1044</a>       <em class="jxr_comment">// The gets would be working on new blocks</em>
+<a class="jxr_linenumber" name="1045" href="#1045">1045</a>       iterator = cache.iterator();
+<a class="jxr_linenumber" name="1046" href="#1046">1046</a>       iterateBlockCache(cache, iterator);
+<a class="jxr_linenumber" name="1047" href="#1047">1047</a>     } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="1048" href="#1048">1048</a>       <strong class="jxr_keyword">if</strong> (table != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="1049" href="#1049">1049</a>         table.close();
+<a class="jxr_linenumber" name="1050" href="#1050">1050</a>       }
+<a class="jxr_linenumber" name="1051" href="#1051">1051</a>     }
+<a class="jxr_linenumber" name="1052" href="#1052">1052</a>   }
+<a class="jxr_linenumber" name="1053" href="#1053">1053</a> 
+<a class="jxr_linenumber" name="1054" href="#1054">1054</a> 
+<a class="jxr_linenumber" name="1055" href="#1055">1055</a>   @Test
+<a class="jxr_linenumber" name="1056" href="#1056">1056</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScanWithException() <strong class="jxr_keyword">throws</strong> IOException, InterruptedException {
+<a class="jxr_linenumber" name="1057" href="#1057">1057</a>     HTable table = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="1058" href="#1058">1058</a>     <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="1059" href="#1059">1059</a>       latch = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
+<a class="jxr_linenumber" name="1060" href="#1060">1060</a>       exceptionLatch = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
+<a class="jxr_linenumber" name="1061" href="#1061">1061</a>       TableName tableName = TableName.valueOf(<span class="jxr_string">"testScanWithException"</span>);
+<a class="jxr_linenumber" name="1062" href="#1062">1062</a>       <em class="jxr_comment">// Create KV that will give you two blocks</em>
+<a class="jxr_linenumber" name="1063" href="#1063">1063</a>       <em class="jxr_comment">// Create a table with block size as 1024</em>
+<a class="jxr_linenumber" name="1064" href="#1064">1064</a>       table = TEST_UTIL.createTable(tableName, FAMILIES_1, 1, 1024,
+<a class="jxr_linenumber" name="1065" href="#1065">1065</a>           CustomInnerRegionObserverWrapper.<strong class="jxr_keyword">class</strong>.getName());
+<a class="jxr_linenumber" name="1066" href="#1066">1066</a>       <em class="jxr_comment">// get the block cache and region</em>
+<a class="jxr_linenumber" name="1067" href="#1067">1067</a>       RegionLocator locator = table.getRegionLocator();
+<a class="jxr_linenumber" name="1068" href="#1068">1068</a>       String regionName = locator.getAllRegionLocations().get(0).getRegionInfo().getEncodedName();
+<a class="jxr_linenumber" name="1069" href="#1069">1069</a>       Region region = TEST_UTIL.getRSForFirstRegionInTable(tableName).getFromOnlineRegions(
+<a class="jxr_linenumber" name="1070" href="#1070">1070</a>           regionName);
+<a class="jxr_linenumber" name="1071" href="#1071">1071</a>       Store store = region.getStores().iterator().next();
+<a class="jxr_linenumber" name="1072" href="#1072">1072</a>       CacheConfig cacheConf = store.getCacheConfig();
+<a class="jxr_linenumber" name="1073" href="#1073">1073</a>       cacheConf.setCacheDataOnWrite(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="1074" href="#1074">1074</a>       cacheConf.setEvictOnClose(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="1075" href="#1075">1075</a>       BlockCache cache = cacheConf.getBlockCache();
+<a class="jxr_linenumber" name="1076" href="#1076">1076</a>       <em class="jxr_comment">// insert data. 2 Rows are added</em>
+<a class="jxr_linenumber" name="1077" href="#1077">1077</a>       insertData(table);
+<a class="jxr_linenumber" name="1078" href="#1078">1078</a>       <em class="jxr_comment">// flush the data</em>
+<a class="jxr_linenumber" name="1079" href="#1079">1079</a>       System.out.println(<span class="jxr_string">"Flushing cache"</span>);
+<a class="jxr_linenumber" name="1080" href="#1080">1080</a>       <em class="jxr_comment">// Should create one Hfile with 2 blocks</em>
+<a class="jxr_linenumber" name="1081" href="#1081">1081</a>       region.flush(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="1082" href="#1082">1082</a>       <em class="jxr_comment">// CustomInnerRegionObserver.sleepTime.set(5000);</em>
+<a class="jxr_linenumber" name="1083" href="#1083">1083</a>       CustomInnerRegionObserver.throwException.set(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="1084" href="#1084">1084</a>       <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">ScanThread</a>[] scanThreads = initiateScan(table, false);
+<a class="jxr_linenumber" name="1085" href="#1085">1085</a>       <em class="jxr_comment">// The block would have been decremented for the scan case as it was</em>
+<a class="jxr_linenumber" name="1086" href="#1086">1086</a>       <em class="jxr_comment">// wrapped</em>
+<a class="jxr_linenumber" name="1087" href="#1087">1087</a>       <em class="jxr_comment">// before even the postNext hook gets executed.</em>
+<a class="jxr_linenumber" name="1088" href="#1088">1088</a>       <em class="jxr_comment">// giving some time for the block to be decremented</em>
+<a class="jxr_linenumber" name="1089" href="#1089">1089</a>       Thread.sleep(100);
+<a class="jxr_linenumber" name="1090" href="#1090">1090</a>       Iterator&lt;CachedBlock&gt; iterator = cache.iterator();
+<a class="jxr_linenumber" name="1091" href="#1091">1091</a>       <strong class="jxr_keyword">boolean</strong> usedBlocksFound = false;
+<a class="jxr_linenumber" name="1092" href="#1092">1092</a>       <strong class="jxr_keyword">int</strong> refCount = 0;
+<a class="jxr_linenumber" name="1093" href="#1093">1093</a>       <strong class="jxr_keyword">while</strong> (iterator.hasNext()) {
+<a class="jxr_linenumber" name="1094" href="#1094">1094</a>         <a href="../../../../../org/apache/hadoop/hbase/io/hfile/TestCachedBlockQueue.html">CachedBlock</a> next = iterator.next();
+<a class="jxr_linenumber" name="1095" href="#1095">1095</a>         BlockCacheKey cacheKey = <strong class="jxr_keyword">new</strong> BlockCacheKey(next.getFilename(), next.getOffset());
+<a class="jxr_linenumber" name="1096" href="#1096">1096</a>         <strong class="jxr_keyword">if</strong> (cache instanceof BucketCache) {
+<a class="jxr_linenumber" name="1097" href="#1097">1097</a>           refCount = ((BucketCache) cache).getRefCount(cacheKey);
+<a class="jxr_linenumber" name="1098" href="#1098">1098</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (cache instanceof CombinedBlockCache) {
+<a class="jxr_linenumber" name="1099" href="#1099">1099</a>           refCount = ((CombinedBlockCache) cache).getRefCount(cacheKey);
+<a class="jxr_linenumber" name="1100" href="#1100">1100</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="1101" href="#1101">1101</a>           <strong class="jxr_keyword">continue</strong>;
+<a class="jxr_linenumber" name="1102" href="#1102">1102</a>         }
+<a class="jxr_linenumber" name="1103" href="#1103">1103</a>         <strong class="jxr_keyword">if</strong> (refCount != 0) {
+<a class="jxr_linenumber" name="1104" href="#1104">1104</a>           <em class="jxr_comment">// Blocks will be with count 3</em>
+<a class="jxr_linenumber" name="1105" href="#1105">1105</a>           assertEquals(NO_OF_THREADS, refCount);
+<a class="jxr_linenumber" name="1106" href="#1106">1106</a>           usedBlocksFound = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="1107" href="#1107">1107</a>         }
+<a class="jxr_linenumber" name="1108" href="#1108">1108</a>       }
+<a class="jxr_linenumber" name="1109" href="#1109">1109</a>       assertTrue(usedBlocksFound);
+<a class="jxr_linenumber" name="1110" href="#1110">1110</a>       exceptionLatch.countDown();
+<a class="jxr_linenumber" name="1111" href="#1111">1111</a>       <em class="jxr_comment">// countdown the latch</em>
+<a class="jxr_linenumber" name="1112" href="#1112">1112</a>       CustomInnerRegionObserver.getCdl().get().countDown();
+<a class="jxr_linenumber" name="1113" href="#1113">1113</a>       <strong class="jxr_keyword">for</strong> (ScanThread thread : scanThreads) {
+<a class="jxr_linenumber" name="1114" href="#1114">1114</a>         thread.join();
+<a class="jxr_linenumber" name="1115" href="#1115">1115</a>       }
+<a class="jxr_linenumber" name="1116" href="#1116">1116</a>       iterator = cache.iterator();
+<a class="jxr_linenumber" name="1117" href="#1117">1117</a>       usedBlocksFound = false;
+<a class="jxr_linenumber" name="1118" href="#1118">1118</a>       refCount = 0;
+<a class="jxr_linenumber" name="1119" href="#1119">1119</a>       <strong class="jxr_keyword">while</strong> (iterator.hasNext()) {
+<a class="jxr_linenumber" name="1120" href="#1120">1120</a>         <a href="../../../../../org/apache/hadoop/hbase/io/hfile/TestCachedBlockQueue.html">CachedBlock</a> next = iterator.next();
+<a class="jxr_linenumber" name="1121" href="#1121">1121</a>         BlockCacheKey cacheKey = <strong class="jxr_keyword">new</strong> BlockCacheKey(next.getFilename(), next.getOffset());
+<a class="jxr_linenumber" name="1122" href="#1122">1122</a>         <strong class="jxr_keyword">if</strong> (cache instanceof BucketCache) {
+<a class="jxr_linenumber" name="1123" href="#1123">1123</a>           refCount = ((BucketCache) cache).getRefCount(cacheKey);
+<a class="jxr_linenumber" name="1124" href="#1124">1124</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (cache instanceof CombinedBlockCache) {
+<a class="jxr_linenumber" name="1125" href="#1125">1125</a>           refCount = ((CombinedBlockCache) cache).getRefCount(cacheKey);
+<a class="jxr_linenumber" name="1126" href="#1126">1126</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="1127" href="#1127">1127</a>           <strong class="jxr_keyword">continue</strong>;
+<a class="jxr_linenumber" name="1128" href="#1128">1128</a>         }
+<a class="jxr_linenumber" name="1129" href="#1129">1129</a>         <strong class="jxr_keyword">if</strong> (refCount != 0) {
+<a class="jxr_linenumber" name="1130" href="#1130">1130</a>           <em class="jxr_comment">// Blocks will be with count 3</em>
+<a class="jxr_linenumber" name="1131" href="#1131">1131</a>           assertEquals(NO_OF_THREADS, refCount);
+<a class="jxr_linenumber" name="1132" href="#1132">1132</a>           usedBlocksFound = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="1133" href="#1133">1133</a>         }
+<a class="jxr_linenumber" name="1134" href="#1134">1134</a>       }
+<a class="jxr_linenumber" name="1135" href="#1135">1135</a>       assertTrue(usedBlocksFound);
+<a class="jxr_linenumber" name="1136" href="#1136">1136</a>       <em class="jxr_comment">// Sleep till the scan lease would expire? Can we reduce this value?</em>
+<a class="jxr_linenumber" name="1137" href="#1137">1137</a>       Thread.sleep(5100);
+<a class="jxr_linenumber" name="1138" href="#1138">1138</a>       iterator = cache.iterator();
+<a class="jxr_linenumber" name="1139" href="#1139">1139</a>       refCount = 0;
+<a class="jxr_linenumber" name="1140" href="#1140">1140</a>       <strong class="jxr_keyword">while</strong> (iterator.hasNext()) {
+<a class="jxr_linenumber" name="1141" href="#1141">1141</a>         <a href="../../../../../org/apache/hadoop/hbase/io/hfile/TestCachedBlockQueue.html">CachedBlock</a> next = iterator.next();
+<a class="jxr_linenumber" name="1142" href="#1142">1142</a>         BlockCacheKey cacheKey = <strong class="jxr_keyword">new</strong> BlockCacheKey(next.getFilename(), next.getOffset());
+<a class="jxr_linenumber" name="1143" href="#1143">1143</a>         <strong class="jxr_keyword">if</strong> (cache instanceof BucketCache) {
+<a class="jxr_linenumber" name="1144" href="#1144">1144</a>           refCount = ((BucketCache) cache).getRefCount(cacheKey);
+<a class="jxr_linenumber" name="1145" href="#1145">1145</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (cache instanceof CombinedBlockCache) {
+<a class="jxr_linenumber" name="1146" href="#1146">1146</a>           refCount = ((CombinedBlockCache) cache).getRefCount(cacheKey);
+<a class="jxr_linenumber" name="1147" href="#1147">1147</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="1148" href="#1148">1148</a>           <strong class="jxr_keyword">continue</strong>;
+<a class="jxr_linenumber" name="1149" href="#1149">1149</a>         }
+<a class="jxr_linenumber" name="1150" href="#1150">1150</a>         assertEquals(0, refCount);
+<a class="jxr_linenumber" name="1151" href="#1151">1151</a>       }
+<a class="jxr_linenumber" name="1152" href="#1152">1152</a>     } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="1153" href="#1153">1153</a>       <strong class="jxr_keyword">if</strong> (table != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="1154" href="#1154">1154</a>         table.close();
+<a class="jxr_linenumber" name="1155" href="#1155">1155</a>       }
+<a class="jxr_linenumber" name="1156" href="#1156">1156</a>     }
+<a class="jxr_linenumber" name="1157" href="#1157">1157</a>   }
+<a class="jxr_linenumber" name="1158" href="#1158">1158</a> 
+<a class="jxr_linenumber" name="1159" href="#1159">1159</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> iterateBlockCache(BlockCache cache, Iterator&lt;CachedBlock&gt; iterator) {
+<a class="jxr_linenumber" name="1160" href="#1160">1160</a>     <strong class="jxr_keyword">int</strong> refCount;
+<a class="jxr_linenumber" name="1161" href="#1161">1161</a>     <strong class="jxr_keyword">while</strong> (iterator.hasNext()) {
+<a class="jxr_linenumber" name="1162" href="#1162">1162</a>       <a href="../../../../../org/apache/hadoop/hbase/io/hfile/TestCachedBlockQueue.html">CachedBlock</a> next = iterator.next();
+<a class="jxr_linenumber" name="1163" href="#1163">1163</a>       BlockCacheKey cacheKey = <strong class="jxr_keyword">new</strong> BlockCacheKey(next.getFilename(), next.getOffset());
+<a class="jxr_linenumber" name="1164" href="#1164">1164</a>       <strong class="jxr_keyword">if</strong> (cache instanceof BucketCache) {
+<a class="jxr_linenumber" name="1165" href="#1165">1165</a>         refCount = ((BucketCache) cache).getRefCount(cacheKey);
+<a class="jxr_linenumber" name="1166" href="#1166">1166</a>       } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (cache instanceof CombinedBlockCache) {
+<a class="jxr_linenumber" name="1167" href="#1167">1167</a>         refCount = ((CombinedBlockCache) cache).getRefCount(cacheKey);
+<a class="jxr_linenumber" name="1168" href="#1168">1168</a>       } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="1169" href="#1169">1169</a>         <strong class="jxr_keyword">continue</strong>;
 <a class="jxr_linenumber" name="1170" href="#1170">1170</a>       }
-<a class="jxr_linenumber" name="1171" href="#1171">1171</a>     }
-<a class="jxr_linenumber" name="1172" href="#1172">1172</a>   }
-<a class="jxr_linenumber" name="1173" href="#1173">1173</a> 
-<a class="jxr_linenumber" name="1174" href="#1174">1174</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">GetThread</a> <strong class="jxr_keyword">extends</strong> Thread {
-<a class="jxr_linenumber" name="1175" href="#1175">1175</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> HTable table;
-<a class="jxr_linenumber" name="1176" href="#1176">1176</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> tracker;
-<a class="jxr_linenumber" name="1177" href="#1177">1177</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> multipleCFs;
-<a class="jxr_linenumber" name="1178" href="#1178">1178</a> 
-<a class="jxr_linenumber" name="1179" href="#1179">1179</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">GetThread</a>(HTable table, <strong class="jxr_keyword">boolean</strong> tracker, <strong class="jxr_keyword">boolean</strong> multipleCFs) {
-<a class="jxr_linenumber" name="1180" href="#1180">1180</a>       <strong class="jxr_keyword">this</strong>.table = table;
-<a class="jxr_linenumber" name="1181" href="#1181">1181</a>       <strong class="jxr_keyword">this</strong>.tracker = tracker;
-<a class="jxr_linenumber" name="1182" href="#1182">1182</a>       <strong class="jxr_keyword">this</strong>.multipleCFs = multipleCFs;
-<a class="jxr_linenumber" name="1183" href="#1183">1183</a>     }
-<a class="jxr_linenumber" name="1184" href="#1184">1184</a> 
-<a class="jxr_linenumber" name="1185" href="#1185">1185</a>     @Override
-<a class="jxr_linenumber" name="1186" href="#1186">1186</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> run() {
-<a class="jxr_linenumber" name="1187" href="#1187">1187</a>       <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="1188" href="#1188">1188</a>         initiateGet(table);
-<a class="jxr_linenumber" name="1189" href="#1189">1189</a>       } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="1190" href="#1190">1190</a>         <em class="jxr_comment">// do nothing</em>
-<a class="jxr_linenumber" name="1191" href="#1191">1191</a>       }
-<a class="jxr_linenumber" name="1192" href="#1192">1192</a>     }
-<a class="jxr_linenumber" name="1193" href="#1193">1193</a> 
-<a class="jxr_linenumber" name="1194" href="#1194">1194</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> initiateGet(HTable table) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1195" href="#1195">1195</a>       Get get = <strong class="jxr_keyword">new</strong> Get(ROW);
-<a class="jxr_linenumber" name="1196" href="#1196">1196</a>       <strong class="jxr_keyword">if</strong> (tracker) {
-<a class="jxr_linenumber" name="1197" href="#1197">1197</a>         <em class="jxr_comment">// Change this</em>
-<a class="jxr_linenumber" name="1198" href="#1198">1198</a>         <strong class="jxr_keyword">if</strong> (!multipleCFs) {
-<a class="jxr_linenumber" name="1199" href="#1199">1199</a>           get.addColumn(FAMILY, Bytes.toBytes(<span class="jxr_string">"testQualifier"</span> + 3));
-<a class="jxr_linenumber" name="1200" href="#1200">1200</a>           get.addColumn(FAMILY, Bytes.toBytes(<span class="jxr_string">"testQualifier"</span> + 8));
-<a class="jxr_linenumber" name="1201" href="#1201">1201</a>           get.addColumn(FAMILY, Bytes.toBytes(<span class="jxr_string">"testQualifier"</span> + 9));
-<a class="jxr_linenumber" name="1202" href="#1202">1202</a>           <em class="jxr_comment">// Unknown key</em>
-<a class="jxr_linenumber" name="1203" href="#1203">1203</a>           get.addColumn(FAMILY, Bytes.toBytes(<span class="jxr_string">"testQualifier"</span> + 900));
-<a class="jxr_linenumber" name="1204" href="#1204">1204</a>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="1205" href="#1205">1205</a>           get.addColumn(Bytes.toBytes(<span class="jxr_string">"testFamily"</span> + 3), Bytes.toBytes(<span class="jxr_string">"testQualifier"</span> + 3));
-<a class="jxr_linenumber" name="1206" href="#1206">1206</a>           get.addColumn(Bytes.toBytes(<span class="jxr_string">"testFamily"</span> + 8), Bytes.toBytes(<span class="jxr_string">"testQualifier"</span> + 8));
-<a class="jxr_linenumber" name="1207" href="#1207">1207</a>           get.addColumn(Bytes.toBytes(<span class="jxr_string">"testFamily"</span> + 9), Bytes.toBytes(<span class="jxr_string">"testQualifier"</span> + 9));
-<a class="jxr_linenumber" name="1208" href="#1208">1208</a>           <em class="jxr_comment">// Unknown key</em>
-<a class="jxr_linenumber" name="1209" href="#1209">1209</a>           get.addColumn(Bytes.toBytes(<span class="jxr_string">"testFamily"</span> + 9), Bytes.toBytes(<span class="jxr_string">"testQualifier"</span> + 900));
-<a class="jxr_linenumber" name="1210" href="#1210">1210</a>         }
-<a class="jxr_linenumber" name="1211" href="#1211">1211</a>       }
-<a class="jxr_linenumber" name="1212" href="#1212">1212</a>       CustomInnerRegionObserver.getCdl().set(latch);
-<a class="jxr_linenumber" name="1213" href="#1213">1213</a>       Result r = table.get(get);
-<a class="jxr_linenumber" name="1214" href="#1214">1214</a>       System.out.println(r);
-<a class="jxr_linenumber" name="1215" href="#1215">1215</a>       <strong class="jxr_keyword">if</strong> (!tracker) {
-<a class="jxr_linenumber" name="1216" href="#1216">1216</a>         assertTrue(Bytes.equals(r.getValue(FAMILY, QUALIFIER), data));
-<a class="jxr_linenumber" name="1217" href="#1217">1217</a>         assertTrue(Bytes.equals(r.getValue(FAMILY, QUALIFIER2), data2));
-<a class="jxr_linenumber" name="1218" href="#1218">1218</a>       } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="1219" href="#1219">1219</a>         <strong class="jxr_keyword">if</strong> (!multipleCFs) {
-<a class="jxr_linenumber" name="1220" href="#1220">1220</a>           assertTrue(Bytes.equals(r.getValue(FAMILY, Bytes.toBytes(<span class="jxr_string">"testQualifier"</span> + 3)), data2));
-<a class="jxr_linenumber" name="1221" href="#1221">1221</a>           assertTrue(Bytes.equals(r.getValue(FAMILY, Bytes.toBytes(<span class="jxr_string">"testQualifier"</span> + 8)), data2));
-<a class="jxr_linenumber" name="1222" href="#1222">1222</a>           assertTrue(Bytes.equals(r.getValue(FAMILY, Bytes.toBytes(<span class="jxr_string">"testQualifier"</span> + 9)), data2));
-<a class="jxr_linenumber" name="1223" href="#1223">1223</a>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="1224" href="#1224">1224</a>           assertTrue(Bytes.equals(
-<a class="jxr_linenumber" name="1225" href="#1225">1225</a>               r.getValue(Bytes.toBytes(<span class="jxr_string">"testFamily"</span> + 3), Bytes.toBytes(<span class="jxr_string">"testQualifier"</span> + 3)),
-<a class="jxr_linenumber" name="1226" href="#1226">1226</a>               data2));
-<a class="jxr_linenumber" name="1227" href="#1227">1227</a>           assertTrue(Bytes.equals(
-<a class="jxr_linenumber" name="1228" href="#1228">1228</a>               r.getValue(Bytes.toBytes(<span class="jxr_string">"testFamily"</span> + 8), Bytes.toBytes(<span class="jxr_string">"testQualifier"</span> + 8)),
-<a class="jxr_linenumber" name="1229" href="#1229">1229</a>               data2));
-<a class="jxr_linenumber" name="1230" href="#1230">1230</a>           assertTrue(Bytes.equals(
-<a class="jxr_linenumber" name="1231" href="#1231">1231</a>               r.getValue(Bytes.toBytes(<span class="jxr_string">"testFamily"</span> + 9), Bytes.toBytes(<span class="jxr_string">"testQualifier"</span> + 9)),
-<a class="jxr_linenumber" name="1232" href="#1232">1232</a>               data2));
-<a class="jxr_linenumber" name="1233" href="#1233">1233</a>         }
-<a class="jxr_linenumber" name="1234" href="#1234">1234</a>       }
-<a class="jxr_linenumber" name="1235" href="#1235">1235</a>     }
-<a class="jxr_linenumber" name="1236" href="#1236">1236</a>   }
-<a class="jxr_linenumber" name="1237" href="#1237">1237</a> 
-<a class="jxr_linenumber" name="1238" href="#1238">1238</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">ScanThread</a> <strong class="jxr_keyword">extends</strong> Thread {
-<a class="jxr_linenumber" name="1239" href="#1239">1239</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> HTable table;
-<a class="jxr_linenumber" name="1240" href="#1240">1240</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> reverse;
-<a class="jxr_linenumber" name="1241" href="#1241">1241</a> 
-<a class="jxr_linenumber" name="1242" href="#1242">1242</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">ScanThread</a>(HTable table, <strong class="jxr_keyword">boolean</strong> reverse) {
-<a class="jxr_linenumber" name="1243" href="#1243">1243</a>       <strong class="jxr_keyword">this</strong>.table = table;
-<a class="jxr_linenumber" name="1244" href="#1244">1244</a>       <strong class="jxr_keyword">this</strong>.reverse = reverse;
-<a class="jxr_linenumber" name="1245" href="#1245">1245</a>     }
-<a class="jxr_linenumber" name="1246" href="#1246">1246</a> 
-<a class="jxr_linenumber" name="1247" href="#1247">1247</a>     @Override
-<a class="jxr_linenumber" name="1248" href="#1248">1248</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> run() {
-<a class="jxr_linenumber" name="1249" href="#1249">1249</a>       <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="1250" href="#1250">1250</a>         initiateScan(table);
-<a class="jxr_linenumber" name="1251" href="#1251">1251</a>       } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="1252" href="#1252">1252</a>         <em class="jxr_comment">// do nothing</em>
-<a class="jxr_linenumber" name="1253" href="#1253">1253</a>       }
-<a class="jxr_linenumber" name="1254" href="#1254">1254</a>     }
-<a class="jxr_linenumber" name="1255" href="#1255">1255</a> 
-<a class="jxr_linenumber" name="1256" href="#1256">1256</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> initiateScan(HTable table) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1257" href="#1257">1257</a>       Scan scan = <strong class="jxr_keyword">new</strong> Scan();
-<a class="jxr_linenumber" name="1258" href="#1258">1258</a>       <strong class="jxr_keyword">if</strong> (reverse) {
-<a class="jxr_linenumber" name="1259" href="#1259">1259</a>         scan.setReversed(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="1260" href="#1260">1260</a>       }
-<a class="jxr_linenumber" name="1261" href="#1261">1261</a>       CustomInnerRegionObserver.getCdl().set(latch);
-<a class="jxr_linenumber" name="1262" href="#1262">1262</a>       ResultScanner resScanner = table.getScanner(scan);
-<a class="jxr_linenumber" name="1263" href="#1263">1263</a>       <strong class="jxr_keyword">int</strong> i = (reverse ? ROWS.length - 1 : 0);
-<a class="jxr_linenumber" name="1264" href="#1264">1264</a>       <strong class="jxr_keyword">boolean</strong> resultFound = false;
-<a class="jxr_linenumber" name="1265" href="#1265">1265</a>       <strong class="jxr_keyword">for</strong> (Result result : resScanner) {
-<a class="jxr_linenumber" name="1266" href="#1266">1266</a>         resultFound = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="1267" href="#1267">1267</a>         System.out.println(result);
-<a class="jxr_linenumber" name="1268" href="#1268">1268</a>         <strong class="jxr_keyword">if</strong> (!reverse) {
-<a class="jxr_linenumber" name="1269" href="#1269">1269</a>           assertTrue(Bytes.equals(result.getRow(), ROWS[i]));
-<a class="jxr_linenumber" name="1270" href="#1270">1270</a>           i++;
-<a class="jxr_linenumber" name="1271" href="#1271">1271</a>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="1272" href="#1272">1272</a>           assertTrue(Bytes.equals(result.getRow(), ROWS[i]));
-<a class="jxr_linenumber" name="1273" href="#1273">1273</a>           i--;
-<a class="jxr_linenumber" name="1274" href="#1274">1274</a>         }
-<a class="jxr_linenumber" name="1275" href="#1275">1275</a>       }
-<a class="jxr_linenumber" name="1276" href="#1276">1276</a>       assertTrue(resultFound);
-<a class="jxr_linenumber" name="1277" href="#1277">1277</a>     }
-<a class="jxr_linenumber" name="1278" href="#1278">1278</a>   }
-<a class="jxr_linenumber" name="1279" href="#1279">1279</a> 
-<a class="jxr_linenumber" name="1280" href="#1280">1280</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> waitForStoreFileCount(Store store, <strong class="jxr_keyword">int</strong> count, <strong class="jxr_keyword">int</strong> timeout)
-<a class="jxr_linenumber" name="1281" href="#1281">1281</a>       <strong class="jxr_keyword">throws</strong> InterruptedException {
-<a class="jxr_linenumber" name="1282" href="#1282">1282</a>     <strong class="jxr_keyword">long</strong> start = System.currentTimeMillis();
-<a class="jxr_linenumber" name="1283" href="#1283">1283</a>     <strong class="jxr_keyword">while</strong> (start + timeout &gt; System.currentTimeMillis() &amp;&amp; store.getStorefilesCount() != count) {
-<a class="jxr_linenumber" name="1284" href="#1284">1284</a>       Thread.sleep(100);
-<a class="jxr_linenumber" name="1285" href="#1285">1285</a>     }
-<a class="jxr_linenumber" name="1286" href="#1286">1286</a>     System.out.println(<span class="jxr_string">"start="</span> + start + <span class="jxr_string">", now="</span> + System.currentTimeMillis() + <span class="jxr_string">", cur="</span>
-<a class="jxr_linenumber" name="1287" href="#1287">1287</a>         + store.getStorefilesCount());
-<a class="jxr_linenumber" name="1288" href="#1288">1288</a>     assertEquals(count, store.getStorefilesCount());
-<a class="jxr_linenumber" name="1289" href="#1289">1289</a>   }
-<a class="jxr_linenumber" name="1290" href="#1290">1290</a> 
-<a class="jxr_linenumber" name="1291" href="#1291">1291</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.html">CustomScanner</a> <strong class="jxr_keyword">implements</strong> RegionScanner {
-<a class="jxr_linenumber" name="1292" href="#1292">1292</a> 
-<a class="jxr_linenumber" name="1293" href="#1293">1293</a>     <strong class="jxr_keyword">private</strong> RegionScanner delegate;
-<a class="jxr_linenumber" name="1294" href="#1294">1294</a> 
-<a class="jxr_linenumber" name="1295" href="#1295">1295</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.html">CustomScanner</a>(RegionScanner delegate) {
-<a class="jxr_linenumber" name="1296" href="#1296">1296</a>       <strong class="jxr_keyword">this</strong>.delegate = delegate;
-<a class="jxr_linenumber" name="1297" href="#1297">1297</a>     }
-<a class="jxr_linenumber" name="1298" href="#1298">1298</a> 
-<a class="jxr_linenumber" name="1299" href="#1299">1299</a>     @Override
-<a class="jxr_linenumber" name="1300" href="#1300">1300</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> next(List&lt;Cell&gt; results) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1301" href="#1301">1301</a>       <strong class="jxr_keyword">return</strong> delegate.next(results);
-<a class="jxr_linenumber" name="1302" href="#1302">1302</a>     }
-<a class="jxr_linenumber" name="1303" href="#1303">1303</a> 
-<a class="jxr_linenumber" name="1304" href="#1304">1304</a>     @Override
-<a class="jxr_linenumber" name="1305" href="#1305">1305</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> next(List&lt;Cell&gt; result, ScannerContext scannerContext) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1306" href="#1306">1306</a>       <strong class="jxr_keyword">return</strong> delegate.next(result, scannerContext);
-<a class="jxr_linenumber" name="1307" href="#1307">1307</a>     }
-<a class="jxr_linenumber" name="1308" href="#1308">1308</a> 
-<a class="jxr_linenumber" name="1309" href="#1309">1309</a>     @Override
-<a class="jxr_linenumber" name="1310" href="#1310">1310</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> nextRaw(List&lt;Cell&gt; result) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1311" href="#1311">1311</a>       <strong class="jxr_keyword">return</strong> delegate.nextRaw(result);
-<a class="jxr_linenumber" name="1312" href="#1312">1312</a>     }
-<a class="jxr_linenumber" name="1313" href="#1313">1313</a> 
-<a class="jxr_linenumber" name="1314" href="#1314">1314</a>     @Override
-<a class="jxr_linenumber" name="1315" href="#1315">1315</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> nextRaw(List&lt;Cell&gt; result, ScannerContext context) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1316" href="#1316">1316</a>       <strong class="jxr_keyword">boolean</strong> nextRaw = delegate.nextRaw(result, context);
-<a class="jxr_linenumber" name="1317" href="#1317">1317</a>       <strong class="jxr_keyword">if</strong> (compactionLatch != <strong class="jxr_keyword">null</strong> &amp;&amp; compactionLatch.getCount() &gt; 0) {
-<a class="jxr_linenumber" name="1318" href="#1318">1318</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="1319" href="#1319">1319</a>           compactionLatch.await();
-<a class="jxr_linenumber" name="1320" href="#1320">1320</a>         } <strong class="jxr_keyword">catch</strong> (InterruptedException ie) {
-<a class="jxr_linenumber" name="1321" href="#1321">1321</a>         }
-<a class="jxr_linenumber" name="1322" href="#1322">1322</a>       }
-<a class="jxr_linenumber" name="1323" href="#1323">1323</a> 
-<a class="jxr_linenumber" name="1324" href="#1324">1324</a>       <strong class="jxr_keyword">if</strong> (CustomInnerRegionObserver.throwException.get()) {
-<a class="jxr_linenumber" name="1325" href="#1325">1325</a>         <strong class="jxr_keyword">if</strong> (exceptionLatch.getCount() &gt; 0) {
-<a class="jxr_linenumber" name="1326" href="#1326">1326</a>           <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="1327" href="#1327">1327</a>             exceptionLatch.await();
-<a class="jxr_linenumber" name="1328" href="#1328">1328</a>           } <strong class="jxr_keyword">catch</strong> (InterruptedException e) {
-<a class="jxr_linenumber" name="1329" href="#1329">1329</a>           }
-<a class="jxr_linenumber" name="1330" href="#1330">1330</a>           <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"throw exception"</span>);
-<a class="jxr_linenumber" name="1331" href="#1331">1331</a>         }
-<a class="jxr_linenumber" name="1332" href="#1332">1332</a>       }
-<a class="jxr_linenumber" name="1333" href="#1333">1333</a>       <strong class="jxr_keyword">return</strong> nextRaw;
-<a class="jxr_linenumber" name="1334" href="#1334">1334</a>     }
-<a class="jxr_linenumber" name="1335" href="#1335">1335</a> 
-<a class="jxr_linenumber" name="1336" href="#1336">1336</a>     @Override
-<a class="jxr_linenumber" name="1337" href="#1337">1337</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> close() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1338" href="#1338">1338</a>       delegate.close();
-<a class="jxr_linenumber" name="1339" href="#1339">1339</a>     }
-<a class="jxr_linenumber" name="1340" href="#1340">1340</a> 
-<a class="jxr_linenumber" name="1341" href="#1341">1341</a>     @Override
-<a class="jxr_linenumber" name="1342" href="#1342">1342</a>     <strong class="jxr_keyword">public</strong> HRegionInfo getRegionInfo() {
-<a class="jxr_linenumber" name="1343" href="#1343">1343</a>       <strong class="jxr_keyword">return</strong> delegate.getRegionInfo();
-<a class="jxr_linenumber" name="1344" href="#1344">1344</a>     }
-<a class="jxr_linenumber" name="1345" href="#1345">1345</a> 
-<a class="jxr_linenumber" name="1346" href="#1346">1346</a>     @Override
-<a class="jxr_linenumber" name="1347" href="#1347">1347</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isFilterDone() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1348" href="#1348">1348</a>       <strong class="jxr_keyword">return</strong> delegate.isFilterDone();
-<a class="jxr_linenumber" name="1349" href="#1349">1349</a>     }
-<a class="jxr_linenumber" name="1350" href="#1350">1350</a> 
-<a class="jxr_linenumber" name="1351" href="#1351">1351</a>     @Override
-<a class="jxr_linenumber" name="1352" href="#1352">1352</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> reseek(byte[] row) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1353" href="#1353">1353</a>       <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="1354" href="#1354">1354</a>     }
-<a class="jxr_linenumber" name="1355" href="#1355">1355</a> 
-<a class="jxr_linenumber" name="1356" href="#1356">1356</a>     @Override
-<a class="jxr_linenumber" name="1357" href="#1357">1357</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getMaxResultSize() {
-<a class="jxr_linenumber" name="1358" href="#1358">1358</a>       <strong class="jxr_keyword">return</strong> delegate.getMaxResultSize();
-<a class="jxr_linenumber" name="1359" href="#1359">1359</a>     }
-<a class="jxr_linenumber" name="1360" href="#1360">1360</a> 
-<a class="jxr_linenumber" name="1361" href="#1361">1361</a>     @Override
-<a class="jxr_linenumber" name="1362" href="#1362">1362</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getMvccReadPoint() {
-<a class="jxr_linenumber" name="1363" href="#1363">1363</a>       <strong class="jxr_keyword">return</strong> delegate.getMvccReadPoint();
-<a class="jxr_linenumber" name="1364" href="#1364">1364</a>     }
-<a class="jxr_linenumber" name="1365" href="#1365">1365</a> 
-<a class="jxr_linenumber" name="1366" href="#1366">1366</a>     @Override
-<a class="jxr_linenumber" name="1367" href="#1367">1367</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getBatch() {
-<a class="jxr_linenumber" name="1368" href="#1368">1368</a>       <strong class="jxr_keyword">return</strong> delegate.getBatch();
-<a class="jxr_linenumber" name="1369" href="#1369">1369</a>     }
-<a class="jxr_linenumber" name="1370" href="#1370">1370</a> 
-<a class="jxr_linenumber" name="1371" href="#1371">1371</a>     @Override
-<a class="jxr_linenumber" name="1372" href="#1372">1372</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> shipped() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1373" href="#1373">1373</a>       <strong class="jxr_keyword">this</strong>.delegate.shipped();
-<a class="jxr_linenumber" name="1374" href="#1374">1374</a>     }
-<a class="jxr_linenumber" name="1375" href="#1375">1375</a>   }
-<a class="jxr_linenumber" name="1376" href="#1376">1376</a> 
-<a class="jxr_linenumber" name="1377" href="#1377">1377</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">CustomInnerRegionObserverWrapper</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html">CustomInnerRegionObserver</a> {
-<a class="jxr_linenumber" name="1378" href="#1378">1378</a>     @Override
-<a class="jxr_linenumber" name="1379" href="#1379">1379</a>     <strong class="jxr_keyword">public</strong> RegionScanner postScannerOpen(ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,
-<a class="jxr_linenumber" name="1380" href="#1380">1380</a>         Scan scan, RegionScanner s) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1381" href="#1381">1381</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.html">CustomScanner</a>(s);
-<a class="jxr_linenumber" name="1382" href="#1382">1382</a>     }
-<a class="jxr_linenumber" name="1383" href="#1383">1383</a>   }
-<a class="jxr_linenumber" na

<TRUNCATED>