@Override
    public boolean equals(Object other) {
      if (other instanceof Call) {
        Call otherCall = (Call) (other);
        return this.underlyingRunnable.equals(otherCall.underlyingRunnable);
      } else if (other instanceof Runnable) {
        return this.underlyingRunnable.equals(other);
      }
      return false;
    }
A BlockingQueue reports waiting time in queue and queue length to ThriftMetrics.
hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift/CallQueue.java