Fix NPE in transport rate limit service on tenant update
This commit is contained in:
parent
12af0cd757
commit
f878df58a9
@ -93,7 +93,7 @@ public class DefaultTransportRateLimitService implements TransportRateLimitServi
|
|||||||
EntityTransportRateLimits deviceRateLimitPrototype = createRateLimits(update.getProfile(), false);
|
EntityTransportRateLimits deviceRateLimitPrototype = createRateLimits(update.getProfile(), false);
|
||||||
for (TenantId tenantId : update.getAffectedTenants()) {
|
for (TenantId tenantId : update.getAffectedTenants()) {
|
||||||
mergeLimits(tenantId, tenantRateLimitPrototype, perTenantLimits::get, perTenantLimits::put);
|
mergeLimits(tenantId, tenantRateLimitPrototype, perTenantLimits::get, perTenantLimits::put);
|
||||||
tenantDevices.get(tenantId).forEach(deviceId -> {
|
getTenantDevices(tenantId).forEach(deviceId -> {
|
||||||
mergeLimits(deviceId, deviceRateLimitPrototype, perDeviceLimits::get, perDeviceLimits::put);
|
mergeLimits(deviceId, deviceRateLimitPrototype, perDeviceLimits::get, perDeviceLimits::put);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -104,7 +104,7 @@ public class DefaultTransportRateLimitService implements TransportRateLimitServi
|
|||||||
EntityTransportRateLimits tenantRateLimitPrototype = createRateLimits(tenantProfileCache.get(tenantId), true);
|
EntityTransportRateLimits tenantRateLimitPrototype = createRateLimits(tenantProfileCache.get(tenantId), true);
|
||||||
EntityTransportRateLimits deviceRateLimitPrototype = createRateLimits(tenantProfileCache.get(tenantId), false);
|
EntityTransportRateLimits deviceRateLimitPrototype = createRateLimits(tenantProfileCache.get(tenantId), false);
|
||||||
mergeLimits(tenantId, tenantRateLimitPrototype, perTenantLimits::get, perTenantLimits::put);
|
mergeLimits(tenantId, tenantRateLimitPrototype, perTenantLimits::get, perTenantLimits::put);
|
||||||
tenantDevices.get(tenantId).forEach(deviceId -> {
|
getTenantDevices(tenantId).forEach(deviceId -> {
|
||||||
mergeLimits(deviceId, deviceRateLimitPrototype, perDeviceLimits::get, perDeviceLimits::put);
|
mergeLimits(deviceId, deviceRateLimitPrototype, perDeviceLimits::get, perDeviceLimits::put);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -259,8 +259,13 @@ public class DefaultTransportRateLimitService implements TransportRateLimitServi
|
|||||||
private EntityTransportRateLimits getDeviceRateLimits(TenantId tenantId, DeviceId deviceId) {
|
private EntityTransportRateLimits getDeviceRateLimits(TenantId tenantId, DeviceId deviceId) {
|
||||||
return perDeviceLimits.computeIfAbsent(deviceId, k -> {
|
return perDeviceLimits.computeIfAbsent(deviceId, k -> {
|
||||||
EntityTransportRateLimits limits = createRateLimits(tenantProfileCache.get(tenantId), false);
|
EntityTransportRateLimits limits = createRateLimits(tenantProfileCache.get(tenantId), false);
|
||||||
tenantDevices.computeIfAbsent(tenantId, id -> ConcurrentHashMap.newKeySet()).add(deviceId);
|
getTenantDevices(tenantId).add(deviceId);
|
||||||
return limits;
|
return limits;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Set<DeviceId> getTenantDevices(TenantId tenantId) {
|
||||||
|
return tenantDevices.computeIfAbsent(tenantId, id -> ConcurrentHashMap.newKeySet());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user