From 42a15097c65bfb2027da8b684f4db9fa3d8de651 Mon Sep 17 00:00:00 2001 From: Andrew Shvayka Date: Tue, 26 Nov 2019 12:49:11 +0200 Subject: [PATCH] Performance Improvement on start --- .../server/service/state/DefaultDeviceStateService.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java b/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java index 1a57aa8dc3..094bab1e0d 100644 --- a/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java +++ b/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java @@ -135,6 +135,8 @@ public class DefaultDeviceStateService implements DeviceStateService { @Getter private int initFetchPackSize; + private volatile boolean clusterUpdatePending = false; + private ListeningScheduledExecutorService queueExecutor; private ConcurrentMap> tenantDevices = new ConcurrentHashMap<>(); private ConcurrentMap deviceStates = new ConcurrentHashMap<>(); @@ -192,7 +194,10 @@ public class DefaultDeviceStateService implements DeviceStateService { @Override public void onClusterUpdate() { - queueExecutor.submit(this::onClusterUpdateSync); + if (!clusterUpdatePending) { + clusterUpdatePending = true; + queueExecutor.submit(this::onClusterUpdateSync); + } } @Override @@ -220,6 +225,7 @@ public class DefaultDeviceStateService implements DeviceStateService { } private void onClusterUpdateSync() { + clusterUpdatePending = false; List tenants = tenantService.findTenants(new TextPageLink(Integer.MAX_VALUE)).getData(); for (Tenant tenant : tenants) { List> fetchFutures = new ArrayList<>();