[
https://issues.apache.org/jira/browse/HBASE-5532?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13224955#comment-13224955
]
terry zhang commented on HBASE-5532:
yes,Nicolas. This is a race condition and we can use lock to avoid this issue.
And now in the function toDetermines if Store should be split also didn't use
lock to protect.
{code:title=Store.java|borderStyle=solid}
/**
* Determines if Store should be split
* @return byte[] if store should be split, null otherwise.
*/
public byte[] getSplitPoint() {
this.lock.readLock().lock();
try {
// sanity checks
if (this.storefiles.isEmpty()) {
return null;
}
StoreFile.Reader r = sf.getReader(); * <= check if the reader is null*
if (r == null) {
LOG.warn("Storefile " + sf + " Reader is null");
continue;
}
long size = r.length();
if (size > maxSize) {
// This is the largest one so far
maxSize = size;
largestSf = sf;
}
}
StoreFile.Reader r = largestSf.getReader(); *<= check if the reader is
null*
if (r == null) {
LOG.warn("Storefile " + largestSf + " Reader is null");
return null;
}
// Get first, last, and mid keys. Midkey is the key that starts block
// in middle of hfile. Has column and timestamp. Need to return just
// the row we want to split on as midkey.
byte [] midkey = r.midkey();
.
return null;
}
{code}
> get NPE during MajorCompactionChecker
> --
>
> Key: HBASE-5532
> URL: https://issues.apache.org/jira/browse/HBASE-5532
> Project: HBase
> Issue Type: Bug
> Components: regionserver
>Reporter: terry zhang
> Attachments: HBASE-5532.patch
>
>
> We found error log (NullPointerException) below on our online cluster:
> 2012-03-05 00:17:09,592 ERROR
> org.apache.hadoop.hbase.regionserver.HRegionServer$MajorCompactionChecker:
> Caught exception
> java.lang.NullPointerException
> at
> org.apache.hadoop.hbase.regionserver.Store.isMajorCompaction(Store.java:878)
> at
> org.apache.hadoop.hbase.regionserver.Store.isMajorCompaction(Store.java:857)
> at
> org.apache.hadoop.hbase.regionserver.HRegion.isMajorCompaction(HRegion.java:3017)
> at
> org.apache.hadoop.hbase.regionserver.HRegionServer$MajorCompactionChecker.chore(HRegionServer.java:1172)
> at org.apache.hadoop.hbase.Chore.run(Chore.java:66)
> After Check the code we found although it already check whether store files
> has null reader at the begin of the function(isMajorCompaction), but it still
> has some possibility the reader is closed before it return(eg mini
> compaction). So we need to check store file reader before we use it to avoid
> this NPE
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira