You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@skywalking.apache.org by wu...@apache.org on 2018/09/03 08:42:25 UTC

[incubator-skywalking] branch 6.0 updated: Move count and silenceCount into window.

This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch 6.0
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git


The following commit(s) were added to refs/heads/6.0 by this push:
     new 1f2a6f2  Move count and silenceCount into window.
1f2a6f2 is described below

commit 1f2a6f227701397fa3a7387b8ac4d617de24fe17
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Mon Sep 3 16:42:18 2018 +0800

    Move count and silenceCount into window.
---
 .../server/core/alarm/provider/RunningRule.java    | 55 +++++++++++-----------
 1 file changed, 27 insertions(+), 28 deletions(-)

diff --git a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRule.java b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRule.java
index e3be072..872d5a2 100644
--- a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRule.java
+++ b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRule.java
@@ -54,8 +54,6 @@ public class RunningRule {
     private final OP op;
     private final int countThreshold;
     private final int silencePeriod;
-    private int counter;
-    private int silenceCountdown;
     private Map<MetaInAlarm, Window> windows;
     private volatile IndicatorValueType valueType;
     private Scope targetScope;
@@ -75,8 +73,6 @@ public class RunningRule {
 
         this.countThreshold = alarmRule.getCount();
         this.silencePeriod = alarmRule.getSilencePeriod();
-        // -1 means silence countdown is not running.
-        silenceCountdown = -1;
 
         this.includeNames = alarmRule.getIncludeNames();
     }
@@ -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;
-            } else {
-                silenceCountdown--;
-            }
-        } else {
-            silenceCountdown--;
-            if (counter > 0) {
-                counter--;
-            }
-        }
-        return new ArrayList<>(0);
+        return alarmMessageList;
     }
 
     /**
@@ -179,12 +155,17 @@ public class RunningRule {
     public class Window {
         private LocalDateTime endTime;
         private int period;
+        private int counter;
+        private int silenceCountdown;
 
         private LinkedList<Indicator> values;
         private ReentrantLock lock = new ReentrantLock();
 
         public Window(int period) {
             this.period = period;
+            // -1 means silence countdown is not running.
+            silenceCountdown = -1;
+            counter = 0;
             init();
         }
 
@@ -247,11 +228,29 @@ public class RunningRule {
 
         public AlarmMessage checkAlarm() {
             if (isMatch()) {
-                AlarmMessage message = new AlarmMessage();
-                return message;
+                /**
+                 * 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();
+                    return message;
+                } else {
+                    silenceCountdown--;
+                }
             } else {
-                return AlarmMessage.NONE;
+                silenceCountdown--;
+                if (counter > 0) {
+                    counter--;
+                }
             }
+            return AlarmMessage.NONE;
         }
 
         private boolean isMatch() {