public RateLimiter load()

in src/main/java/com/googlesource/gerrit/plugins/ratelimiter/Module.java [92:133]


    public RateLimiter load(String key) {
      Optional<RateLimit> limit = finder.find(RateLimitType.UPLOAD_PACK_PER_HOUR, key);
      Optional<RateLimit> warn = finder.find(RateLimitType.UPLOAD_PACK_PER_HOUR_WARN, key);
      Optional<RateLimit> timeLapse = finder.find(RateLimitType.TIME_LAPSE_IN_MINUTES, key);
      if (!limit.isPresent() && !warn.isPresent()) {
        return UnlimitedRateLimiter.INSTANCE;
      }

      String rateLimitType = DEFAULT_RATE_LIMIT_TYPE;

      // In the case that there is a warning but no limit
      Integer myLimit = Integer.MAX_VALUE;
      if (limit.isPresent()) {
        myLimit = limit.get().getRatePerHour();
        rateLimitType = limit.get().getType().getLimitType();
      }

      long effectiveTimeLapse = PeriodicRateLimiter.DEFAULT_TIME_LAPSE_IN_MINUTES;
      if (timeLapse.isPresent()) {
        long providedTimeLapse = timeLapse.get().getRatePerHour();
        if (providedTimeLapse > 0 && providedTimeLapse <= effectiveTimeLapse) {
          effectiveTimeLapse = providedTimeLapse;
          rateLimitType = timeLapse.get().getType().getLimitType();
        } else {
          logger.warn(
              "The time lapse is set to the default {} minutes, as the configured value is invalid.",
              effectiveTimeLapse);
        }
      }
      RateLimiter rateLimiter =
          periodicRateLimiterFactory.create(myLimit, effectiveTimeLapse, rateLimitType);

      if (warn.isPresent()) {
        if (limit.isPresent()) {
          return warningRateLimiterFactory.create(
              rateLimiter, key, warn.get().getRatePerHour(), effectiveTimeLapse);
        }
        return warningUnlimitedRateLimiterFactory.create(
            rateLimiter, key, warn.get().getRatePerHour(), effectiveTimeLapse);
      }
      return rateLimiter;
    }