[ 
https://issues.apache.org/jira/browse/HBASE-22705?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16887147#comment-16887147
 ] 

Pankaj Kumar commented on HBASE-22705:
--------------------------------------

Problem is, we sort the MOB files based on the accessCount in CachedMobFile 
during MobFileCache eviction. 

{code}

@Override
 public int compareTo(CachedMobFile that) {
 if (this.accessCount == that.accessCount) return 0;
 return this.accessCount < that.accessCount ? 1 : -1;
 }

{code}

So in a concurrent scenario if accessCount is modified then this probelm will 
happen as per the "Comparison method general contract". We should update the 
accessCount in sync way.

> IllegalArgumentException exception occured during MobFileCache eviction
> -----------------------------------------------------------------------
>
>                 Key: HBASE-22705
>                 URL: https://issues.apache.org/jira/browse/HBASE-22705
>             Project: HBase
>          Issue Type: Bug
>          Components: mob
>    Affects Versions: 2.0.5
>            Reporter: Pankaj Kumar
>            Assignee: Pankaj Kumar
>            Priority: Critical
>
> IllegalArgumentException occured during scan operation,
> {noformat}
> 2019-07-08 01:46:57,764 | ERROR | 
> RpcServer.FifoWFPBQ.default.handler=129,queue=9,port=21302 | Unexpected 
> throwable object  | 
> org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2502)
> java.lang.IllegalArgumentException: Comparison method violates its general 
> contract!
>       at java.util.ComparableTimSort.mergeHi(ComparableTimSort.java:866)
>       at java.util.ComparableTimSort.mergeAt(ComparableTimSort.java:483)
>       at 
> java.util.ComparableTimSort.mergeForceCollapse(ComparableTimSort.java:422)
>       at java.util.ComparableTimSort.sort(ComparableTimSort.java:222)
>       at java.util.Arrays.sort(Arrays.java:1312)
>       at java.util.Arrays.sort(Arrays.java:1506)
>       at java.util.ArrayList.sort(ArrayList.java:1462)
>       at java.util.Collections.sort(Collections.java:141)
>       at org.apache.hadoop.hbase.mob.MobFileCache.evict(MobFileCache.java:144)
>       at 
> org.apache.hadoop.hbase.mob.MobFileCache.openFile(MobFileCache.java:214)
>       at 
> org.apache.hadoop.hbase.regionserver.HMobStore.readCell(HMobStore.java:397)
>       at 
> org.apache.hadoop.hbase.regionserver.HMobStore.resolve(HMobStore.java:358)
>       at 
> org.apache.hadoop.hbase.regionserver.MobStoreScanner.next(MobStoreScanner.java:74)
>       at 
> org.apache.hadoop.hbase.regionserver.KeyValueHeap.next(KeyValueHeap.java:150)
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to