diff --git a/mantis-control-plane/mantis-control-plane-server/src/main/java/io/mantisrx/master/api/akka/route/MasterApiMetrics.java b/mantis-control-plane/mantis-control-plane-server/src/main/java/io/mantisrx/master/api/akka/route/MasterApiMetrics.java index a51f0c38b..9f2d6b4dd 100644 --- a/mantis-control-plane/mantis-control-plane-server/src/main/java/io/mantisrx/master/api/akka/route/MasterApiMetrics.java +++ b/mantis-control-plane/mantis-control-plane-server/src/main/java/io/mantisrx/master/api/akka/route/MasterApiMetrics.java @@ -25,6 +25,7 @@ public class MasterApiMetrics { private final Counter resp4xx; private final Counter resp5xx; private final Counter incomingRequestCount; + private final Counter throttledRequestCount; private final Counter askTimeOutCount; private static final MasterApiMetrics INSTANCE = new MasterApiMetrics(); @@ -33,6 +34,7 @@ private MasterApiMetrics() { Metrics m = new Metrics.Builder() .id("MasterApiMetrics") .addCounter("incomingRequestCount") + .addCounter("throttledRequestCount") .addCounter("resp2xx") .addCounter("resp4xx") .addCounter("resp5xx") @@ -44,6 +46,7 @@ private MasterApiMetrics() { this.resp4xx = metrics.getCounter("resp4xx"); this.resp5xx = metrics.getCounter("resp5xx"); this.incomingRequestCount = metrics.getCounter("incomingRequestCount"); + this.throttledRequestCount = metrics.getCounter("throttledRequestCount"); } public static final MasterApiMetrics getInstance() { @@ -69,4 +72,8 @@ public void incrementAskTimeOutCount() { public void incrementIncomingRequestCount() { incomingRequestCount.increment(); } + + public void incrementThrottledRequestCount() { + throttledRequestCount.increment(); + } } diff --git a/mantis-control-plane/mantis-control-plane-server/src/main/java/io/mantisrx/master/api/akka/route/v1/BaseRoute.java b/mantis-control-plane/mantis-control-plane-server/src/main/java/io/mantisrx/master/api/akka/route/v1/BaseRoute.java index e590f0545..a7e07e147 100644 --- a/mantis-control-plane/mantis-control-plane-server/src/main/java/io/mantisrx/master/api/akka/route/v1/BaseRoute.java +++ b/mantis-control-plane/mantis-control-plane-server/src/main/java/io/mantisrx/master/api/akka/route/v1/BaseRoute.java @@ -332,6 +332,7 @@ protected Route withFuture(CompletableFuture tFuture) { if (throwable instanceof RequestThrottledException) { MasterApiMetrics.getInstance().incrementResp4xx(); + MasterApiMetrics.getInstance().incrementThrottledRequestCount(); return complete(StatusCodes.TOO_MANY_REQUESTS); } diff --git a/mantis-control-plane/mantis-control-plane-server/src/main/java/io/mantisrx/master/resourcecluster/ResourceClusterGatewayAkkaImpl.java b/mantis-control-plane/mantis-control-plane-server/src/main/java/io/mantisrx/master/resourcecluster/ResourceClusterGatewayAkkaImpl.java index cbe43b97c..f23edfb42 100644 --- a/mantis-control-plane/mantis-control-plane-server/src/main/java/io/mantisrx/master/resourcecluster/ResourceClusterGatewayAkkaImpl.java +++ b/mantis-control-plane/mantis-control-plane-server/src/main/java/io/mantisrx/master/resourcecluster/ResourceClusterGatewayAkkaImpl.java @@ -53,7 +53,7 @@ class ResourceClusterGatewayAkkaImpl implements ResourceClusterGateway { private Function> withThrottle(Function> func) { return in -> { - if (rateLimiter.tryAcquire(1, TimeUnit.SECONDS)) { + if (rateLimiter.tryAcquire(200, TimeUnit.MILLISECONDS)) { return func.apply(in); } else { return CompletableFutures.exceptionallyCompletedFuture(