You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Anoop Sam John (JIRA)" <ji...@apache.org> on 2014/01/31 20:20:14 UTC
[jira] [Assigned] (HBASE-10438) NPE from LRUDictionary when size
reaches the max init value
[ https://issues.apache.org/jira/browse/HBASE-10438?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Anoop Sam John reassigned HBASE-10438:
--------------------------------------
Assignee: Anoop Sam John (was: ramkrishna.s.vasudevan)
> NPE from LRUDictionary when size reaches the max init value
> -----------------------------------------------------------
>
> Key: HBASE-10438
> URL: https://issues.apache.org/jira/browse/HBASE-10438
> Project: HBase
> Issue Type: Bug
> Affects Versions: 0.98.0
> Reporter: ramkrishna.s.vasudevan
> Assignee: Anoop Sam John
> Priority: Blocker
> Fix For: 0.98.0, 0.99.0
>
> Attachments: HBASE-10438.patch
>
>
> This happened while testing tags with COMPRESS_TAG=true/false. I was trying to change this attribute of compressing tags by altering the HCD. The DBE used is FAST_DIFF.
> In one particular case I got this
> {code}
> 2014-01-29 16:20:03,023 ERROR [regionserver60020-smallCompactions-1390983591688] regionserver.CompactSplitThread: Compaction failed Request = regionName=usertable,user5146961419203824653,1390979618897.2dd477d0aed888c615a29356c0bbb19d., storeName=f1, fileCount=4, fileSize=498.6 M (226.0 M, 163.7 M, 67.0 M, 41.8 M), priority=6, time=1994941280334574
> java.lang.NullPointerException
> at org.apache.hadoop.hbase.io.util.LRUDictionary$BidirectionalLRUMap.put(LRUDictionary.java:109)
> at org.apache.hadoop.hbase.io.util.LRUDictionary$BidirectionalLRUMap.access$200(LRUDictionary.java:76)
> at org.apache.hadoop.hbase.io.util.LRUDictionary.addEntry(LRUDictionary.java:62)
> at org.apache.hadoop.hbase.io.TagCompressionContext.uncompressTags(TagCompressionContext.java:147)
> at org.apache.hadoop.hbase.io.encoding.BufferedDataBlockEncoder$BufferedEncodedSeeker.decodeTags(BufferedDataBlockEncoder.java:270)
> at org.apache.hadoop.hbase.io.encoding.FastDiffDeltaEncoder$1.decode(FastDiffDeltaEncoder.java:522)
> at org.apache.hadoop.hbase.io.encoding.FastDiffDeltaEncoder$1.decodeFirst(FastDiffDeltaEncoder.java:535)
> at org.apache.hadoop.hbase.io.encoding.BufferedDataBlockEncoder$BufferedEncodedSeeker.setCurrentBuffer(BufferedDataBlockEncoder.java:188)
> at org.apache.hadoop.hbase.io.hfile.HFileReaderV2$EncodedScannerV2.updateCurrentBlock(HFileReaderV2.java:1017)
> at org.apache.hadoop.hbase.io.hfile.HFileReaderV2$EncodedScannerV2.next(HFileReaderV2.java:1068)
> at org.apache.hadoop.hbase.regionserver.StoreFileScanner.next(StoreFileScanner.java:137)
> at org.apache.hadoop.hbase.regionserver.KeyValueHeap.next(KeyValueHeap.java:108)
> at org.apache.hadoop.hbase.regionserver.StoreScanner.next(StoreScanner.java:509)
> at org.apache.hadoop.hbase.regionserver.compactions.Compactor.performCompaction(Compactor.java:217)
> at org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor.compact(DefaultCompactor.java:76)
> at org.apache.hadoop.hbase.regionserver.DefaultStoreEngine$DefaultCompactionContext.compact(DefaultStoreEngine.java:109)
> at org.apache.hadoop.hbase.regionserver.HStore.compact(HStore.java:1074)
> at org.apache.hadoop.hbase.regionserver.HRegion.compact(HRegion.java:1382)
> at org.apache.hadoop.hbase.regionserver.CompactSplitThread$CompactionRunner.run(CompactSplitThread.java:475)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:744)
> {code}
> I am not able to reproduce this repeatedly. One thing is I altered the table to use COMPRESS_TAGS here before that it was false.
> My feeling is this is not due to the COMPRESS_TAGS because we try to handle this per file by adding it in FILE_INFO.
> In the above stack trace the problem has occured while compaction and so the flushed file should have this property set. I think the problem could be with LRUDicitonary.
> the reason for NPE is
> {code}
> if (currSize < initSize) {
> // There is space to add without evicting.
> indexToNode[currSize].setContents(stored, 0, stored.length);
> setHead(indexToNode[currSize]);
> short ret = (short) currSize++;
> nodeToIndex.put(indexToNode[ret], ret);
> System.out.println(currSize);
> return ret;
> } else {
> short s = nodeToIndex.remove(tail);
> tail.setContents(stored, 0, stored.length);
> // we need to rehash this.
> nodeToIndex.put(tail, s);
> moveToHead(tail);
> return s;
> }
> {code}
> Here
> {code}
> short s = nodeToIndex.remove(tail);
> {code}
> is giving a null value and the typecasting to short primitive is throwing NPE. Am digging this further to see if am able to reproduce this.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)