private <T extends MutableMetric> T addNewMetricIfAbsent(String name, T ret,
    Class<T> metricClass) {
    // If the value we get back is null then the put was successful and we will
    // return that. Otherwise metric should contain the thing that was in
    // before the put could be completed.
    MutableMetric metric = metricsMap.putIfAbsent(name, ret);
    if (metric == null) {
      return ret;
    }

    return returnExistingWithCast(metric, metricClass, name);
  }
Get a MetricMutableCounterLong from the storage. If it is not there atomically put it.
@param counterName            Name of the counter to get
@param potentialStartingValue starting value if we have to create a new counter
hbase-hadoop-compat/src/main/java/org/apache/hadoop/metrics2/lib/DynamicMetricsRegistry.java