protected void chargeQuotaUsage(RestRequest restRequest, Map<QuotaName, Double> requestCostMap) {
    boolean partialCharge = false;
    boolean noCharge = true;
    for (QuotaEnforcer quotaEnforcer : quotaEnforcers) {
      try {
        quotaEnforcer.charge(restRequest, requestCostMap);
        noCharge = false;
      } catch (QuotaException quotaException) {
        LOGGER.warn("Exception {} while charging for {} quotas.", quotaException, quotaEnforcer.supportedQuotaNames());
        partialCharge = true;
      }
    }
    if (noCharge) {
      quotaMetrics.noChargeRate.mark();
    } else if (partialCharge) {
      quotaMetrics.partialChargeRate.mark();
    }
  }
Charge the specified {@code requestCostMap} for the {@link RestRequest}.
@param restRequest {@link RestRequest} for which usage should be charged.
@param requestCostMap {@link Map} of {@link QuotaName} to usage to be charged.
ambry-quota/src/main/java/com/github/ambry/quota/AmbryQuotaManager.java