Skip to content

Commit c300a52

Browse files
committed
invoke rate limiter within try-catch block
1 parent b26809f commit c300a52

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

Diff for: metacat-main/src/main/java/com/netflix/metacat/main/api/RequestWrapper.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,11 @@ public <R> R processRequest(
160160
tags.put("request", resourceRequestName);
161161
tags.put("scheme", MetacatContextManager.getContext().getScheme());
162162
registry.counter(requestCounterId.withTags(tags)).increment();
163-
checkRequestRateLimit(name, resourceRequestName, tags);
164163

165164
try {
165+
// check rate limit in try-catch block in case ratelimiter throws exception.
166+
// those exceptions can be tracked correctly, by the existing finally block that logs metrics.
167+
checkRequestRateLimit(name, resourceRequestName, tags);
166168
log.info("### Calling method: {} for {}", resourceRequestName, name);
167169
return supplier.get();
168170
} catch (UnsupportedOperationException e) {
@@ -211,6 +213,9 @@ public <R> R processRequest(
211213
e.getCause() == null ? "" : e.getCause().getMessage(), resourceRequestName, name);
212214
log.error(message, e);
213215
throw e;
216+
} catch (MetacatTooManyRequestsException e) {
217+
collectRequestExceptionMetrics(tags, e.getClass().getSimpleName());
218+
throw e;
214219
} catch (Exception e) {
215220
collectRequestExceptionMetrics(tags, e.getClass().getSimpleName());
216221
final String message = String.format("%s.%s -- %s failed for %s", e.getMessage(),
@@ -296,10 +301,7 @@ private void checkRequestRateLimit(@NonNull final QualifiedName name,
296301
log.warn(errorMsg);
297302
registry.counter(requestRateLimitExceededId.withTags(tags)).increment();
298303
if (this.config.isRateLimiterEnforced()) {
299-
final MetacatTooManyRequestsException ex =
300-
new MetacatTooManyRequestsException(errorMsg);
301-
this.collectRequestExceptionMetrics(tags, ex.getClass().getSimpleName());
302-
throw ex;
304+
throw new MetacatTooManyRequestsException(errorMsg);
303305
}
304306
}
305307
}

0 commit comments

Comments
 (0)