diff --git a/slack-api-client/src/main/java/com/slack/api/methods/impl/AsyncRateLimitExecutor.java b/slack-api-client/src/main/java/com/slack/api/methods/impl/AsyncRateLimitExecutor.java index 03871f52d..db3e5c03f 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/impl/AsyncRateLimitExecutor.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/impl/AsyncRateLimitExecutor.java @@ -87,7 +87,7 @@ public CompletableFuture execute( private void initCurrentQueueSizeStatsIfAbsent(String teamId, String methodNameWithSuffix) { if (teamId != null) { - metricsDatastore.updateCurrentQueueSize(config.getExecutorName(), teamId, methodNameWithSuffix); + metricsDatastore.setCurrentQueueSize(config.getExecutorName(), teamId, methodNameWithSuffix, 0); } } diff --git a/slack-api-client/src/main/java/com/slack/api/rate_limits/metrics/impl/BaseMemoryMetricsDatastore.java b/slack-api-client/src/main/java/com/slack/api/rate_limits/metrics/impl/BaseMemoryMetricsDatastore.java index 79e45366e..68ea1ae19 100644 --- a/slack-api-client/src/main/java/com/slack/api/rate_limits/metrics/impl/BaseMemoryMetricsDatastore.java +++ b/slack-api-client/src/main/java/com/slack/api/rate_limits/metrics/impl/BaseMemoryMetricsDatastore.java @@ -264,6 +264,13 @@ public void updateCurrentQueueSize(String executorName, String teamId, String me @Override public void setCurrentQueueSize(String executorName, String teamId, String methodName, Integer size) { if (this.isStatsEnabled()) { + CopyOnWriteArrayList messageIds = getOrCreateMessageIds(executorName, teamId, methodName); + Integer totalSize = messageIds.size(); + RateLimitQueue queue = getRateLimitQueue(executorName, teamId); + if (queue != null) { + totalSize += queue.getCurrentActiveQueueSize(methodName); + } + getOrCreateTeamLiveStats(executorName, teamId).getCurrentQueueSize().put(methodName, totalSize); getOrCreateTeamLiveStats(executorName, teamId).getCurrentQueueSize().put(methodName, size); } }