You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Anoop Sam John (JIRA)" <ji...@apache.org> on 2017/02/22 05:39:44 UTC

[jira] [Commented] (HBASE-17676) Get class name once for all in AbstractFSWAL

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

Anoop Sam John commented on HBASE-17676:
----------------------------------------

getClass().getSimpleName()  is that costly?  Seeing the subject, I thought it speaks abt reading the class name from a config.  

> Get class name once for all in AbstractFSWAL
> --------------------------------------------
>
>                 Key: HBASE-17676
>                 URL: https://issues.apache.org/jira/browse/HBASE-17676
>             Project: HBase
>          Issue Type: Bug
>          Components: Performance
>    Affects Versions: 2.0
>            Reporter: Yu Li
>            Assignee: Yu Li
>         Attachments: HBASE-17676.patch
>
>
> While verifying HBASE-17471 with high write workload, observed several handler thread at getting class name in jstack, as shown below:
> {noformat}
> "B.defaultRpcServer.handler=60,queue=3,port=16020" daemon prio=10 tid=0x00007f0673835800 nid=0x4dec runnable [0x00007f06721b5000]
>    java.lang.Thread.State: RUNNABLE
>         at java.lang.Class.getEnclosingMethod0(Native Method)
>         at java.lang.Class.getEnclosingMethodInfo(Class.java:964)
>         at java.lang.Class.getEnclosingClass(Class.java:1137)
>         at java.lang.Class.getSimpleBinaryName(Class.java:1282)
>         at java.lang.Class.getSimpleName(Class.java:1174)
>         at org.apache.hadoop.hbase.regionserver.wal.FSHLog.stampSequenceIdAndPublishToRingBuffer(FSHLog.java:1251)
>         at org.apache.hadoop.hbase.regionserver.wal.FSHLog.append(FSHLog.java:1238)
>         at org.apache.hadoop.hbase.regionserver.HRegion.doMiniBatchMutation(HRegion.java:3173)
>         at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2874)
>         at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2814)
>         at org.apache.hadoop.hbase.regionserver.RSRpcServices.doBatchOp(RSRpcServices.java:823)
>         at org.apache.hadoop.hbase.regionserver.RSRpcServices.doNonAtomicRegionMutation(RSRpcServices.java:785)
>         at org.apache.hadoop.hbase.regionserver.RSRpcServices.multi(RSRpcServices.java:2259)
>         at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:32213)
>         at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:848)
>         at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:102)
>         at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:133)
>         at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:108)
>         at java.lang.Thread.run(Thread.java:756)
> {noformat}
> We could get the class name in constructor and use it for all places needed.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)