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

xhsun pushed a commit to branch revert_early_termination
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git

commit b888e35495db677ce8170ccb24a9ac3ce22f6fde
Author: Xiaohui Sun <[email protected]>
AuthorDate: Tue Apr 2 10:18:05 2019 -0700

    [TE] revert early termination in detection loop
---
 .../detection/wrapper/AnomalyDetectorWrapper.java  | 25 +++++-----------------
 1 file changed, 5 insertions(+), 20 deletions(-)

diff --git 
a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/detection/wrapper/AnomalyDetectorWrapper.java
 
b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/detection/wrapper/AnomalyDetectorWrapper.java
index b888379..909c47a 100644
--- 
a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/detection/wrapper/AnomalyDetectorWrapper.java
+++ 
b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/detection/wrapper/AnomalyDetectorWrapper.java
@@ -160,9 +160,12 @@ public class AnomalyDetectorWrapper extends 
DetectionPipeline {
     List<MergedAnomalyResultDTO> anomalies = new ArrayList<>();
     int totalWindows = monitoringWindows.size();
     int successWindows = 0;
-    Exception lastException = null;
     for (int i = 0; i < totalWindows; i++) {
-      earlyTerminate(i, successWindows, totalWindows, lastException);
+      if (i == EARLY_TERMINATE_WINDOW && successWindows == 0) {
+        LOG.error("Successive first {}/{} detection windows failed for config 
{} metricUrn {}. Discard remaining windows",
+            EARLY_TERMINATE_WINDOW, totalWindows, config.getId(), metricUrn);
+        break;
+      }
 
       // run detection
       Interval window = monitoringWindows.get(i);
@@ -177,22 +180,14 @@ public class AnomalyDetectorWrapper extends 
DetectionPipeline {
         successWindows++;
       }
       catch (DetectorDataInsufficientException e) {
-        lastException = e;
         LOG.warn("[DetectionConfigID{}] Insufficient data ro run detection for 
window {} to {}.", this.config.getId(), window.getStart(), window.getEnd());
       }
       catch (Exception e) {
-        lastException = e;
         LOG.warn("[DetectionConfigID{}] detecting anomalies for window {} to 
{} failed.", this.config.getId(), window.getStart(), window.getEnd(), e);
       }
       anomalies.addAll(anomaliesForOneWindow);
     }
 
-    // throw exception if all windows failed
-    if (successWindows == 0 && totalWindows > 0) {
-      LOG.error("All {} detection windows failed for config {} metricUrn {}.", 
totalWindows, config.getId(), metricUrn);
-      throw new DetectorException("All " + totalWindows + " detection windows 
failed.", lastException);
-    }
-
     for (MergedAnomalyResultDTO anomaly : anomalies) {
       anomaly.setDetectionConfigId(this.config.getId());
       anomaly.setMetricUrn(this.metricUrn);
@@ -206,16 +201,6 @@ public class AnomalyDetectorWrapper extends 
DetectionPipeline {
         Collectors.toList()), lastTimeStamp);
   }
 
-  private void earlyTerminate(int currentWindows, int successWindows, int 
totalWindows, Exception lastException)
-      throws DetectorException {
-    // early termination if first of the EARLY_TERMINATE_WINDOW all failed
-    if (currentWindows == EARLY_TERMINATE_WINDOW && successWindows == 0) {
-      LOG.error("Successive first {} detection windows failed for config {} 
metricUrn {}.", EARLY_TERMINATE_WINDOW, config.getId(), metricUrn);
-      throw new DetectorException(String.format("Successive first %d/%d 
detection windows failed.", EARLY_TERMINATE_WINDOW, totalWindows),
-          lastException);
-    }
-  }
-
   // guess-timate next time stamp
   // there are two cases. If the data is complete, next detection starts from 
the end time of this detection
   // If data is incomplete, next detection starts from the latest available 
data's time stamp plus the one time granularity.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to