Browse Source

Fix occasional alarm rule test failure due to race condition

pull/14688/head
Viacheslav Klimov 9 months ago
parent
commit
86626834b0
  1. 3
      application/src/main/java/org/thingsboard/server/service/cf/ctx/state/alarm/AlarmCalculatedFieldState.java
  2. 8
      application/src/main/java/org/thingsboard/server/service/cf/ctx/state/alarm/AlarmRuleState.java

3
application/src/main/java/org/thingsboard/server/service/cf/ctx/state/alarm/AlarmCalculatedFieldState.java

@ -150,7 +150,8 @@ public class AlarmCalculatedFieldState extends BaseCalculatedFieldState {
clearRuleState = null;
}
}
log.debug("Initialized create rule states {} and clear rule state {} for {}", createRuleStates, clearRuleState, configuration);
log.debug("Initialized create rule states {} and clear rule state {} for {}. Restored: {}, reeval needed: {}",
createRuleStates, clearRuleState, configuration, restored, reevalNeeded);
if (reevalNeeded.get()) {
initCurrentAlarm(ctx);

8
application/src/main/java/org/thingsboard/server/service/cf/ctx/state/alarm/AlarmRuleState.java

@ -262,6 +262,14 @@ public class AlarmRuleState {
}
}
public void setDurationCheckFuture(ScheduledFuture<?> durationCheckFuture) {
if (this.durationCheckFuture != null) {
log.warn("Setting new duration check future while previous is not null for state {}", this, new RuntimeException("stacktrace"));
this.durationCheckFuture.cancel(true);
}
this.durationCheckFuture = durationCheckFuture;
}
public boolean isEmpty() {
return eventCount == 0L && firstEventTs == 0L && lastCheckTs == 0L && durationCheckFuture == null;
}

Loading…
Cancel
Save