Do not create alarm state if alarms creation is disabled
This commit is contained in:
parent
9e1d86d7e8
commit
abf8ff25b5
@ -0,0 +1,10 @@
|
|||||||
|
package org.thingsboard.server.common.data.exception;
|
||||||
|
|
||||||
|
public class ApiUsageLimitsExceededException extends RuntimeException {
|
||||||
|
public ApiUsageLimitsExceededException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ApiUsageLimitsExceededException() {
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -34,6 +34,7 @@ import org.thingsboard.server.common.data.alarm.AlarmQuery;
|
|||||||
import org.thingsboard.server.common.data.alarm.AlarmSearchStatus;
|
import org.thingsboard.server.common.data.alarm.AlarmSearchStatus;
|
||||||
import org.thingsboard.server.common.data.alarm.AlarmSeverity;
|
import org.thingsboard.server.common.data.alarm.AlarmSeverity;
|
||||||
import org.thingsboard.server.common.data.alarm.AlarmStatus;
|
import org.thingsboard.server.common.data.alarm.AlarmStatus;
|
||||||
|
import org.thingsboard.server.common.data.exception.ApiUsageLimitsExceededException;
|
||||||
import org.thingsboard.server.common.data.id.AlarmId;
|
import org.thingsboard.server.common.data.id.AlarmId;
|
||||||
import org.thingsboard.server.common.data.id.CustomerId;
|
import org.thingsboard.server.common.data.id.CustomerId;
|
||||||
import org.thingsboard.server.common.data.id.EntityId;
|
import org.thingsboard.server.common.data.id.EntityId;
|
||||||
@ -119,7 +120,7 @@ public class BaseAlarmService extends AbstractEntityService implements AlarmServ
|
|||||||
Alarm existing = alarmDao.findLatestByOriginatorAndType(alarm.getTenantId(), alarm.getOriginator(), alarm.getType()).get();
|
Alarm existing = alarmDao.findLatestByOriginatorAndType(alarm.getTenantId(), alarm.getOriginator(), alarm.getType()).get();
|
||||||
if (existing == null || existing.getStatus().isCleared()) {
|
if (existing == null || existing.getStatus().isCleared()) {
|
||||||
if (!alarmCreationEnabled) {
|
if (!alarmCreationEnabled) {
|
||||||
throw new IllegalStateException("Alarm creation is disabled");
|
throw new ApiUsageLimitsExceededException("Alarms creation is disabled");
|
||||||
}
|
}
|
||||||
return createAlarm(alarm);
|
return createAlarm(alarm);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -29,6 +29,7 @@ import org.thingsboard.server.common.data.alarm.Alarm;
|
|||||||
import org.thingsboard.server.common.data.device.profile.AlarmConditionFilterKey;
|
import org.thingsboard.server.common.data.device.profile.AlarmConditionFilterKey;
|
||||||
import org.thingsboard.server.common.data.device.profile.AlarmConditionKeyType;
|
import org.thingsboard.server.common.data.device.profile.AlarmConditionKeyType;
|
||||||
import org.thingsboard.server.common.data.device.profile.DeviceProfileAlarm;
|
import org.thingsboard.server.common.data.device.profile.DeviceProfileAlarm;
|
||||||
|
import org.thingsboard.server.common.data.exception.ApiUsageLimitsExceededException;
|
||||||
import org.thingsboard.server.common.data.id.DeviceId;
|
import org.thingsboard.server.common.data.id.DeviceId;
|
||||||
import org.thingsboard.server.common.data.id.DeviceProfileId;
|
import org.thingsboard.server.common.data.id.DeviceProfileId;
|
||||||
import org.thingsboard.server.common.data.id.EntityId;
|
import org.thingsboard.server.common.data.id.EntityId;
|
||||||
@ -261,7 +262,12 @@ class DeviceState {
|
|||||||
for (DeviceProfileAlarm alarm : deviceProfile.getAlarmSettings()) {
|
for (DeviceProfileAlarm alarm : deviceProfile.getAlarmSettings()) {
|
||||||
AlarmState alarmState = alarmStates.computeIfAbsent(alarm.getId(),
|
AlarmState alarmState = alarmStates.computeIfAbsent(alarm.getId(),
|
||||||
a -> new AlarmState(this.deviceProfile, deviceId, alarm, getOrInitPersistedAlarmState(alarm), dynamicPredicateValueCtx));
|
a -> new AlarmState(this.deviceProfile, deviceId, alarm, getOrInitPersistedAlarmState(alarm), dynamicPredicateValueCtx));
|
||||||
|
try {
|
||||||
stateChanged |= alarmState.process(ctx, msg, latestValues, update);
|
stateChanged |= alarmState.process(ctx, msg, latestValues, update);
|
||||||
|
} catch (ApiUsageLimitsExceededException e) {
|
||||||
|
alarmStates.remove(alarm.getId());
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user