Commit c98a2d18a1fd3ae2cb50454539b734b873828071
Committed by
Andrew Shvayka
1 parent
22ada62f
Refactor
Showing
3 changed files
with
15 additions
and
17 deletions
... | ... | @@ -101,12 +101,12 @@ public class DefaultAlarmSubscriptionService extends AbstractSubscriptionService |
101 | 101 | |
102 | 102 | @Override |
103 | 103 | public ListenableFuture<Boolean> clearAlarm(TenantId tenantId, AlarmId alarmId, JsonNode details, long clearTs) { |
104 | - ListenableFuture<AlarmOperationResult> result = clearAlarmAndGetOperationResult(tenantId, alarmId, details, clearTs); | |
104 | + ListenableFuture<AlarmOperationResult> result = clearAlarmForResult(tenantId, alarmId, details, clearTs); | |
105 | 105 | return Futures.transform(result, AlarmOperationResult::isSuccessful, wsCallBackExecutor); |
106 | 106 | } |
107 | 107 | |
108 | 108 | @Override |
109 | - public ListenableFuture<AlarmOperationResult> clearAlarmAndGetOperationResult(TenantId tenantId, AlarmId alarmId, JsonNode details, long clearTs) { | |
109 | + public ListenableFuture<AlarmOperationResult> clearAlarmForResult(TenantId tenantId, AlarmId alarmId, JsonNode details, long clearTs) { | |
110 | 110 | ListenableFuture<AlarmOperationResult> result = alarmService.clearAlarm(tenantId, alarmId, details, clearTs); |
111 | 111 | Futures.addCallback(result, new AlarmUpdateCallback(), wsCallBackExecutor); |
112 | 112 | return result; | ... | ... |
... | ... | @@ -47,7 +47,7 @@ public interface RuleEngineAlarmService { |
47 | 47 | |
48 | 48 | ListenableFuture<Boolean> clearAlarm(TenantId tenantId, AlarmId alarmId, JsonNode details, long clearTs); |
49 | 49 | |
50 | - ListenableFuture<AlarmOperationResult> clearAlarmAndGetOperationResult(TenantId tenantId, AlarmId alarmId, JsonNode details, long clearTs); | |
50 | + ListenableFuture<AlarmOperationResult> clearAlarmForResult(TenantId tenantId, AlarmId alarmId, JsonNode details, long clearTs); | |
51 | 51 | |
52 | 52 | ListenableFuture<Alarm> findAlarmByIdAsync(TenantId tenantId, AlarmId alarmId); |
53 | 53 | ... | ... |
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/profile/AlarmState.java
... | ... | @@ -18,6 +18,7 @@ package org.thingsboard.rule.engine.profile; |
18 | 18 | import com.fasterxml.jackson.databind.JsonNode; |
19 | 19 | import com.fasterxml.jackson.databind.node.ObjectNode; |
20 | 20 | import com.google.common.util.concurrent.ListenableFuture; |
21 | +import com.google.common.util.concurrent.MoreExecutors; | |
21 | 22 | import lombok.Data; |
22 | 23 | import lombok.extern.slf4j.Slf4j; |
23 | 24 | import org.apache.commons.lang3.StringUtils; |
... | ... | @@ -26,17 +27,12 @@ import org.thingsboard.rule.engine.api.TbContext; |
26 | 27 | import org.thingsboard.rule.engine.profile.state.PersistedAlarmRuleState; |
27 | 28 | import org.thingsboard.rule.engine.profile.state.PersistedAlarmState; |
28 | 29 | import org.thingsboard.server.common.data.DataConstants; |
29 | -import org.thingsboard.server.common.data.Tenant; | |
30 | 30 | import org.thingsboard.server.common.data.alarm.Alarm; |
31 | 31 | import org.thingsboard.server.common.data.alarm.AlarmSeverity; |
32 | 32 | import org.thingsboard.server.common.data.alarm.AlarmStatus; |
33 | 33 | import org.thingsboard.server.common.data.device.profile.AlarmConditionKeyType; |
34 | 34 | import org.thingsboard.server.common.data.device.profile.DeviceProfileAlarm; |
35 | -import org.thingsboard.server.common.data.id.CustomerId; | |
36 | 35 | import org.thingsboard.server.common.data.id.EntityId; |
37 | -import org.thingsboard.server.common.data.id.TenantId; | |
38 | -import org.thingsboard.server.common.data.query.EntityKeyType; | |
39 | -import org.thingsboard.server.common.data.query.KeyFilter; | |
40 | 36 | import org.thingsboard.server.common.msg.TbMsg; |
41 | 37 | import org.thingsboard.server.common.msg.TbMsgMetaData; |
42 | 38 | import org.thingsboard.server.common.msg.queue.ServiceQueue; |
... | ... | @@ -120,15 +116,17 @@ class AlarmState { |
120 | 116 | for (AlarmRuleState state : createRulesSortedBySeverityDesc) { |
121 | 117 | stateUpdate = clearAlarmState(stateUpdate, state); |
122 | 118 | } |
123 | - Alarm clearedAlarm; | |
124 | - try { | |
125 | - clearedAlarm = ctx.getAlarmService().clearAlarmAndGetOperationResult( | |
126 | - ctx.getTenantId(), currentAlarm.getId(), createDetails(clearState), System.currentTimeMillis() | |
127 | - ).get().getAlarm(); | |
128 | - } catch (InterruptedException | ExecutionException e) { | |
129 | - throw new RuntimeException(e); | |
130 | - } | |
131 | - pushMsg(ctx, new TbAlarmResult(false, false, true, clearedAlarm)); | |
119 | + ListenableFuture<AlarmOperationResult> alarmClearOperationResult = ctx.getAlarmService().clearAlarmForResult( | |
120 | + ctx.getTenantId(), currentAlarm.getId(), createDetails(clearState), System.currentTimeMillis() | |
121 | + ); | |
122 | + alarmClearOperationResult.addListener(() -> { | |
123 | + try { | |
124 | + Alarm clearedAlarm = alarmClearOperationResult.get().getAlarm(); | |
125 | + pushMsg(ctx, new TbAlarmResult(false, false, true, clearedAlarm)); | |
126 | + } catch (Exception e) { | |
127 | + throw new RuntimeException(e); | |
128 | + } | |
129 | + }, MoreExecutors.directExecutor()); | |
132 | 130 | currentAlarm = null; |
133 | 131 | } else if (AlarmEvalResult.FALSE.equals(evalResult)) { |
134 | 132 | stateUpdate = clearAlarmState(stateUpdate, clearState); | ... | ... |