@Override
  public Runnable take() throws InterruptedException {
    Call result = underlyingQueue.take();
    updateMetrics(result);
    return result;
  }
A BlockingQueue reports waiting time in queue and queue length to ThriftMetrics.
hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift/CallQueue.java