Feng Wang created HBASE-6871:
--------------------------------

             Summary: HFileBlockIndex Write Error BlockIndex in HFile V2
                 Key: HBASE-6871
                 URL: https://issues.apache.org/jira/browse/HBASE-6871
             Project: HBase
          Issue Type: Bug
          Components: HFile
    Affects Versions: 0.94.1
         Environment: redhat 5u4
            Reporter: Feng Wang
            Priority: Critical


After writing some data, compaction and scan operation both failure, the 
exception message is below:
2012-09-18 06:32:26,227 ERROR 
org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest: Compaction 
failed regionName=hfile_test,,1347778722498.d220df43fb9d8af4633bd7f547613f9e., 
storeName=page_info, fileCount=7, fileSize=1.3m (188.0k, 188.0k, 188.0k, 
188.0k, 188.0k, 185.8k, 223.3k), priority=9, 
time=45826250816757428java.io.IOException: Could not reseek 
StoreFileScanner[HFileScanner for reader 
reader=hdfs://hadoopdev1.cm6:9000/hbase/hfile_test/d220df43fb9d8af4633bd7f547613f9e/page_info/b0f6118f58de47ad9d87cac438ee0895,
 compression=lzo, cacheConf=CacheConfig:enabled [cacheDataOnRead=true] 
[cacheDataOnWrite=false] [cacheIndexesOnWrite=false] [cacheBloomsOnWrite=false] 
[cacheEvictOnClose=false] [cacheCompressed=false], 
firstKey=http://com.truereligionbrandjeans.www/Womens_Dresses/pl/c/Womens_Shirts/pl/c/Womens_Shirts/pl/c/Womens_Shirts/pl/c/Womens_Shirts/pl/c/Womens_Shirts/pl/c/Womens_Shirts/pl/c/Womens_Shirts/pl/c/Womens_Shirts/pl/c/Womens_Shirts/pl/c/Womens_Shirts/pl/c/Womens_Shirts/pl/c/Womens_Shirts/pl/c/Womens_Shirts/pl/c/Womens_Shirts/pl/c/Womens_Shirts/pl/c/Womens_Sweaters/pl/c/Womens_Sweaters/pl/c/Womens_Sweaters/pl/c/Womens_Sweaters/pl/c/Womens_Sweaters/pl/c/Womens_Sweaters/pl/c/Womens_Shirts/pl/c/Womens_Sweaters/pl/c/Womens_Shirts/pl/c/Womens_Shirts/pl/c/Womens_Shirts/pl/c/Womens_Sweaters/pl/c/Womens_Sweaters/pl/c/Womens_Shirts/pl/c/Womens_Shirts/pl/c/Womens_Sweaters/pl/c/Womens_Sweaters/pl/c/Womens_Sweaters/pl/c/Womens_Sweaters/pl/c/Womens_Sweaters/pl/c/4010.html/page_info:anchor_sig/1347764439449/DeleteColumn,
 lastKey=http://com.trura.www//page_info:page_type/1347763395089/Put, 
avgKeyLen=776, avgValueLen=4, entries=12853, length=228611, 
cur=http://com.truereligionbrandjeans.www/Womens_Exclusive_Details/pl/c/4970.html/page_info:is_deleted/1347764003865/Put/vlen=1/ts=0]
 to key 
http://com.truereligionbrandjeans.www/Womens_Exclusive_Details/pl/c/4970.html/page_info:is_deleted/OLDEST_TIMESTAMP/Minimum/vlen=0/ts=0
        at 
org.apache.hadoop.hbase.regionserver.StoreFileScanner.reseek(StoreFileScanner.java:178)
        
        at 
org.apache.hadoop.hbase.regionserver.NonLazyKeyValueScanner.doRealSeek(NonLazyKeyValueScanner.java:54)
        
        at 
org.apache.hadoop.hbase.regionserver.KeyValueHeap.generalizedSeek(KeyValueHeap.java:299)
        at 
org.apache.hadoop.hbase.regionserver.KeyValueHeap.reseek(KeyValueHeap.java:244) 
       
        at 
org.apache.hadoop.hbase.regionserver.StoreScanner.reseek(StoreScanner.java:521) 
       
        at 
org.apache.hadoop.hbase.regionserver.StoreScanner.next(StoreScanner.java:402)
        at 
org.apache.hadoop.hbase.regionserver.Store.compactStore(Store.java:1570)        
        at org.apache.hadoop.hbase.regionserver.Store.compact(Store.java:997)   
     
        at 
org.apache.hadoop.hbase.regionserver.HRegion.compact(HRegion.java:1216)
        at 
org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest.run(CompactionRequest.java:250)
        
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.io.IOException: Expected block type LEAF_INDEX, but got 
INTERMEDIATE_INDEX: blockType=INTERMEDIATE_INDEX, onDiskSizeWithoutHeader=8514, 
uncompressedSizeWithoutHeader=131837, prevBlockOffset=-1, 
dataBeginsWith=\x00\x00\x00\x9B\x00\x00\x00\x00\x00\x00\x03#\x00\x00\x050\x00\x00\x08\xB7\x00\x00\x0Cr\x00\x00\x0F\xFA\x00\x00\x120,
 fileOffset=218942        at 
org.apache.hadoop.hbase.io.hfile.HFileReaderV2.validateBlockType(HFileReaderV2.java:378)
        at 
org.apache.hadoop.hbase.io.hfile.HFileReaderV2.readBlock(HFileReaderV2.java:331)
        at 
org.apache.hadoop.hbase.io.hfile.HFileBlockIndex$BlockIndexReader.seekToDataBlock(HFileBlockIndex.java:213)
        at 
org.apache.hadoop.hbase.io.hfile.HFileReaderV2$AbstractScannerV2.seekTo(HFileReaderV2.java:455)
        at 
org.apache.hadoop.hbase.io.hfile.HFileReaderV2$AbstractScannerV2.reseekTo(HFileReaderV2.java:493)
        
        at 
org.apache.hadoop.hbase.regionserver.StoreFileScanner.reseekAtOrAfter(StoreFileScanner.java:242)
        
        at 
org.apache.hadoop.hbase.regionserver.StoreFileScanner.reseek(StoreFileScanner.java:167)

After some debug works,I found that when hfile closing, if the rootChunk is 
empty, the only one curInlineChunk will upgrade to root chunk. But if the last 
block flushing make curInlineChunk exceed max index block size, the root 
chunk(upgrade from curInlineChunk) will be splited into intermediate index 
blocks, and the index level is set to 2. So when BlockIndexReader read the root 
index, it expects the next level index block is leaf index(index level=2), but 
the on disk index block is intermediate block, the error happened. 

After I add some code to check curInlineChunk's size when rootChunk is empty in 
shouldWriteBlock(boolean closing), this bug can be fixed.



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to