[ https://issues.apache.org/jira/browse/HBASE-16660?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16048243#comment-16048243 ]
churro morales commented on HBASE-16660: ---------------------------------------- Please do not use DateTieredCompaction with Major Compaction unless you have a version with this. Otherwise your cluster will not compact any store files and you can end up running out of file descriptors. > ArrayIndexOutOfBounds during the majorCompactionCheck in DateTieredCompaction > ----------------------------------------------------------------------------- > > Key: HBASE-16660 > URL: https://issues.apache.org/jira/browse/HBASE-16660 > Project: HBase > Issue Type: Bug > Components: Compaction > Affects Versions: 0.98.20 > Reporter: Abhishek Singh Chouhan > Assignee: Abhishek Singh Chouhan > Fix For: 2.0.0, 1.3.0, 1.4.0, 0.98.23 > > Attachments: HBASE-16660-0.98.patch, HBASE-16660.master.001.patch, > HBASE-16660.master.001.patch > > > We get an ArrayIndexOutOfBoundsException during the major compaction check as > follows > {noformat} > 2016-09-19 05:04:18,287 ERROR [20.compactionChecker] > regionserver.HRegionServer$CompactionChecker - Caught exception > java.lang.ArrayIndexOutOfBoundsException: -2 > at > org.apache.hadoop.hbase.regionserver.compactions.DateTieredCompactionPolicy.shouldPerformMajorCompaction(DateTieredCompactionPolicy.java:159) > at > org.apache.hadoop.hbase.regionserver.HStore.isMajorCompaction(HStore.java:1412) > at > org.apache.hadoop.hbase.regionserver.HRegionServer$CompactionChecker.chore(HRegionServer.java:1532) > at org.apache.hadoop.hbase.Chore.run(Chore.java:80) > at java.lang.Thread.run(Thread.java:745) > {noformat} > This happens due to the following lines in > org.apache.hadoop.hbase.regionserver.compactions.DateTieredCompactionPolicy.selectMajorCompaction > {noformat} > int lowerWindowIndex = Collections.binarySearch(boundaries, > minTimestamp == null ? Long.MAX_VALUE : file.getMinimumTimestamp()); > int upperWindowIndex = Collections.binarySearch(boundaries, > file.getMaximumTimestamp() == null ? Long.MAX_VALUE : > file.getMaximumTimestamp()); > {noformat} > These return negative values if the element is not found and in the case the > values are equal we get the exception. -- This message was sent by Atlassian JIRA (v6.4.14#64029)