Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-17676

Get class name once for all in AbstractFSWAL

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 2.0.0
    • 2.0.0
    • Performance
    • None
    • Reviewed

    Description

      While verifying HBASE-17471 with high write workload, observed several handler thread at getting class name in jstack, as shown below:

      "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)
      

      We could get the class name in constructor and use it for all places needed.

      Attachments

        1. HBASE-17676.v3.patch
          3 kB
          Yu Li
        2. HBASE-17676.v2.patch
          2 kB
          Yu Li
        3. HBASE-17676.patch
          2 kB
          Yu Li

        Activity

          People

            liyu Yu Li
            liyu Yu Li
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: