[ 
https://issues.apache.org/jira/browse/HBASE-16660?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrew Purtell updated HBASE-16660:
-----------------------------------
       Resolution: Fixed
     Hadoop Flags: Reviewed
    Fix Version/s: 1.3.0
           Status: Resolved  (was: Patch Available)

Pushed, thanks for the patch [~abhishek.chouhan]

> 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.3.4#6332)

Reply via email to