[ https://issues.apache.org/jira/browse/HBASE-17676?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15877632#comment-15877632 ]
Duo Zhang commented on HBASE-17676: ----------------------------------- Also add a reference to this issue in the comment? For example, 'In HBASE-17676 we found that getClass().getSimpleName() maybe a bottleneck so we store it here.' > 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, HBASE-17676.v2.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)