提交 1f2a6f22 编写于 作者: wu-sheng's avatar wu-sheng

Move count and silenceCount into window.

上级 de417306
...@@ -54,8 +54,6 @@ public class RunningRule { ...@@ -54,8 +54,6 @@ public class RunningRule {
private final OP op; private final OP op;
private final int countThreshold; private final int countThreshold;
private final int silencePeriod; private final int silencePeriod;
private int counter;
private int silenceCountdown;
private Map<MetaInAlarm, Window> windows; private Map<MetaInAlarm, Window> windows;
private volatile IndicatorValueType valueType; private volatile IndicatorValueType valueType;
private Scope targetScope; private Scope targetScope;
...@@ -75,8 +73,6 @@ public class RunningRule { ...@@ -75,8 +73,6 @@ public class RunningRule {
this.countThreshold = alarmRule.getCount(); this.countThreshold = alarmRule.getCount();
this.silencePeriod = alarmRule.getSilencePeriod(); this.silencePeriod = alarmRule.getSilencePeriod();
// -1 means silence countdown is not running.
silenceCountdown = -1;
this.includeNames = alarmRule.getIncludeNames(); this.includeNames = alarmRule.getIncludeNames();
} }
...@@ -147,27 +143,7 @@ public class RunningRule { ...@@ -147,27 +143,7 @@ public class RunningRule {
} }
}); });
/**
* When
* 1. Metric value threshold triggers alarm by rule
* 2. Counter reaches the count threshold;
* 3. Isn't in silence stage, judged by SilenceCountdown(!=0).
*/
if (alarmMessageList.size() > 0) {
counter++;
if (counter >= countThreshold && silenceCountdown < 1) {
silenceCountdown = silencePeriod;
return alarmMessageList; return alarmMessageList;
} else {
silenceCountdown--;
}
} else {
silenceCountdown--;
if (counter > 0) {
counter--;
}
}
return new ArrayList<>(0);
} }
/** /**
...@@ -179,12 +155,17 @@ public class RunningRule { ...@@ -179,12 +155,17 @@ public class RunningRule {
public class Window { public class Window {
private LocalDateTime endTime; private LocalDateTime endTime;
private int period; private int period;
private int counter;
private int silenceCountdown;
private LinkedList<Indicator> values; private LinkedList<Indicator> values;
private ReentrantLock lock = new ReentrantLock(); private ReentrantLock lock = new ReentrantLock();
public Window(int period) { public Window(int period) {
this.period = period; this.period = period;
// -1 means silence countdown is not running.
silenceCountdown = -1;
counter = 0;
init(); init();
} }
...@@ -247,11 +228,29 @@ public class RunningRule { ...@@ -247,11 +228,29 @@ public class RunningRule {
public AlarmMessage checkAlarm() { public AlarmMessage checkAlarm() {
if (isMatch()) { if (isMatch()) {
/**
* When
* 1. Metric value threshold triggers alarm by rule
* 2. Counter reaches the count threshold;
* 3. Isn't in silence stage, judged by SilenceCountdown(!=0).
*/
counter++;
if (counter >= countThreshold && silenceCountdown < 1) {
silenceCountdown = silencePeriod;
//TODO
AlarmMessage message = new AlarmMessage(); AlarmMessage message = new AlarmMessage();
return message; return message;
} else { } else {
return AlarmMessage.NONE; silenceCountdown--;
} }
} else {
silenceCountdown--;
if (counter > 0) {
counter--;
}
}
return AlarmMessage.NONE;
} }
private boolean isMatch() { private boolean isMatch() {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册