diff --git a/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/limits/DefaultTransportRateLimitService.java b/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/limits/DefaultTransportRateLimitService.java index 58f94b0b00..473ecc39af 100644 --- a/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/limits/DefaultTransportRateLimitService.java +++ b/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/limits/DefaultTransportRateLimitService.java @@ -93,7 +93,7 @@ public class DefaultTransportRateLimitService implements TransportRateLimitServi EntityTransportRateLimits deviceRateLimitPrototype = createRateLimits(update.getProfile(), false); for (TenantId tenantId : update.getAffectedTenants()) { mergeLimits(tenantId, tenantRateLimitPrototype, perTenantLimits::get, perTenantLimits::put); - tenantDevices.get(tenantId).forEach(deviceId -> { + getTenantDevices(tenantId).forEach(deviceId -> { mergeLimits(deviceId, deviceRateLimitPrototype, perDeviceLimits::get, perDeviceLimits::put); }); } @@ -104,7 +104,7 @@ public class DefaultTransportRateLimitService implements TransportRateLimitServi EntityTransportRateLimits tenantRateLimitPrototype = createRateLimits(tenantProfileCache.get(tenantId), true); EntityTransportRateLimits deviceRateLimitPrototype = createRateLimits(tenantProfileCache.get(tenantId), false); mergeLimits(tenantId, tenantRateLimitPrototype, perTenantLimits::get, perTenantLimits::put); - tenantDevices.get(tenantId).forEach(deviceId -> { + getTenantDevices(tenantId).forEach(deviceId -> { mergeLimits(deviceId, deviceRateLimitPrototype, perDeviceLimits::get, perDeviceLimits::put); }); } @@ -259,8 +259,13 @@ public class DefaultTransportRateLimitService implements TransportRateLimitServi private EntityTransportRateLimits getDeviceRateLimits(TenantId tenantId, DeviceId deviceId) { return perDeviceLimits.computeIfAbsent(deviceId, k -> { EntityTransportRateLimits limits = createRateLimits(tenantProfileCache.get(tenantId), false); - tenantDevices.computeIfAbsent(tenantId, id -> ConcurrentHashMap.newKeySet()).add(deviceId); + getTenantDevices(tenantId).add(deviceId); return limits; }); } + + private Set getTenantDevices(TenantId tenantId) { + return tenantDevices.computeIfAbsent(tenantId, id -> ConcurrentHashMap.newKeySet()); + } + }