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

ramkrishna.s.vasudevan commented on HBASE-15991:
------------------------------------------------

bq.can you give some background on this issue:
We are trying to load batchMutates using the PerformanceEvaluation tool. Since 
we have lot of parallel mutations we tend to get log of Inmemory flushes. Since 
the InMemoryflushRunnable gets added to a queue and that is Priority based we 
are not able to do the queue based operations for retrieval as 
InMemoryflushRunnable is not Comparable. 
Just changing to FIFO based queue will not have this problem at all and yes it 
solves the problem. But do let us know what you think of this and without 
fixing this we are not able to perform any InMemoryFlushes. 

> CompactingMemstore#InMemoryFlushRunnable should implement 
> Comparable/Comparator
> -------------------------------------------------------------------------------
>
>                 Key: HBASE-15991
>                 URL: https://issues.apache.org/jira/browse/HBASE-15991
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 2.0.0
>            Reporter: ramkrishna.s.vasudevan
>            Assignee: ramkrishna.s.vasudevan
>            Priority: Critical
>             Fix For: 2.0.0
>
>         Attachments: HBASE-15991.patch
>
>
> Configuring CompactingMemstore for a table fails due to the following error
> {code}
> 2016-06-08 23:27:03,761 ERROR [B.defaultRpcServer.handler...
> 2016-06-08 23:27:03,761 ERROR 
> [B.defaultRpcServer.handler=38,queue=8,port=16041] ipc.RpcServer: Unexpected 
> throwable object
> java.lang.ClassCastException: 
> org.apache.hadoop.hbase.regionserver.CompactingMemStore$InMemoryFlushRunnable 
> cannot be cast to java.lang.Comparable
>         at 
> java.util.concurrent.PriorityBlockingQueue.siftUpComparable(PriorityBlockingQueue.java:357)
>         at 
> java.util.concurrent.PriorityBlockingQueue.offer(PriorityBlockingQueue.java:489)
>         at 
> org.apache.hadoop.hbase.util.StealJobQueue$1.offer(StealJobQueue.java:56)
>         at 
> java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1361)
>         at 
> org.apache.hadoop.hbase.regionserver.CompactingMemStore.checkActiveSize(CompactingMemStore.java:258)
>         at 
> org.apache.hadoop.hbase.regionserver.AbstractMemStore.internalAdd(AbstractMemStore.java:403)
>         at 
> org.apache.hadoop.hbase.regionserver.AbstractMemStore.add(AbstractMemStore.java:113)
>         at org.apache.hadoop.hbase.regionserver.HStore.add(HStore.java:630)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.applyToMemstore(HRegion.java:3769)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.applyFamilyMapToMemstore(HRegion.java:3740)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.doMiniBatchMutate(HRegion.java:3222)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2954)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2896)
>         at 
> org.apache.hadoop.hbase.regionserver.RSRpcServices.doBatchOp(RSRpcServices.java:868)
>         at 
> org.apache.hadoop.hbase.regionserver.RSRpcServices.doNonAtomicRegionMutation(RSRpcServices.java:830)
>         at 
> org.apache.hadoop.hbase.regionserver.RSRpcServices.multi(RSRpcServices.java:2307)
>         at 
> org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:34826)
>  
> {code}
> It is a straight forward fix. But If we implement the Comparable the 
> compareTo() should be based on what attribute?  Should be based on the time?  



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to