diff --git a/src/server/src/main/java/io/cassandrareaper/service/DiagEventSubscriptionService.java b/src/server/src/main/java/io/cassandrareaper/service/DiagEventSubscriptionService.java index 7a26b92b1..b8e74187c 100644 --- a/src/server/src/main/java/io/cassandrareaper/service/DiagEventSubscriptionService.java +++ b/src/server/src/main/java/io/cassandrareaper/service/DiagEventSubscriptionService.java @@ -84,6 +84,7 @@ public final class DiagEventSubscriptionService { private final AppContext context; private final HttpClient httpClient; private final ScheduledExecutorService scheduler; + private final AtomicLong lastUpdateCheck = new AtomicLong(0); private Set subsAlwaysActive; @@ -135,7 +136,13 @@ public void subscribe(DiagEventSubscription sub, EventOutput eventOutput, String private synchronized void updateEnabledEvents() { if (context.isDistributed.get()) { - updateEnabledEvents(Collections.emptySet()); + if (!BROADCASTERS.isEmpty() || null == subsAlwaysActive || !subsAlwaysActive.isEmpty() + // when there are no broadcasters and no known subscriptions, only check for updated events once per minute + || (System.currentTimeMillis() - lastUpdateCheck.get()) > TimeUnit.MINUTES.toMillis(1)) { + + lastUpdateCheck.set(System.currentTimeMillis()); + updateEnabledEvents(Collections.emptySet()); + } } }